js主:192.168.201.100:8081
备:192.168.201.101:8081
jsvi /etc/keepalived/keepalived.conf
ymlglobal_defs {
router_id LVS_MASTER # 主节点标识
}
vrrp_script chk_tomcat {
script "/etc/keepalived/scripts/check_tomcat.sh"
interval 2
weight -5
}
vrrp_instance VI_1 {
state MASTER
interface ens33 # 使用ip addr查看实际网卡名
virtual_router_id 51 # 主备必须相同
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 # 主备密码必须相同
}
virtual_ipaddress {
192.168.201.200/24 # 虚拟IP
}
track_script {
chk_tomcat # 引用健康检查
}
}
创建健康检查脚本(主备服务器都要执行)
jsmkdir -p /etc/keepalived/scripts
vi /etc/keepalived/scripts/check_tomcat.sh
js#!/bin/bash
# 执行端口检测命令
nc -z 127.0.0.1 8081 > /dev/null 2>&1
# 根据返回值判断状态
if [ $? -ne 0 ]; then # 若返回值≠0(即1),说明端口未开放
echo "Tomcat 8081端口未监听(服务异常)"
exit 1 # 告诉Keepalived:服务异常,触发权重调整
else # 若返回值=0,说明端口正常
echo "Tomcat 8081端口正常(服务运行中)"
exit 0 # 告诉Keepalived:服务正常,不调整权重
fi
jsvi /etc/keepalived/keepalived.conf
ymlglobal_defs {
router_id LVS_BACKUP # 备节点标识
}
vrrp_script chk_tomcat {
script "/etc/keepalived/scripts/check_tomcat.sh"
interval 2
weight -5
}
vrrp_instance VI_1 {
state BACKUP
interface ens33 # 与主服务器相同
virtual_router_id 51 # 与主服务器相同
priority 100 # 低于主节点
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 # 与主服务器相同
}
virtual_ipaddress {
192.168.201.200/24 # 相同虚拟IP
}
track_script {
chk_tomcat # 引用健康检查
}
}
jssystemctl start keepalived systemctl enable keepalived
检查虚拟IP绑定(应在主服务器上)
jsip addr show ens33 | grep 192.168.201.200

测试虚拟IP都是访问到虚拟ip上的

模拟故障测试 停止主服务器Tomcat:
jssystemctl stop tomcat
观察虚拟IP是否漂移到备服务器

重启主服务器Tomcat:
jssystemctl start tomcat
观察虚拟IP是否漂回主服务器

本文作者:松轩(^U^)
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!