在当今数字化时代,互联网应用的稳定性和高可用性至关重要。为了确保服务的持续运行,各种技术和工具应运而生,Keepalived 便是其中之一。今天,我们就来深入了解一下 Keepalived,探讨它是什么、如何工作以及常用的架构模式。
什么是 Keepalived
Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)实现的高可用性解决方案,主要用于确保服务器集群的高可用性和健康检查。它能够自动检测服务器的状态,当主服务器出现故障时,迅速将服务切换到备用服务器上,从而保证业务的连续性,避免单点故障对业务造成影响。
Keepalived 的工作原理
VRRP 协议基础
Keepalived 基于 VRRP 协议工作。VRRP 协议通过将多台路由器组成一个虚拟路由器组(VRID),对外呈现一个虚拟 IP 地址(VIP)。在这个组中,有一台路由器作为主路由器(Master),负责转发数据包,其他路由器作为备份路由器(Backup)处于待命状态。主路由器会周期性地向备份路由器发送 VRRP 通告报文,以表明自己的存活状态。备份路由器通过监听这些通告报文来判断主路由器是否正常工作。
健康检查机制
Keepalived 不仅依赖 VRRP 协议实现主备切换,还具备强大的健康检查功能。它可以通过多种方式检查服务器的状态,常见的检查方式包括:
Layer3 检查
发送 ICMP 数据包(类似 Ping 命令)来检测服务器的 IP 地址是否可达。如果无法收到响应,说明服务器可能出现故障,Keepalived 会将其标记为不可用。
Layer4 检查
通过检查 TCP 端口的状态来判断服务器是否正常运行。例如,对于 Web 服务器,Keepalived 会检查默认的 80 端口是否开放。若端口未开启,就会认为服务器存在问题,并将其从集群中移除。
Layer5 检查
针对特定的 URL 执行 HTTP GET 请求,并利用 MD5 算法计算响应数据的哈希值。如果实际哈希值与预设值不匹配,表明测试失败,Keepalived 会将该服务器从集群中剔除。此外,Layer5 检查还支持对同一服务的多个 URL 进行检查,这在负载均衡场景中非常实用。
Keepalived 的常用架构模式
主备模式
主备模式是 Keepalived 最基本的架构模式。在这种模式下,有一台主服务器(MASTER)和一台或多台备用服务器(BACKUP)。主服务器承担实际的业务负载,同时不断向备用服务器发送 VRRP 通告报文。备用服务器处于监听状态,一旦在规定时间内没有收到主服务器的通告报文,就会认为主服务器出现故障,然后通过竞选机制,优先级最高的备用服务器会晋升为主服务器,接管虚拟 IP 地址(VIP),继续提供服务。
这种模式的优点是架构简单,易于理解和部署,适用于对业务连续性要求较高但规模较小的应用场景。然而,它也存在一定的局限性,备用服务器在正常情况下处于闲置状态,资源利用率较低。
双主模式
为了克服主备模式中备用服务器资源浪费的问题,双主模式应运而生。在双主模式下,两台服务器都处于活动状态,各自承担一部分业务负载,同时互为备份。每台服务器都配置了两个虚拟 IP 地址(VIP1 和 VIP2),其中一台服务器作为 VIP1 的主服务器,同时作为 VIP2 的备用服务器;另一台服务器则相反,作为 VIP2 的主服务器和 VIP1 的备用服务器。这样,两台服务器都能充分发挥作用,提高了资源利用率。
当其中一台服务器出现故障时,另一台服务器会接管故障服务器的虚拟 IP 地址和业务负载,确保服务的连续性。双主模式适用于业务量较大且对资源利用率有较高要求的场景,但相对主备模式,其配置和管理稍微复杂一些。
负载均衡集群模式(LVS + Keepalived)
在大型互联网应用中,负载均衡集群模式被广泛应用。Keepalived 常常与 LVS(Linux Virtual Server,Linux 虚拟服务器)结合使用,构建高可用的负载均衡集群。LVS 负责将前端的用户请求分发到后端的真实服务器(Real Server)上,实现负载均衡。而 Keepalived 则用于监控 LVS 负载调度器和后端真实服务器的状态,确保整个集群的高可用性。
在这种架构中,通常有多台 LVS 负载调度器,通过 Keepalived 实现主备或双主模式。同时,后端有多台真实服务器提供服务。Keepalived 会定期检查 LVS 负载调度器和真实服务器的健康状况,一旦发现某个节点出现故障,就会及时将其从集群中移除,并将流量重新分配到其他正常节点上。当故障节点恢复正常后,Keepalived 又会自动将其重新加入集群。这种模式能够应对大规模的并发访问,提供高性能、高可用的服务。
Keepalived 作为一款强大的高可用性解决方案工具,在保障服务器集群的稳定运行方面发挥着重要作用。通过基于 VRRP 协议的主备切换机制和丰富的健康检查功能,Keepalived 能够有效避免单点故障,确保业务的连续性。
领取专属 10元无门槛券
私享最新 技术干货