部署失败时,服务结构无法回滚应用程序

时间:2019-05-11 12:15:34

标签: azure-service-fabric

我有一个用于服务结构的3节点群集,其中部署在第三个节点上停留了10个小时。通过查看SF Explorer,我们发现传递了错误的SQL凭据,因此卡住了部署。

1)SF为什么在“警告”而不是“错误”时识别它

2)为什么它卡住了而不回滚?

3)我需要做一些额外的设置,以便它更快地自动回滚吗?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

通常,它会在部署失败时回滚,但这取决于您为升级传递的参数,例如FailureAction,UpgradeMode和Timeouts。

UpgradeMode 值可以是:

  • 受监视的:指示已监视升级模式。 cmdlet完成升级域的升级后,如果升级域和群集的运行状况符合您定义的运行状况策略,则Service Fabric会升级下一个升级域。如果升级域或群集无法满足运行状况策略,则升级将失败,并且Service Fabric将根据FailureAction中指定的策略回退升级域的升级,或还原为手动模式。 这是在生产环境中升级应用程序的推荐模式

  • 不受监视的自动:指示升级模式是不受监视的自动。 Service Fabric升级升级域后,Service Fabric会升级下一个升级域,而不管应用程序运行状况如何。不建议将该模式用于生产环境,仅在应用程序开发期间有用。

  • 不受监视的手册:指示升级模式为不受监视的手册。 Service Fabric升级升级域后,它将等待您使用Resume-ServiceFabricApplicationUpgrade cmdlet升级下一个升级域。

FailureAction 是当受监视的升级遇到监视策略或健康策略违规时执行的补偿操作。值可以是:

  • 回滚指定升级将自动回滚到升级前的版本。
  • 手动表示升级将切换到不受监控的手动升级模式。
  • 无效表示失败操作无效并且不执行任何操作

鉴于,如果对于 UpgradeMode FailureAction ,没有将升级设置为 Monitored ,并且将 FailureAction 设置为 Rollback 升级将等待操作员(用户)的手动操作。

如果升级已经设置为这些值,则问题可能是:

  • 运行状况检查和重试时间过长,以防止升级迅速失败,例如,当HealthCheckDuration时间过长或两次检查之间的延迟过长时。
  • 旧版本也失败了

以下文档提供了所有详细信息:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-upgrade-parameters