我有一个由 18 个节点(9 个是种子节点)组成的本地 Service Fabric - 通过 gMSA Windows 安全性进行保护。集群代码版本 6.4.622.9590
不幸的是,我必须重建其中的 6 个节点(3 个种子节点)。他们都住在一个数据中心(集群跨越 3 个数据中心)。因此,我希望删除这 6 个节点,重建它们,然后重新添加它们。
根据MSDOC,添加/删除节点是通过配置升级执行的。注意:我最近已经使用这个过程来添加 12 个节点,所以很好地理解 SF 配置升级的概念。
不幸的是,在删除节点之前,我无法在此集群上进行任何配置升级 - 这是由于Start-ServiceFabricClusterConfigurationUpgrade
powershell 命令报告的 ValidationExceptions:
- 如果我不将 6 个节点添加到“NodesToBeRemoved”部分,我会收到验证错误,即并非所有已删除的节点都在此字段中
- 如果我确实添加了 6 个节点,则会收到以下验证错误:
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
所以,我们被困住了!我也已经删除了节点状态,因此所有 6 个节点都处于“无效状态”。Get-ServiceFabricClusterConfiguration
不返回这 6 个节点,但它们仍显示在 SF Explorer 中并列在集群清单 XML 文件中。
就可靠性水平而言——我很确定在 SF 中无法再改变这一点;即旧版本的 SF 允许您在配置文件中配置青铜/银/金,但在最近的版本中(+6.0??) - 这是一个计算字段,由 SF 内部管理。无论如何 - 因为种子节点将从 9 个减少到 6 个,我怀疑内部计算的可靠性水平会下降(大概从黄金到白银)。
我还遇到过有人用来删除集群中的节点的黑客行为......但在我的场景中,节点仍然列在清单文件中......尽管如此,黑客和生产这两个词永远不应该相遇!
那么,如何让我们的生产集群摆脱这种情况呢?重建集群不是一种选择(这就是集群的全部原因......高可用性!)。