即使节点处于禁用状态,Fabric结构中节点上的RemoveNodeStateAsync()也会失败。

时间:2017-08-18 15:55:45

标签: azure-service-fabric

我有一个自定义自动缩放设置用于缩放群集中的节点。放大效果很好。我有缩小问题的问题。问题是当我想缩小时,我确定了我想删除的节点 - 之后我调用了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,   取消语音取消语言)

我错过了什么?为什么即使在明确检查节点被禁用的状态之后该节点也已启动?如何向群集注册删除某个节点。感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我在这篇蔚蓝文章中找到了答案:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-programmatic-scaling

在从ScaleSet中删除节点之前,需要完成RemoveNodeState。