一夜之间关闭 ServiceFabric 集群

Turning off ServiceFabric clusters overnight

我们正在开发一个处理 excel 文件并吐出输出的应用程序。可用性不是一个很大的要求。

我们可以在晚上关闭 VM 并在早上再次打开它们吗?这种设置是否适用于服务结构?如果是这样,有没有办法安排它?

没有。您将不得不删除集群并重新创建集群并在早上部署应用程序。

正如 Todd 所说,关闭集群不是一种选择。但是,您可以减少集群中 VM 的数量。

白天您会 运行 所需的 VM 数量。在晚上,您可以缩小到最少 5 个。查看此页面以了解如何缩放 VM 集:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-cluster-scale-up-down/

谢谢大家的回复。为了社区的缘故,我有机会与 Microsoft Azure 代表交谈并在此处记录对话。

初始问题的回复

Service Fabric 群集必须维护最少数量的主节点类型,以便系统服务维持仲裁并确保群集的健康。您可以在 https://azure.microsoft.com/en-gb/documentation/articles/service-fabric-cluster-capacity/ 上查看有关可靠性级别和实例计数的更多信息。因此,停止所有 VM 将导致 Service Fabric 群集失去仲裁。通常可以恢复节点,Service Fabric 会自动从这种仲裁丢失中恢复,但这并不能保证,集群可能永远无法恢复。

但是,如果您不需要在集群中保存状态,那么每天删除并重新创建整个集群(整个 Azure 资源组)可能会更容易。通过部署新资源组从头开始创建新集群通常需要不到半小时的时间,这可以通过使用 Powershell 部署 ARM 模板来自动化。 https://azure.microsoft.com/en-us/documentation/articles/service-fabric-cluster-creation-via-arm/ 展示了如何设置 ARM 模板并使用 Powershell 进行部署。您还可以使用固定域名或静态 IP 地址,这样客户端无需重新配置即可连接到集群。如果您需要维护存储帐户等其他资源,那么您还可以将 ARM 模板配置为仅删除 VM 规模集和 SF 集群资源,同时保留网络、负载均衡器、存储帐户等

Q)有没有比直接从规模集中 stop/start VM 更好的方法?

如果您想停止 VM 以节省成本,那么 starting/stopping 直接从规模集中获取 VM 是唯一的选择。

问)我们可以用我们能找到的最便宜的 VM 做一个主要集,然后添加一个有我们可以打开和关闭的强大 VM 的辅助集吗?

是的,绝对可以创建两种节点类型——一种是 small/cheap 的主节点,一种是更大的“工作节点”——并在你的应用程序上设置放置限制以仅部署到这些节点更大的虚拟机。但是,如果您的 Service Fabric 服务正在存储状态,那么您仍然会 运行 遇到类似的问题,即一旦您的工作 VM 失去法定人数(低于 3 replicas/nodes),则无法保证您的 SF 服务本身将返回并保持所有状态。在这种情况下,您的集群本身仍然可以正常工作,因为主节点处于 运行ning 状态,但您的服务状态可能处于未知的复制状态。

我想你有几个选择:

  1. 不是将状态存储在 Service Fabric 的可靠集合中,而是将您的状态从外部存储到 Azure 存储或 SQL Azure 之类的东西中。您可以选择使用 Redis 缓存或 Service Fabric 的可靠集合之类的东西来维护更快的读取缓存,只需确保所有写入都持久保存到外部存储即可。这样您就可以随时自由删除和重新创建集群。
  2. 使用 Service Fabric backup/restore 来维护您的状态,并在一夜之间删除整个资源组或集群,然后在早上重新创建并恢复状态。 backup/restore 持续时间将完全取决于您存储的数据量以及导出备份的位置。
  3. 利用诸如 Azure Batch 之类的东西。 Service Fabric 并不是真正设计为可以定期启动和停止的临时高容量计算平台,因此如果这是您的目标,您可能需要查看 Azure Batch 等 HPC 平台,它提供了快速爆发计算的本机功能容量。

出于开发目的,您可以创建一个可以随意启动和停止的 Dev/Test Lab Service Fabric cluster

我还能够通过启动和停止与这些集群关联的 VM 规模集来启动和停止 Azure 上的 SF 集群。但是在重新启动时,您所有的应用程序(以及它们的状态)都消失了,必须重新部署。