有没有办法在应用程序升级期间从单个实例访问所有实例的详细信息?

时间:2017-02-22 04:04:00

标签: c# azure azure-service-fabric

我正在使用POC来清除每个服务实例(当前部署在3个实例上的服务)报告的实例级自定义运行状况事件。 我清除了启动应用程序升级的报告

现在的问题是万一有"错误"任何或所有实例报告的事件,在进行应用程序升级时,第一个实例会更新(报告也会被清除),但由于其他两个仍然处于错误状态,因此SF会回滚升级。

我的一个选择是进行不受监视的力量升级。但只是想知道是否有任何方法可以访问其他两个实例'数据,如 NodeContext ?如果有,我想在升级第一个实例时尝试从其他实例清除自定义错误运行状况事件。

谢谢!

1 个答案:

答案 0 :(得分:1)

听起来像你在滥用健康模型。错误运行状况应该停止滚动升级。如果您只是在开始升级之前清除错误运行状况,那么首先报告错误运行状况真的没有意义。

  

现在的问题是万一有"错误"任何或所有实例报告的事件,在进行应用程序升级时,第一个实例会更新(报告也会被清除),但由于其他两个仍然处于错误状态,因此SF会回滚升级。

是的,这是Service Fabric的一个重要功能。系统正在完成它应该做的事情:它会因为您报告错误而回滚升级。

从Service Fabric的角度来看,错误状态非常严重,系统无法触及您的服务,因为这可能会导致进一步的灾难性问题,例如数据丢失。这意味着升级(应用程序和系统)将停止并回滚,如果您已按此方式配置它。

使用健康系统的一个例子是使用一些代码来评估服务的功能并根据该代码报告健康状况。这样,当有人更改服务代码并推出升级时,将评估服务的功能,如果某些内容无法正常工作,则会报告错误运行状况,该状态会停止升级并将其回滚给您。该评估代码甚至可以在一个单独的服务中,称为“看门狗”"这可以像ping一个服务的端点一样简单,并确保响应正常。

我强烈建议仔细阅读健康模型文档,以了解它是如何工作的,然后尝试一下,看看哪些适用于您的特定问题域。 https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-health-introduction