Azure service fabric 服务结构-无法进行配置升级以添加或删除节点

Azure service fabric 服务结构-无法进行配置升级以添加或删除节点,azure-service-fabric,service-fabric-on-premises,Azure Service Fabric,Service Fabric On Premises,我有一个内部服务结构,由18个节点(9个是种子节点)组成,通过gMSA windows安全保护。群集代码版本6.4.622.9590 不幸的是,我必须重建其中的6个节点(3个种子节点)。它们都位于一个数据中心(集群跨越3个DCs)。因此,我希望删除这6个节点,重建它们,然后重新添加它们 根据,通过配置升级来执行节点的添加/删除。注意:我最近已经使用这个过程添加了12个节点,因此很好地理解了SF配置升级的概念 不幸的是,在删除节点之前,我无法在此群集上执行任何配置升级-这是由于Start serv

我有一个内部服务结构,由18个节点(9个是种子节点)组成,通过gMSA windows安全保护。群集代码版本6.4.622.9590

不幸的是,我必须重建其中的6个节点(3个种子节点)。它们都位于一个数据中心(集群跨越3个DCs)。因此,我希望删除这6个节点,重建它们,然后重新添加它们

根据,通过配置升级来执行节点的添加/删除。注意:我最近已经使用这个过程添加了12个节点,因此很好地理解了SF配置升级的概念

不幸的是,在删除节点之前,我无法在此群集上执行任何配置升级-这是由于
Start servicefactClusterConfigurationUpgrade
powershell命令报告的ValidationException:

  • 如果我没有将这6个节点添加到“NodesToBeRemoved”部分,我会得到一个验证错误,即并非所有删除的节点都在该字段中
  • 如果添加6个节点,则会出现以下验证错误:
所以,我们被卡住了!我还删除了节点状态,因此所有6个节点都处于“无效状态”。Get-ServiceFabricClusterConfiguration不会返回这6个节点,但它们仍然显示在SF Explorer中,并在集群清单XML文件中列出

就可靠性水平而言——我很确定人们再也无法改变SF中的这种情况;i、 e.旧版本的SF允许您在配置文件中配置bronze/silver/gold,但在最新版本(+6.0??)-这是一个计算字段,由SF内部管理。在任何情况下-由于种子节点将从9减少到6,我怀疑内部计算的可靠性级别将下降(可能从金到银)

我还遇到了一个例子,有人用它删除集群中的节点。。。但在我的场景中,节点仍然列在清单文件中。。。尽管如此,黑客和生产这两个词永远不应该相遇


那么,如何让我们的生产集群摆脱这种局面呢?重建群集不是一个选项(这是群集…高可用性的全部原因!)。

我发现上述错误主要是由于在执行service fabric配置升级时,缺少明确记录的过程以及错误/误导性错误消息

我自己做了很多测试,以确保能够自信地在集群中添加/删除多个节点。我还删除了足够多的节点,以便将种子节点从9删除到6

因此,要解决上述问题,我必须做以下操作来删除节点:

  • 使用SF资源管理器删除节点状态-此节点状态已从错误更改为无效
  • 通过Get-ServiceFabricClusterConfiguration获取最新的json配置
  • 从节点部分删除节点
  • 完全删除NodeStoreMoved json部分(即,如果要删除的节点列表为空,则会出现不一致的错误-因此只需删除包含json的块即可
  • 进行配置更新
  • 注意:最初我只是尝试执行上面的2-5项操作,但没有成功,节点仍处于错误状态

    也就是说,根据我的经验,在删除节点时还请注意以下几点(此信息在中不清楚):

    • 您可以一次删除多个种子节点(我想这样做是为了尝试并复制上述场景)
    • 您也可以一次添加多个节点-请注意,通过SF config升级状态工具,您可能看不到任何活动/指示 正在发生任何事情…请准备等待至少15分钟 (取决于要添加的节点数…毕竟,SF正在复制 将安装文件添加到节点)
    • 有时,当删除一个或多个节点时,该节点将无法成功删除,但仍处于错误状态 在这种情况下,请使用SF Explorer(或powershell)删除节点状态。状态 将更改为无效。此时,请执行另一个配置升级 确保:
      • 删除的节点不在“节点”部分中
      • 删除的节点不在NodeStoreMoved列表中
      • 如上所述,如果NodesToBeRemoved的值为空(或应该为空),请删除整个JSON块,否则您将收到关于NodesToBeRemoved参数包含不一致信息的误导性/模糊警告
    后一部分确实是上次让我感到困惑的部分。还需要记住的是,一旦成功删除节点,
    Get-ServiceFabricClusterConfiguration
    仍将在NodesToBeRemoved参数中返回已删除的节点。这可能会让您在后续尝试执行某项操作时感到困惑/困惑配置升级。因此,我建议您在完全删除此部分的情况下进行另一次最终配置升级

    最后,请注意:如果重新添加以前已删除的节点,它可能会以停用状态返回。只需激活此节点,一切都会正常

    Start-ServiceFabricClusterConfigurationUpgrade : 
    System.Runtime.InteropServices.COMException (-2147017627)
    ValidationException: Model validation error. Removing a non-seed node and changing reliability level in the same
    upgrade is not supported. Initiate an upgrade to remove node first and then change the reliability level.
    At line:1 char:1
    + Start-ServiceFabricClusterConfigurationUpgrade -ClusterConfigPath "AL ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (Microsoft.Servi...usterConnection:ClusterConnection) [Start-ServiceFa
       ...gurationUpgrade], FabricException
        + FullyQualifiedErrorId : StartClusterConfigurationUpgradeErrorId,Microsoft.ServiceFabric.Powershell.StartClusterC
       onfigurationUpgrade