

IPADDR=192.168.40.14
Keepalived.conf配置:
vrrp_instance VI_1
state MASTER
interface ens33
virtual_router_id 17
priority 150
virtual_ipaddress 192.168.40.17IPADDR=192.168.40.15
Keepalived.conf配置:
vrrp_instance VI_1
state BACKUP
interface ens33
virtual_router_id 17
priority 99
virtual_ipaddress 192.168.40.17利用docker部署两个tomcat容器,并启动容器。
Tomcat8081
192.168.40.16:8081
Tomcat8082
192.168.40.16:8082Keepalived下载地址https://www.keepalived.org/download.html,下载keepalived-2.1.5.tar.gz安装包
yum –y install curl gcc openssl-devel libnl3-devel net-snmp-devel libnfnetlink-devel mkdir /software 此为软件存放目录
tar -zxvf keepalived-2.1.5.tar.gzcd keepalived-2.1.5
./configure --prefix=/data/keepalived --sysconf=/etcmake & manke install
确保依赖都安装的情况下更换keepalived低版本
cd /data/keepalived/ln -s sbin/keepalived /sbin/ln -snf sbin/keepalived /sbincp /software/keepalived-2.1.5/keepalived/etc/init.d/keepalived /etc/init.d
chkconfig --add keepalivedchkconfig keepalived onservice keepalived startservice keepalived statusvim /etc/keepalived/(最小配置)
! Configuration File for keepalived
global_defs {
router_id NGINX
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 17
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.40.17
}
}vim /etc/keepalived/(最小配置)
! Configuration File for keepalived
global_defs {
router_id NGINX
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 17
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.40.17
}
}/usr/local/nginx/sbin/nginx 启动keepalived
service keepalived start 查看网卡是否获取到虚拟IP
Ip add
验证试验
curl http://192.168.40.17
手动停止 nginx服务
/usr/local/nginx/sbin/nginx –s stop网页无法开启
手动停止keepalived服务
service keepalived stop 网页正常
#!/bin/bash
A=`ps -C nginx --no-header|wc -l` -->判断nginx的服务进程数并统计
if [ $A -eq 0 ];then -->假如数量为0则执行以下脚本
/usr/local/nginx/sbin/./nginx
sleep 2 -->进程休眠2秒
if [ `ps -C nginx --no-header|wc -l` -eq 0 ];then -->假如nginx服务进程总数还是0则执行以下脚本
killall keepalived -->结束keepalived所有进程
fi
fi! Configuration File for keepalived
global_defs {
router_id NGINX #路由标识同一个主备必须相同
}
vrrp_script chk_nginx {
script "/root/chk_nginx.sh" #检测脚本的路径
interval 2 #脚本执行间隔
weight -5 #失败一次自己优先级降低5
}
vrrp_instance VI_1 {
state MASTER #节点状态,主节点为MASTER,备节点为BACKUP
interface ens33 #vip绑定的网络接口
virtual_router_id 17 #虚拟路由ID,方便记录可以使用IP最后一位VRID区间是0~255正证书
priority 100 #节点优先级,优先级是0~255正整数
advert_int 1
authentication { #认证
auth_type PASS #明文认证
auth_pass 1111 #认证密码
}
virtual_ipaddress {
192.168.40.17/24 #虚拟IP/掩码
}
track script { #追踪脚本
chk_nginx
}
}! Configuration File for keepalived
global_defs {
router_id NGINX #路由标识同一个主备必须相同
}
vrrp_instance VI_1 {
state BACKUP #节点状态,主节点为MASTER,备节点为BACKUP
interface ens33 #vip绑定的网络接口
virtual_router_id 17 #虚拟路由ID,方便记录可以使用IP最后一位VRID区间是0~255正证书
priority 99 #节点优先级,优先级是0~255正整数
advert_int 1
authentication { #认证
auth_type PASS #明文认证
auth_pass 1111 #认证密码
}
virtual_ipaddress {
192.168.40.17/24 #虚拟IP/掩码
}
}
}/usr/local/nginx/sbin/nginx -s stop


修改nginx配置使nginx无法启动验证主备是否会自动切换 查看主备网络接口信息
Nginx-MASTER

Nginx-BACKUP

Kill -9 nginx 进程 有可能需要kill两边

查看网口信息
ip a
验证网页

查看nginx-BACKUP的网络接口信息

再次恢复nginx-MASTER的nginx.conf文件配置,重启keepalived,验证主服务器正常上线后是否抢占MASTER

Keepalived+nginx 主备能自动切换。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。