9.2 High Availability

要构造高度可用的 Linux Virtual Server 群集,可以使用软件的多种内置功能。通常,负载平衡器上会运行设备监视器守护程序,以定期检查服务器运行状况。如果服务器在指定时间内对服务访问请求或 ICMP ECHO_REQUEST 没有响应,则设备监视器将认为此服务器出现故障,并将其从负载平衡器的可用服务器列表中去除。这样就不会将新请求发送给这台出现故障的服务器了。如果设备监视器检测到发生故障的服务器已恢复并重新工作,则它会将此服务器重新添加到可用服务器列表中。因此,负载平衡器可以自动屏蔽服务守护程序或服务器的故障。

此外,管理员还可以使用系统工具添加新服务器以增加系统吞吐量,或去除服务器以进行系统维护,而无需关闭整个系统服务。

为防止负载平衡器成为整个系统的单一故障点,需要设置负载平衡器的备份(或多个备份)。两个检测信号守护程序分别运行在主平衡器和备份平衡器上。它们通过串行线路和/或网络接口定期互相发送正常运行检测信号讯息。如果备份平衡器的检测信号守护程序在指定时间内未收到来自主平衡器的检测信号讯息,它将接管虚拟 IP 地址以提供负载平衡服务。

发生故障的负载平衡器重新恢复后,有两种可能的结果:它可以自动成为备份负载平衡器,或活动的负载平衡器释放 VIP 地址,这样恢复的平衡器将接管 VIP 地址并重新成为主负载平衡器。主负载平衡器具有连接状态,即表示它知道将连接转发给哪台服务器。如果备份负载平衡器在接管时没有收到此连接信息,则客户端必须重新发送其请求后才能访问服务。为使负载平衡器故障转移对客户端应用程序透明,在 IPVS 中会进行连接同步:主 IPVS 负载平衡器通过 UDP 多路广播将连接信息同步到备份负载平衡器。当备份负载平衡器在主负载平衡器发生故障后接管它时,备份负载平衡器将具有大多数连接状态,这样几乎所有连接都可以通过备份负载平衡器继续访问服务。