一夜之间关闭ServiceFabric集群

时间:2016-09-22 13:43:09

标签: azure azure-service-fabric azure-vm-scale-set

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

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

4 个答案:

答案 0 :(得分:8)

谢谢大家的回复。我有机会与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 Scale Set和SF Cluster资源,同时保留网络,负载均衡器,存储帐户等。

问:是否有更好的方法来停止/启动虚拟机,而不是直接从规模集开始?

如果要停止虚拟机以节省成本,则直接从刻度集启动/停止虚拟机是唯一的选择。

问:我们可以使用我们能找到的最便宜的虚拟机进行主要设置,并添加具有强大虚拟机的辅助设备,我们可以打开和关闭它吗?

是的,绝对有可能创建两种节点类型 - 小型/便宜的主节点和更大的“工作者” - 并在应用程序上设置放置约束以仅部署到那些较大的VM。但是,如果您的Service Fabric服务正在存储状态,那么您仍然会遇到类似的问题,一旦您丢失了工作虚拟机的仲裁(低于3个副本/节点),那么无法保证您的SF服务本身将全部恢复国家维持。在这种情况下,由于主节点正在运行,您的群集本身仍然可以正常运行,但您的服务状态可能处于未知复制状态。

我认为你有几个选择:

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

如托德所说,关闭群集不是一种选择。但是,您可以缩小群集中VM的数量。

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

答案 3 :(得分:0)

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

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