编辑
2025-10-25
Keepalived
00

目录

一、tomcat服务器配置
主节点Keepalived配置
备节点Keepalived配置
二、启动服务(主备服务器都要执行)
三、验证配置

一、tomcat服务器配置

js
主:192.168.201.100:8081 备:192.168.201.101:8081

主节点Keepalived配置

js
vi /etc/keepalived/keepalived.conf
yml
global_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 # 引用健康检查 } }

创建健康检查脚本(主备服务器都要执行)

js
mkdir -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

备节点Keepalived配置

js
vi /etc/keepalived/keepalived.conf
yml
global_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 # 引用健康检查 } }

二、启动服务(主备服务器都要执行)

js
systemctl start keepalived systemctl enable keepalived

三、验证配置

检查虚拟IP绑定‌(应在主服务器上)

js
ip addr show ens33 | grep 192.168.201.200

image.png

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

image.png

模拟故障测试‌ 停止主服务器Tomcat:

js
systemctl stop tomcat

观察虚拟IP是否漂移到备服务器

image.png

重启主服务器Tomcat:

js
systemctl start tomcat

观察虚拟IP是否漂回主服务器

image.png

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document