Service Fabric停用(暂停)vs Deactivate(重启)?

时间:2015-12-16 09:51:18

标签: azure azure-service-fabric

当我登录Service Fabric Explorer并尝试禁用操作系统升级的节点时,我会看到两个选项:

  • 停用(暂停)
  • 停用(重启)

有人可以告诉我区别吗?

1 个答案:

答案 0 :(得分:32)

Service Fabric具有允许您管理节点的API(在C#中,这些是DeactivateNodeAsync和ActivateNodeAsync,在PS中它们是“启用/禁用 - ServiceFabricNode”)。首先,大多数是人们管理自己的群集时的延迟,并且与运行自己的群集相比,Azure托管服务结构群集环境中常用的更少。无论哪种方式,当停用节点时,有几个不同的选项,我们称之为 Intents

您可以将这些视为代表在不同情况下使用的节点上日益严重的操作,并使用它们与Service Fabric进行通信,以便对节点执行的操作。

四种不同的选择是:

  1. 暂停 - 有效"暂停"节点:它上面的服务将继续运行,但是除非它们自己失败,否则任何服务都不应移入或移出节点,或者除非需要将服务移动到节点以防止中断或不一致。
  2. 重新启动 - 这会将所有内存中的有状态和无状态服务移出节点,然后关闭(关闭)任何持久性服务(如果安全的话,这样做是否安全)我们将建造备件。
  3. RemoveData - 这将关闭节点上的所有服务,如果安全需要,请再次构建备件。用户有责任确保如果节点确实返回,则它将返回空白状态。
  4. RemoveNode - 这将关闭节点上的所有服务,如果安全需要,请再次首先构建备件。在这种情况下,虽然您特别告诉SF该节点没有回来。 SF执行额外检查以确保要删除的节点不是SeedNode(当前负责维护底层群集的节点之一)。除此之外,这与RemoveData相同。
  5. 现在让我们谈谈你何时使用它们。 暂停是最常见的,如果您想调试给定的服务,流程,机器等,并希望在您查看时不要更改(尽可能可能)。如果你去诊断服务的一些行为只是为了确定我们刚刚把它移到你身上,那会有点尴尬。当出于某种原因要将所有工作负载移出节点时,会使用重新启动(这是我们看到的最常见的)。例如,Service Fabric在升级节点上的Service Fabric位时使用它 - 首先我们通过intent restart重新启动节点,然后在关闭和升级之前等待它完成(所以我们知道你的服务没有运行)我们在该节点上的代码。 RemoveData 是您知道节点被取消配置并且不会返回的地方(比如硬盘驱动器将被换出,或硬件被完全删除),或者您知道如果节点回来它特别是空的(说你重新想象机器)。 Restart和RemoveData之间的区别在于,对于重新启动,我们知道节点将返回,因此我们保持对该节点上的副本的了解。对于持久性副本,这意味着我们不必立即再次构建副本。但对于RemoveData,我们知道副本不会返回,因此需要在确认节点可以安全重启之前立即构建任何备用。 RemoveNode 构建在RemoveData之上,并且是一个额外的指示器,表明您没有具体计划将此节点恢复。由于保持SeedNode的重要性,如果要删除的节点当前是种子,SF将无法通过呼叫。如果您确实要删除该特定节点,则可以重新配置群集以使用其他节点作为种子。您希望使用RemoveData与RemoveNode的一个示例是,如果您要缩小群集,那么您将明确调用RemoveNode,因为您打算让节点不再返回我希望确保你能够把正确的东西带走,这样底层的集群就不会崩溃。

    一旦完成操作(无论是什么)并且您想要重新启用该节点,相应的调用就是激活/启用。重新启动节点不会导致它自动重新启用。因此,如果您已完成软件修补程序(或任何导致您使用intent Restart的任何内容),并且您希望将服务再次放置在节点上,则可以使用相应的节点名称调用Enable / Activate。

    作为停用/禁用呼叫的示例,请查看PS API文档here

相关问题