服务结构停用(暂停)还是停用(重新启动)?

Wojtek Turowicz

当我登录Service Fabric资源管理器并尝试禁用某个节点以进行OS升级时,将显示两个选项:

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

谁能告诉我区别?

杀人者

Service Fabric具有可让您管理节点的API(在C#中为DeactivateNodeAsync和ActivateNodeAsync,在PS中为Enable / Disable-ServiceFabricNode)。首先,其中大多数是人们管理自己的群集后的保留,与运行自己的群集相比,它们在Azure托管服务矩阵群集环境中的使用较少无论哪种方式,在停用节点时都有几种不同的选项,我们称为Intents

您可以将它们视为代表节点上越来越严格的操作,您将在不同情况下使用这些操作,并使用它们与Service Fabric交流对节点所做的事情。

四个不同的选项是:

  1. 暂停-有效地“暂停”节点:节点上的服务将继续运行,但是除非服务自行失败,或者除非有必要将服务移至节点以防止中断或不一致,否则任何服务都不应移入或移出节点。 。
  2. 重新启动-这会将所有内存中的有状态和无状态服务移出该节点,然后关闭(关闭)任何持久性服务(如果可以的话,请关闭它,否则我们将建立备用服务器)。
  3. RemoveData-这将关闭节点上的所有服务,如果出于安全原因需要再次构建备用磁盘。用户有责任确保如果该节点确实返回,则该节点返回为空。
  4. RemoveNode-这将关闭节点上的所有服务,如果为了安全起见,会再次首先构建备用节点。在这种情况下,尽管您是专门告诉SF该节点不会回来。SF执行附加检查,以确保要删除的节点不是SeedNode(当前负责维护基础群集的节点之一)。除此之外,这与RemoveData相同。

现在,让我们讨论一下何时使用它们。如果要调试给定的服务,进程,机器等,并且希望在查看时不对其进行更改(在可能的范围内),则暂停是最常见的。如果您去诊断服务的某些行为只是为了确定我们刚刚将其移交给您,那将有些尴尬。当出于某种原因要将所有工作负载移出节点时,将使用重新启动(这是我们看到的最常用的重新启动)。例如,Service Fabric在升级节点上的Service Fabric位时会使用此方法本身-首先,我们通过意图重启来停用节点,然后在关闭和升级之前,等待节点完成操作(以便我们知道您的服务未运行)。我们在该节点上的代码。删除数据是您知道该节点已被调配并且不会回来的位置(例如,硬盘驱动器将被换出,或者硬件已被完全删除),或者您知道如果该节点回来,则专门用于为空(例如您要重新成像机器)。Restart和RemoveData之间的区别在于,对于重新启动,我们知道该节点将返回,因此我们保留了该节点上副本的知识。对于持久性副本,这意味着我们不必立即再次构建副本。但是对于RemoveData,我们知道副本不会返回,因此需要在确认节点可以安全重启之前立即构建任何备件。RemoveNode基于RemoveData构建,它是一个附加指示符,表明您没有具体计划将该节点恢复原状。由于保持SeedNodes的启动很重要,因此,如果要删除的节点当前是Seed,则SF将使调用失败。如果您确实要删除该特定节点,则可以将群集重新配置为使用其他节点作为种子。何时使用RemoveData与RemoveNode的一个示例是,如果要缩减群集,则将显式调用RemoveNode,因为您希望节点不再出现并希望确保您使用重新拿走正确的集群,这样基础集群就不会崩溃。

完成该操作(无论执行什么操作)并且您要重新启用该节点后,相应的调用为“激活/启用”。重新启动节点不会导致其自动重新启用。因此,如果您已完成软件补丁程序(或任何使您使用意图重新启动的操作),并且希望将服务再次放置在节点上,则可以使用适当的节点名称调用启用/激活。

作为停用/禁用调用的示例,请在此处查看PS API文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章