我正在努力理解 Azure 中的故障/更新域的概念,任何帮助都将不胜感激。我已在同一可用性集下分别配置了 2 个虚拟机,其中 2 个故障域和 2 个更新域:
Fault Domain Update Domain
server_iis1 0 0
server_iis2 1 1
据我所知,故障域实际上是一个机架,但以下几点令我感到困惑:
如果我完全失去故障域 0,那么 server_iis1 就没了?server_iis1 的第二个实例位于哪里?如果发生机架故障(故障域 0),该实例应该启动并运行,从而为我提供 99.95% 的 SLA?
同样,对于 server_iis2,如果我丢失了故障域 1,server_iis2 应该如何启动并运行?
Server_iis1 和 Server_iis2 是完全不同的 2 个虚拟机,具有不同的数据和服务客户。
答案1
故障域旨在保护您的工作负载(在虚拟机上运行的应用程序),以防出现意外硬件故障。在上面的示例中,iis1 和 iis2 是两个独立的虚拟机,它们运行在同一个物理数据中心(可用区域),但位于不同的故障域中。这意味着,如果由于某种原因,虚拟机支持基础设施的某些物理组件发生故障(机架电源、交换机、物理主机等),另一个 iis 虚拟机将保持运行,因为它位于同一数据中心的不同硬件集群(故障域)上。
许多人不太清楚的一件事是,您的应用程序必须足够智能,才能同时在两台机器上运行。如果我在 iis1 上有一个应用程序(excel 是一个非常基本的例子(只是逗我玩玩)),在 iis2 上有一个不同的应用程序(powerpoint),如果 iis1 出现故障,您将无法访问该应用程序(excel),直到虚拟机故障转移到另一台主机,这可能需要几分钟。反之亦然,如果 iis2 出现故障,您将失去(powerpoint)。要真正使故障域发挥作用,您需要在 iis1 和 iis2 上运行 excel 和 powerpoint,这样如果一个虚拟机出现故障,另一个虚拟机仍然可以为应用程序提供服务,当然您的应用程序需要足够智能才能处理故障/故障转移。
因此,故障域可以防止基础设施中发生意外的不可预测的故障。
更新域旨在确保在维护时段(客户或 Microsoft 启动)期间我们不会一次重新启动/更新所有机器。
例如,如果我有 5 个前端 Web 服务器连接到 5 个后端服务器,我会将这 5 个前端服务器放在同一个更新域中,这样它们就不会同时重新启动,从而确保我始终能够提供 Web 流量。这也适用于我的后端服务器。我会将它们放在一个更新域中,以确保它们永远不会同时重新启动。这样做可以确保我在维护时段内保持服务器运行,尽管性能下降。
可用性集确实提供了 99.95% 的 SLA。可用性区域提供了 99.99% 的 SLA
将虚拟机部署到可用区域会将您的虚拟机复制到另一个物理数据中心(区域)。如果出现故障,此故障转移会自动发生,客户无需采取任何措施。
Avail set 的部署成本更低,而可用区域的成本更高,因为您不仅有虚拟机成本,还有与区域间数据复制相关的成本,但我们谈论的只是几美分。
希望有帮助