azure - Service Fabric 停用(暂停)与停用(重新启动)?

标签 azure azure-service-fabric

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

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

  • 谁能告诉我有什么区别?

    最佳答案

    Service Fabric 具有可让您管理节点的 API(在 C# 中,它们是 DeactivateNodeAsync 和 ActivateNodeAsync,在 PS 中它们是 Enable/Disable-ServiceFabricNode)。首先,其中大部分是人们管理自己的集群时的遗留物,与运行自己的集群时相比,在 Azure 托管 Service Fabric 集群环境中应该不太常用。无论哪种方式,在停用节点时都有几种不同的选项,我们称之为意图。

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

    四个不同的选项是:

  • 暂停 - 有效地“暂停”节点:节点上的服务将继续运行,但任何服务都不应移入或移出节点,除非它们自己失败,或者除非有必要将服务移动到节点以防止中断或不一致。
  • 重启 - 这会将所有内存中的有状态和无状态服务移出节点,然后关闭(关闭)任何持久服务(如果这样做是安全的,否则我们将构建备用服务)。
  • 删除数据 - 这将关闭节点上的所有服务,如果安全有必要,再次构建备件。用户负责确保如果节点确实返回,它返回空。
  • 移除节点 - 这将关闭节点上的所有服务,如果需要安全,再次构建备件。在这种情况下,尽管您特别告诉 SF 该节点不会回来。 SF 执行额外的检查以确保被移除的节点不是 SeedNode(当前负责维护底层集群的节点之一)。除此之外,这与 RemoveData 相同。

  • 现在让我们谈谈您何时使用它们。 暂停 如果您想调试给定的服务、进程、机器等,并且希望在您查看它时不对其进行更改(尽可能地),则最常见。如果您去诊断服务的某些行为只是为了确定我们刚刚将其转移到您身上,那会有点尴尬。 重启 (这是我们看到使用的最常见的这些)用于出于某种原因您希望将所有工作负载移出节点时。例如,Service Fabric 在升级节点上的 Service Fabric 位时使用它本身 - 首先我们通过意向重启停用节点,然后在我们关闭和升级之前等待它完成(因此我们知道您的服务没有运行)我们自己在那个节点上的代码。 删除数据 是您知道节点正在取消配置并且不会回来的地方(假设硬盘驱动器将被换出,或者硬件将被完全移除),或者您知道如果节点回来,它特别会为空(假设您正在重新镜像机器)。 Restart 和 RemoveData 之间的区别在于,对于重新启动,我们知道节点正在返回,因此我们保留该节点上副本的知识。对于持久副本,这意味着我们不必立即再次构建副本。但是对于 RemoveData,我们知道副本不会回来,因此需要在确认节点可以安全重启之前立即构建任何备件。 移除节点 建立在 RemoveData 之上,并且是一个额外的指标,表明您没有具体计划将该节点带回来。由于保持 SeedNodes 处于正常状态很重要,如果要删除的节点当前是 Seed,SF 将无法调用。如果您真的想删除该特定节点,您可以重新配置集群以使用不同的节点作为种子。当您想要使用 RemoveData 与 RemoveNode 的一个例子是,如果您要缩小集群,您将显式调用 RemoveNode,因为您打算让节点不回来并希望确保您“重新拿走正确的,这样底层集群就不会崩溃。

    一旦操作(无论是什么)完成并且您想重新启用节点,相应的调用是激活/启用。重新启动节点不会使其自动重新启用。因此,如果您完成了软件补丁(或任何导致您使用 Intent Restart 的问题,例如),并且您希望将服务再次放置在节点上,您将使用适当的节点名称调用 Enable/Activate。

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

    关于azure - Service Fabric 停用(暂停)与停用(重新启动)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34308701/

    相关文章:

    c# - 连接到代理后面的 Azure 存储队列

    azure - Windows Azure 虚拟机性能

    Azure函数应用部署错误 "Encountered an error (ServiceUnavailable) from host runtime. (CODE: 400)"

    c# - Azure Service Fabric 中 WCF 服务的 HTTP 终结点

    c# - 无法访问基本的 Fabric Azure WebAPI OWIN 无状态服务

    c# - Service Fabric 参与者中的静态对象

    azure - 有没有好的 Multi-Tenancy Azure 示例应用程序?

    azure - 桥接 Azure Web 应用程序和 Service Fabric

    c# - 在 Service Fabric 应用程序中禁用 TLS 握手客户端证书请求

    python - .csv 到 .edf 或其他 EEG 读取格式