这是常用的高可用性方案,通过Keepalived结合**VRRP(虚拟路由冗余协议)**实现自动IP切换。 示例说明: 机器一: IP:192.168.0.8 操作系统:Centos7.8 机器二: IP:192.168.0.46 操作系统:Centos7.8
安装Keepalived:
在两台CentOS 7机器上安装Keepalived。
yum install keepalived -y
1. Keepalived主节点配置(Server A)192.168.0.46:
vrrp_instance VI_1 {
state MASTER # 主节点
interface enp2s0 # 使用的网卡名称,使用ifconfig命令查看
virtual_router_id 51 # 虚拟路由ID,两个节点需保持一致
priority 100 # 主节点优先级高于备节点
advert_int 1 # 广告发送间隔时间,单位为秒
authentication {
auth_type PASS
auth_pass 1234 # 密码,两台机器需一致
}
virtual_ipaddress {
192.168.0.47 # 虚拟IP(设备通过此IP访问)
}
track_script { # 跟踪脚本,监控服务健康状态
chk_nginx # 自定义检查脚本的名字
}
}
# 定义一个脚本来监控服务,比如firewalld
vrrp_script chk_nginx {
script "/etc/keepalived/check_firewalld.sh" # 检查服务的脚本路径
interval 2 # 每2秒检查一次
weight 2 # 如果服务正常,增加权重
}
2. Keepalived备节点完整配置(Server B)192.168.0.8:
vrrp_instance VI_1 {
state BACKUP
interface enp2s0
virtual_router_id 51
priority 90 # 优先级低于主节点
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.0.47
}
track_script {
chk_nginx # 跟踪脚本,检查服务状态
}
}
vrrp_script chk_nginx {
script "/etc/keepalived/check_firewalld.sh" # 同样的检查脚本
interval 2 # 每2秒检查一次
weight 2 # 如果服务正常,增加权重
}
3、编辑监控脚本
192.168.0.46
vim /etc/keepalived/check_firewalld.sh
写入以下内容:
#!/bin/bash
if systemctl status firewalld >/dev/null 2>&1; then
exit 0 # firewalld运行正常,返回0
else
exit 1 # firewalld异常,返回1
fi
192.168.0.8
vim /etc/keepalived/check_firewalld.sh
写入以下内容:
#!/bin/bash
if systemctl status firewalld >/dev/null 2>&1; then
exit 0 # firewalld运行正常,返回0
else
exit 1 # firewalld异常,返回1
fi
4、设置权限和测试脚本
确保检查脚本可执行:
chmod +x /etc/keepalived/check_firewalld.sh
测试脚本运行:
/etc/keepalived/check_firewalld.sh
5. 启动Keepalived
在两台机器上启动并启用Keepalived服务:
systemctl start keepalived
systemctl enable keepalived
测试, 开3个cmd窗口,分别输入: 窗口1:
ping 192.168.0.47 -t
窗口2:
ping 192.168.0.46 -t
窗口3:
ping 192.168.0.8 -t
当拔下192.168.0.8的网线时,窗口3会提示找不到主机,窗口1会断开一会,立刻就通了,然后插上网线,窗口3等一会也会通
当拔下192.168.0.8的网线时,窗口2会提示找不到主机,窗口1会断开一会,立刻就通了,然后插上网线,窗口3等一会也会通了
两个网线都拔了,,窗口1会不通,任意插上一根网线,窗口一都会通
注意:本文归作者所有,未经作者允许,不得转载