Keepalived 是一个用于高可用性(HA, High Availability)集群的软件,主要用于 Linux 环境下。它的主要目的是提高服务器系统的可靠性和可用性,通过在一组服务器之间提供负载均衡和故障转移的功能来实现。简单来说,Keepalived 可以帮助你的服务在一台服务器宕机后自动切换到另一台服务器上继续运行,从而保证服务的连续性和稳定性。
Keepalived 的核心组件
Keepalived 主要有以下几个核心组件:
- Core - 核心模块,负责整个 Keepalived 的初始化和配置加载。
- Checkers - 健康检查模块,负责检查服务器的状态,包括网络连接、应用层响应等。
- VRRP (Virtual Router Redundancy Protocol) - 虚拟路由冗余协议模块,用于实现主备服务器之间的故障转移。
Keepalived 的工作原理
假设你有一个网站,部署在多台服务器上,其中一台作为主服务器(Master),其余作为备份服务器(Backup)。所有客户端请求都通过一个虚拟 IP 地址(VIP)来访问网站。
- 正常情况:客户端请求通过 VIP 发送到主服务器,主服务器处理请求并将结果返回给客户端。
- 故障转移:如果主服务器出现问题(如硬件故障、软件崩溃等),Keepalived 会检测到这一情况并通过 VRRP 协议将 VIP 转移到备份服务器上,这样客户端请求就会被发送到新的主服务器(之前的备份服务器)。
Keepalived 的配置文件
Keepalived 的配置文件通常位于 /etc/keepalived/keepalived.conf
中,配置文件包含了各种指令来定义 Keepalived 如何运行。下面是一个简单的配置示例:
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
在这个例子中:
-
router_id
定义了路由器的标识。 -
state MASTER
表明当前服务器是主服务器。 -
interface
设置了 Keepalived 监听的网络接口。 -
virtual_router_id
和priority
用于定义 VRRP 实例的优先级。 -
advert_int
设定了通告间隔,即 Keepalived 发送心跳信息的时间间隔。 -
authentication
配置了认证信息,确保只有正确的服务器才能成为新的主服务器。 -
virtual_ipaddress
设置了要使用的虚拟 IP 地址。
Keepalived 的优势
- 高可用性:即使某台服务器出现故障,Keepalived 也能保证服务不中断。
- 负载均衡:通过配置 Keepalived 可以实现不同服务器间的负载均衡。
- 易于配置:相比其他解决方案,Keepalived 的配置相对简单。