我们使用 keepalived 做为容错负载均衡器,预防服务器单点故障, 必要时可以无缝切换。
实验环境:
Hosts | IP |
virtual ip(虚拟IP) | 192.51.100.40 |
lb.example(主机 IP) | 192.51.100.20 |
lbspare.example(备机 IP) | 192.51.100.30 |
前置条件:
1). 允许服务器绑定虚拟IP
sysctl -w net.ipv4.ip_nonlocal_bind=1 (修改服务器运行时环境变量)
vi /etc/sysctl.d/keepalive.conf
net.ipv4.ip_nonlocal_bind=1 (永久修改服务器)
2). keepalived安装
apt-get install keepalived
配置:
在 lb.example 上面修改配置如下:
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
172.30.40.254
}
}
在 lbspare.example 上面修改配置如下:
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 100
virtual_ipaddress {
172.30.40.254
}
}
分别重启keepalived, service keepalived start。
工作原理
lbspare.example 上的 keepalived 程序会一直监听网络上的 lb.example 是否一直通告自己在线, 如果 lb.example 停止通知自己在线(重启或关机等),lbspare.example则发送ARP(Address Resolution Protocol 地址解析协议)请求,通知网络上的其他主机自己拥有虚拟IP(192.51.100.40), 其他主机则更新自己的路由表及服务。lb.example可用时,它将宣布自己已在线和恢复控制虚拟IP(192.51.100.40)。