第十五章 HA 高可用

现代社会严重依赖于计算机网络提供的信息,移动终端的普及进一步加重了这种依赖,人们无时无地都需要能够访问网络。如果你在提供这类服务,那么确保服务始终在线就变得非常重要。

我们可以通过计算服务在线时间(A)和总时间段(B)的比值来定义服务可用性。通常都表示为在一年内的在线时间比率。

表14.1:可用性,一年内的当机时间

可用性 % 一年内的停机时间

99 3.65 天

99.9 8.76 小时

99.99 52.56 分钟

99.999 5.26分钟

99.9999 31.5 秒

99.99999 3.15 秒

提高可用性的方法有很多。最具逼格的是重写软件,以便软件能够同时在多个主机并发运行。这要求软件本身具备错误检测和故障转移能力。对于只包含静态页面的Web网站来说,这种方法还能凑合用用。但更多情况下,这种方式都非常复杂,经常因为你无法修改软件而完全没有可行性。以下是一些不修改软件的提高可用性的办法:

  • 使用可靠的服务器硬件

注意:由于质量的不同,相同功能的计算机硬件往往具有不同的可用性指标。大部分厂商将可靠性较高的硬件作为“服务器级”产品出售,当然其价格也更高。

  • 消除单点故障(冗余硬件)

    • 使用不间断电源(UPS)

    • 为主板配备多路电源

    • 使用ECC内存

    • 使用多路网卡

    • 使用RAID技术管理本地存储

    • 使用分布式多副本存储技术保存虚拟机镜像

  • 减少停机时间 - 可快速访问的管理界面(24/7) - 可用的空闲节点(Proxmox VE集群中的其他节点) - 自动化故障检测(ha-manager提供) - 自动化故障转移(ha-manager提供)

由于彻底消除了对硬件的依赖,Proxmox VE这样的虚拟化技术能够轻松实现服务的高可用性。在配置了冗余存储和网络资源的情况下,遭遇个别服务器节点故障时,可以很容易在集群中其他服务器节点恢复服务运行。

Proxmox VE进一步提供了ha-manager组件,能够自动完成包括故障检测和故障转移在内的一切高可用管理任务。

Proxmox VE的ha-manager组件就像一个“全自动”的管理员。你只需将资源(虚拟机,容器等)配置交给它管理,ha-manager就会连续监测服务运行状态,并在发生故障时将服务转移到其他节点运行。当然,ha-manager也可以处理日常的管理操作请求,例如开机、停止、重新部署和迁移虚拟机。

但高可用性不是免费的午餐。实现高可用性需要投入更多资源,预备空闲节点等都会增加成本,因此你应该认真计算评估高可用性的收益和所需成本。

注意:将可用性从99%提高到99.9%还是比较容易的。但从99.9999%提高到99.99999%则难的多也贵的多。ha-manager的故障检测和故障转移时间大概为2分钟,因此能实现的可用性最多不超过99.999%。