当我登录Service Fabric Explorer并尝试禁用操作系统升级的节点时,我会看到两个选项:
有人可以告诉我区别吗?
答案 0 :(得分:32)
Service Fabric具有允许您管理节点的API(在C#中,这些是DeactivateNodeAsync和ActivateNodeAsync,在PS中它们是“启用/禁用 - ServiceFabricNode”)。首先,大多数是人们管理自己的群集时的延迟,并且与运行自己的群集相比,Azure托管服务结构群集环境中常用的更少。无论哪种方式,当停用节点时,有几个不同的选项,我们称之为 Intents 。
您可以将这些视为代表在不同情况下使用的节点上日益严重的操作,并使用它们与Service Fabric进行通信,以便对节点执行的操作。
四种不同的选择是:
现在让我们谈谈你何时使用它们。 暂停是最常见的,如果您想调试给定的服务,流程,机器等,并希望在您查看时不要更改(尽可能可能)。如果你去诊断服务的一些行为只是为了确定我们刚刚把它移到你身上,那会有点尴尬。当出于某种原因要将所有工作负载移出节点时,会使用重新启动(这是我们看到的最常见的)。例如,Service Fabric在升级节点上的Service Fabric位时使用它 - 首先我们通过intent restart重新启动节点,然后在关闭和升级之前等待它完成(所以我们知道你的服务没有运行)我们在该节点上的代码。 RemoveData 是您知道节点被取消配置并且不会返回的地方(比如硬盘驱动器将被换出,或硬件被完全删除),或者您知道如果节点回来它特别是空的(说你重新想象机器)。 Restart和RemoveData之间的区别在于,对于重新启动,我们知道节点将返回,因此我们保持对该节点上的副本的了解。对于持久性副本,这意味着我们不必立即再次构建副本。但对于RemoveData,我们知道副本不会返回,因此需要在确认节点可以安全重启之前立即构建任何备用。 RemoveNode 构建在RemoveData之上,并且是一个额外的指示器,表明您没有具体计划将此节点恢复。由于保持SeedNode的重要性,如果要删除的节点当前是种子,SF将无法通过呼叫。如果您确实要删除该特定节点,则可以重新配置群集以使用其他节点作为种子。您希望使用RemoveData与RemoveNode的一个示例是,如果您要缩小群集,那么您将明确调用RemoveNode,因为您打算让节点不再返回我希望确保你能够把正确的东西带走,这样底层的集群就不会崩溃。
一旦完成操作(无论是什么)并且您想要重新启用该节点,相应的调用就是激活/启用。重新启动节点不会导致它自动重新启用。因此,如果您已完成软件修补程序(或任何导致您使用intent Restart的任何内容),并且您希望将服务再次放置在节点上,则可以使用相应的节点名称调用Enable / Activate。
作为停用/禁用呼叫的示例,请查看PS API文档here