Service Fabric 停用(暂停)与停用(重启)有什么区别?

14

当我登录服务织物资源管理器并尝试禁用一个节点进行操作系统升级时,会出现两个选项:

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

有人能告诉我它们的区别吗?

1个回答

35

Service Fabric有API可以让您管理节点(在C#中,这些是DeactivateNodeAsync和ActivateNodeAsync,在PS中它们是Enable/Disable-ServiceFabricNode)。首先,这些大多数是遗留问题,当人们管理自己的集群时,与在Azure托管的Service Fabric集群环境中使用它们相比应该更少。无论哪种方式,在停用节点时,有几个不同的选项,我们称之为Intents

您可以将其视为对节点执行越来越严重的操作,您会在不同情况下使用它们,并使用它们向Service Fabric传达正在对节点执行的操作。

四个不同的选项是:

  1. 暂停 - 实际上“暂停”了节点:其中的服务将继续运行,但除非它们自行失败,否则不应在节点之间移动任何服务,也不应该将服务移动到该节点以防止故障或不一致性。
  2. 重新启动 - 这将使所有内存中的有状态和无状态服务从节点上移开,然后关闭(关闭)任何持久化服务(如果安全,则会构建备件;如果不安全,则不会)。
  3. 删除数据 - 这将关闭节点上的所有服务,如果必须确保安全性,将首先构建备件。用户有责任确保如果节点回来了,它会回来为空。
  4. 删除节点 - 这将关闭节点上的所有服务,如果必须确保安全性,将首先构建备件。在这种情况下,您明确告诉SF此节点不会回来了。 SF执行其他检查以确保正在删除的节点不是SeedNode(当前负责维护底层集群的节点之一)。除此之外,这与RemoveData相同。
现在让我们谈谈何时使用每种方式。如果您想要调试某个服务、进程、机器等,并希望在查看时它不会被更改(在可能的情况下),那么“暂停”是最常见的选择。如果您只是想诊断某个服务的行为,结果发现我们已经将其移到其他地方,那会有点尴尬。 “重启”(这是我们看到最常用的一种)是在某些情况下,您想要将所有工作负载从节点上移走时使用的。例如,Service Fabric在升级节点上的Service Fabric部件时会使用它自己-首先我们使用意图重启来停用节点,然后等待它完成(以便我们知道您的服务未在运行),然后再关闭并升级该节点上的代码。 “删除数据”是当您知道节点正在被取消配备并且不会返回时使用的(例如硬盘将被更换或硬件完全被移除),或者您知道如果节点返回,它将是空的(例如,您正在重新映像该机器)。重启和删除数据之间的区别在于,对于重启,我们知道节点会回来,因此我们保留该节点上副本的知识。对于持久性副本,这意味着我们不必立即重新构建副本。但是对于删除数据,我们知道副本不会回来,因此需要立即构建任何备件,然后确认节点安全重启之前。 “删除节点”建立在“删除数据”的基础上,并且是您没有将此节点带回的具体计划的附加指标。由于保持种子节点的重要性,如果要删除的节点当前是一个种子,则SF将失败该调用。如果您真的想删除特定节点,则可以重新配置集群以使用不同的节点作为种子。您希望使用RemoveData而不是RemoveNode的示例是:如果要缩小群集,则应明确调用RemoveNode,因为您打算让节点不再返回,并且希望确保您正在带走正确的节点,以使底层群集不会崩溃。

一旦操作(无论是什么)完成,你想重新启用节点时,相应的调用是Activate/Enable。重启节点不会自动使其重新启用。所以如果你完成了软件补丁(或任何导致你使用“Restart”意图的原因),并且想要在节点上再次放置服务,就需要使用适当的节点名称来调用Enable/Activate。

关于deactivate/disable调用的示例,请查看PS API文档这里


好的,假设我有内存泄漏问题,在修复之前内存几乎满了 - 我应该使用哪个来重新启动服务?我刚刚尝试了“重启”,但它没有像内存仍然很高那样杀死和重新启动服务。我不敢使用“RemoveData”,因为你说“节点正在被取消配置,并且将不会回来”- 我希望它能回来,我只需要它重新启动服务以释放内存。 - MajkeloDev
这些都不是解决该问题的正确方法。请创建一个单独的问题,阐述您的情况 - 问题所在以及您尝试做什么。 - masnider
你有关于这些状态如何计费的任何信息吗? - Rob Bell
已添加一个API示例的链接。它在SF支持的每个API模型中都存在(HTTP、C#、Java、PS、sfctl)。 - masnider
你可能只想进行应用程序升级,引用 SF 作为服务运行的新标识。SF 将为您重新启动进程。(https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-application-runas-security, https://dev59.com/9Jrga4cB1Zd3GeqPiiU-) - masnider
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接