我有一个自定义自动缩放设置用于缩放群集中的节点。放大效果很好。我有缩小问题的问题。问题是当我想缩小时,我确定了我想删除的节点 - 之后我调用了DeactivateNodeAsync()方法,目的是删除节点。我等到停用完毕,我检查节点的状态以确认它已被禁用。一旦它被禁用,我调用方法RemoveNodeStateAsync(),以便集群可以注册该节点被删除。
但我的问题是 - 当我调用RemoveNodeStateAsync()时,我收到以下异常 - 表示该节点已启动。这是完全例外。
比例容器:比例节点失败。例外: System.AggregateException:发生一个或多个错误。 ---> System.AggregateException:发生一个或多个错误。 ---> System.Fabric.FabricException:节点已启动。 ---> System.Runtime.InteropServices.COMException:来自HRESULT的异常: 0x80071BC4 at System.Fabric.Interop.NativeClient.IFabricClusterManagementClient9.EndNodeStateRemoved(IFabricAsyncOperationContext 上下文) System.Fabric.Interop.Utility<> c__DisplayClass20_0.b__0(IFabricAsyncOperationContext 上下文) System.Fabric.Interop.AsyncCallOutAdapter2`1.Finish(IFabricAsyncOperationContext context,Boolean expectedCompletedSynchronously)---内部结束 异常堆栈跟踪--- ---内部异常堆栈跟踪结束 ---在System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)at at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, 取消语音取消语言)
我错过了什么?为什么即使在明确检查节点被禁用的状态之后该节点也已启动?如何向群集注册删除某个节点。感谢任何帮助。
答案 0 :(得分:0)
我在这篇蔚蓝文章中找到了答案:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-programmatic-scaling
在从ScaleSet中删除节点之前,需要完成RemoveNodeState。