LVS+Keepalived 高可用群集
目录
一、keepalived 双机热备基础知识
1. keepalived 概述及安装
2. keepalived 的热备方式
3. Keepalived 的安装与服务控制
(1)安装 Keepalived
(2)控制Keepalived 服务
二、LVS+keepalived 案例 双机热备
环境
部署
验证
一、keepalived 双机热备基础知识
1. keepalived 概述及安装
核心定位:
Keepalived 最初是为 LVS(Linux Virtual Server)设计的高可用辅助工具,提供 故障切换(Failover) 和 健康检查(Health Checking) 功能:
-
故障切换:当主节点(Master)故障时,自动将流量迁移至备用节点(Backup),业务恢复后切回主节点16。
-
健康检查:监控 LVS 调度器及后端节点服务器的可用性,自动隔离故障节点并重新纳入恢复节点37。
适用场景: -
负载均衡器高可用(如 LVS 主备调度器)。
-
非 LVS 环境(如 Web、数据库、FTP 服务的双机热备)
2. keepalived 的热备方式
基于 VRRP 协议实现:
-
VRRP(虚拟路由冗余协议):
-
多台服务器组成热备组,共享一个虚拟 IP(VIP)对外提供服务
-
主备角色:
-
MASTER:活跃节点,持有 VIP 并处理流量
-
BACKUP:待命节点,监听 MASTER 状态,故障时接管 VIP
-
-
-
VIP 漂移机制:
-
VIP 根据优先级(
priority
)在热备组内动态转移,无需手动配置虚拟接口(如eth0:0
)
-
-
核心优势:
-
透明切换:客户端无感知故障转移(仅 1-2 个数据包丢失)
-
跨服务兼容:适用于任何基于 IP 的服务(Web、SSH、DNS 等)
-
3. Keepalived 的安装与服务控制
(1)安装 Keepalived
yum install -y keepalived ipvsadm # 安装 Keepalived 及 LVS 管理工具
(2)控制Keepalived 服务
systemctl start keepalived # 启动服务
systemctl stop keepalived # 停止服务
systemctl enable keepalived # 启用开机自启systemctl status keepalived # 查看运行状态
ip addr show dev eth0 # 检查 VIP 是否绑定(MASTER 节点可见
二、LVS+keepalived 案例 双机热备
环境
105:客户端 101,102:keepa+LVS 103,104:网站服务器
部署
-安装
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
dnf -y install keepalived ipvsadm
-配置文件是模板需拷贝
cd /etc/keepalived
cp keepalived.conf.sample keepalived.conf
--101
可选参数:nopreempt(不抢占模式)
vim /etc/keepalived/keepalived.confrouter_id LVS_01 #id可以一样,该id仅本地有效#vrrp_strict #注销掉vrrp_instance VI_1 {state MASTERvirtual_router_id 51 //热备组号,需要在同一个组interface ens33priority 100 //优先级advert_int 1authentication { //热备组密码认证auth_type PASS //特定认证类型auth_pass 1111 //密码的认证机制}}virtual_ipaddress {192.168.10.172 #Vip}-------为LVS真实服务器设置virtual_server 192.168.10.172 80 { //与vip保持一致delay_loop 6 //检查状态的间隔时间lb_algo rr //负载均衡算法lb_kind DR //负载均衡类型# persistence_timeout 50 //持久化超时时间protocol TCP //传输控制协议real_server 192.168.10.103 80 {weight 1 //权重TCP_CHECK { //检查机制,采用 TCP 协议进行健康检查connect_port 80 //尝试连接的端口connect_timeout 3 //连接超时时间retry 3 //重试次数delay_before_retry 3 //重试前的延迟时间}}real_server 192.168.10.104 80 {weight 1TCP_CHECK {connect_port 80 connect_timeout 3 retry 3 delay_before_retry 3 ##:set paste 粘贴取消自动换行
--102
vim /etc/keepalived/keepalived.confrouter_id LVS_02 #vrrp_strict #注销掉vrrp_instance VI_1 {state BACKUPnopreempt //不抢占,注意只有备可以设置virtual_router_id 51 //热备组号,需要在同一个组interface ens33priority 90 advert_int 1authentication { auth_type PASSauth_pass 1111}}virtual_ipaddress {192.168.10.172 }virtual_server 192.168.10.172 80 {delay_loop 6lb_algo rrlb_kind DR#persistence_timeout 50 //测试先去掉protocol TCPreal_server 192.168.10.103 80 {weight 1 TCP_CHECK {connect_port 80 connect_timeout 3retry 3delay_before_retry 3}}real_server 192.168.10.104 80 {weight 1TCP_CHECK {connect_port 80 connect_timeout 3retry 3delay_before_retry 3}}
-启动服务
systemctl restart keepalived
-查看VIP
ip add
#真实服务器网站部署
systemctl stop firewalld
systemctl distable firewalld
setenforce 0
dnf -y install httpd
--103echo "test333333">/var/www/html/index.htmlsystemctl start httpdsystemctl enable httpd--104echo "test444444">/var/www/html/index.htmlsystemctl start httpdsystemctl enable httpd#web服务器设置DR模式-VIP设置
ip addr add 192.168.10.172/32 dev lo label lo:0
-重启
nmcli c reload
nmcli c up lo
-添加路由条目
ip route add local 192.168.10.172/32 dev lo //本地回环地址路由
或
route add -host 192.168.10.172 dev lo //针对特定主机的路由设置-改内核(路由没成功)
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
-重载
sysctl -p
-重启服务
systemctl restart httpd
systemctl enable httpd
验证
#模拟故障
关闭一个web,测试网站访问是否正常
在101,102 用“ipvsadm -ln” 可以查看统计信息,发现少了关闭的web信息
重新打开后会恢复,体现出来keepalived的功能。关闭一个 keepalived 服务器,测试 VIP 漂移效果