在云计算时代,应用程序的高可用性是至关重要的。当将应用程序部署在云中的虚拟机(VM)上时,高可用性变得更加重要,因为依赖的是云服务提供商管理的虚拟机。如果设计一个以高可用性为核心的应用程序,并打算在AzureVM上部署它,需要了解Azure提供的多种构造和配置,以实现高可用性。
硬件的可靠性是众所周知的,系统注定会失败,线路会断,连接会失效。那么,如果应用程序托管在这样的VM上,当发生故障时会发生什么呢?Azure承认这些事实,并提供了足够的解决方案,使能够设计VM基础设施,即使在这些故障发生时,应用程序仍然可用。
在了解如何在Azure上确保高可用性之前,让先尝试理解可能发生的所有类型的故障:
在本地服务器上,过去常常在不同的网络上保留冗余服务器。在Azure上,VM的选择对来说是一个黑匣子,所以需要以某种方式保留冗余服务器和独立的网络。
为了实现这种冗余,Azure有可用性集的概念。当将两个或更多的VM放在一个可用性集中时,这些VM将被分布在多个硬件上,这些硬件在电力和网络供应方面是隔离的。Azure如何确保这种冗余呢?它使用故障域和更新域的概念。让现在详细了解它们。
故障域是数据中心中一组机器(或本质上是一个机架),它容易受到故障的影响。任何电力或网络故障都会影响故障域中的所有VM。
更新域是一组机器,它们将一次性接收操作系统或Azure功能更新(可能一起重新启动)。它与机架无关,它只是一个逻辑分组,定义了一个更新域。
当将VM放在一个可用性集中时,Azure确保VM被放置在不同的故障域和更新域中。这将确保在机架故障或任何VM上的任何更新的情况下,不会影响可用性集中的其他VM,应用程序仍然可用。
默认情况下,当选择一个可用性集时,VM将被放置在2个故障域和5个更新域中。
选择可用性集确保VM具有高可用性,但由于为了高可用性选择了多个VM,也需要独立管理这些VM。否可以以某种方式将相同的VM作为一个组进行管理,同时也具有高可用性呢?
这正是Azure VM规模集发挥作用的地方。Azure VM规模集允许创建和管理一组负载均衡的VM。规模集确保VM具有高可用性,同时让将所有VM作为一个组进行管理。此外,规模集可以配置为根据负载自动扩展,这将进一步帮助实现VM的高可用性目标。
以下是使用VM规模集的一些好处:
因此,每当发现自己需要上述要求时,应该选择VM规模集,而不是手动创建多个VM。