【发布时间】:2016-03-22 09:26:23
【问题描述】:
当我登录到 Service Fabric Explorer 并尝试禁用节点以进行操作系统升级时,我看到了两个选项:
- 停用(暂停)
- 停用(重新启动)
谁能告诉我区别?
【问题讨论】:
标签: azure azure-service-fabric
当我登录到 Service Fabric Explorer 并尝试禁用节点以进行操作系统升级时,我看到了两个选项:
谁能告诉我区别?
【问题讨论】:
标签: azure azure-service-fabric
Service Fabric 具有可让您管理节点的 API(在 C# 中这些是 DeactivateNodeAsync 和 ActivateNodeAsync,在 PS 中它们是 Enable/Disable-ServiceFabricNode)。首先,其中大部分是人们管理自己的集群时的保留,与运行自己的集群时相比,在 Azure 托管的 Service Fabric 集群环境中应该较少常用。无论哪种方式,在停用节点时都有几个不同的选项,我们称之为 Intents。
您可以将这些视为节点上越来越严格的操作,您将在不同情况下使用这些操作,并使用它们将正在对节点执行的操作传达给 Service Fabric。
四个不同的选项是:
现在让我们谈谈你什么时候使用它们。 暂停是最常见的,如果您想调试给定的服务、进程、机器等,并且希望在您查看它时(尽可能地)不对其进行更改。如果您去诊断服务的某些行为只是为了确定我们刚刚将其转移到您身上,那会有点尴尬。 重新启动(这是我们看到的最常用的方法)在出于某种原因想要将所有工作负载移出节点时使用。例如,Service Fabric 在升级节点上的 Service Fabric 位时会使用它本身 - 首先我们通过意图重启来停用节点,然后我们等待它完成(因此我们知道您的服务没有运行),然后再关闭和升级我们自己在那个节点上的代码。 RemoveData 是您知道节点正在被取消配置并且不会返回的位置(例如硬盘驱动器将被换出,或者硬件将被完全移除),或者您知道如果节点回来了,它特别是空的(比如你正在重新映像机器)。 Restart 和 RemoveData 之间的区别在于,对于重新启动,我们知道节点正在返回,因此我们保留了该节点上副本的知识。对于持久副本,这意味着我们不必立即再次构建副本。但是对于 RemoveData,我们知道副本不会回来,因此需要在确认节点可以安全重启之前立即构建任何备用。 RemoveNode 建立在 RemoveData 之上,是一个额外的指标,表明您没有具体计划恢复此节点。由于保持 SeedNode 正常运行很重要,如果要删除的节点当前是 Seed,SF 将调用失败。如果您真的想删除该特定节点,您可以重新配置集群以使用不同的节点作为种子。当您想要使用 RemoveData 与 RemoveNode 时的一个示例是,如果您要缩小集群,您将明确调用 RemoveNode,因为您打算不让节点返回并希望确保您重新带走正确的集群,这样底层集群就不会崩溃。
一旦操作(无论是什么)完成并且您想重新启用节点,相应的调用是激活/启用。重新启动节点不会导致它自动重新启用。因此,如果您完成了软件补丁(或任何导致您使用 Intent Restart 的原因),并且您希望服务再次放置在节点上,您将使用适当的节点名称调用 Enable/Activate。
作为停用/禁用调用的示例,请查看 PS API 文档here
【讨论】: