【问题标题】:Partition Reconfiguring in Service Fabric ClusterService Fabric 群集中的分区重新配置
【发布时间】:2016-12-16 22:53:20
【问题描述】:

我有一个有状态的服务结构应用程序。在应用程序参数文件中,我将 PartitionCount 设置为 20

当我将服务部署到集群时,我得到了 20 个分区,其中一些分区状态显示为“重新配置”,最后它们将进入警告状态,显示 Unhealthy evnet

不健康事件:SourceId='System.FM',Property='State', HealthState='警告',考虑WarningAsError=false。划分 重新配置花费的时间比预期的要长。

但该分区内的副本运行状况显示为“正常”

当分区处于“重新配置”状态时实际发生了什么? 为什么会出现这个错误?

【问题讨论】:

  • 有来自 ETW 的消息吗?要尝试诊断和调试,请在只有 1 个分区的本地开发集群上运行,并确保其正常工作。然后在本地尝试 2 个分区并确保它工作正常。如果是这种情况,可能是 20 个分区对于集群来说太多了。

标签: azure azure-service-fabric


【解决方案1】:

有状态服务的重新配置是在 Service Fabric 在群集周围改组副本时进行的。这发生在系统需要对副本放置进行更改的任何时候,这可以是故障转移以确保在机器停机或升级期间副本的可用性,或者用于资源平衡以确保在集群中平衡工作负载 - 后者立即发生当您部署新服务时,系统必须找到放置副本的位置,然后平衡所有内容。

如果重新配置花费的时间比预期的要长,则副本很可能没有响应更改角色或关闭操作(例如,您的服务代码没有响应 RunAsync 中的取消令牌),或者副本失败开始(例如,您的通信侦听器代码在 OpenAsync 上引发异常)。

【讨论】:

  • 我的应用程序在本地集群中运行良好,没有任何警告。这是因为本地集群没有重新配置过程还是与公共集群有关?
  • 本地集群与您在 Azure 或其他任何地方部署的集群没有什么不同,只是所有节点都在一台计算机上运行。这是您的服务的问题,可能与环境有关。例如,确保要部署到的集群中的节点上有足够的磁盘空间。每个节点上至少需要 8 GB 的可用空间用于有状态服务。例如,Azure 中的 DS 系列 VM 的本地磁盘非常小,这对于有状态服务来说可能是个问题。
  • 经过进一步调查,我发现 OpenAsync 有时会失败,因为没有专门为 Owin 配置 Simple Injector,这些链接帮助了我:simpleinjector.readthedocs.io/en/latest/webapiintegration.htmlsimpleinjector.readthedocs.io/en/latest/owinintegration.html
猜你喜欢
  • 2015-08-08
  • 2018-10-27
  • 2017-07-31
  • 2023-03-02
  • 2016-03-25
  • 2022-10-18
  • 2017-08-09
  • 2019-03-04
  • 2016-11-25
相关资源
最近更新 更多