第一步:安装keepalived
[root@lb01 ~]# yum install -y keepalived
第二步:修改配置文件
[root@lb01 ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@lb01 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一
router_id keep_101
}
vrrp_script check_web {
script "/etc/keepalived/check_web.sh" # 脚本存放的位置
interval 2 # 每隔两秒运行上一行脚本
weight -20 # 如果脚本运行成功,则升级权重-20,自动切换到备
}
vrrp_instance VI_1 {
# 主机=MASTER;备用机=BACKUP
state MASTER
# 该实例绑定的网卡名称
interface ens33
# 保证主备节点一致
virtual_router_id 51
# 权重,master值 > backup值
priority 100
# 主备组播报发送间隔时间2秒
advert_int 2
# 认证权限密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
10.0.0.3
}
# 调用监控脚本
track_script {
check_web
}
}
第三步:编写nginx监控脚本,如果nginx服务停止,则keepalived服务也停止,并切换到备主机
[root@lb01 ~]# vim /etc/keepalived/check_web.sh
#!/bin/bash
num=`ps -C nginx --no-header |wc -l`
if [ $num -eq 0 ]
then
systemctl stop keepalived
fi
[root@lb01 ~]# chmod +x /etc/keepalived/check_web.sh
ps:第二种方式,如果nginx服务停止,则只切换到备主机,keepalived服务并不停止
[root@lb01 ~]# vim /etc/keepalived/check_web.sh #!/bin/bash num=`ps -ef|grep -c [n]ginx` if [ $num -eq 0 ] then exit 1 else exit 0 fi [root@lb01 ~]# chmod +x /etc/keepalived/check_web.sh
第四步:启动、开机自启keepalived服务
[root@lb01 ~]# systemctl start keepalived [root@lb01 ~]# systemctl enable keepalived
第五步:查看keepalived服务状态;查看虚拟IP生效情况;
[root@lb01 ~]# ps -ef|grep "keepalived" root 1647 1 0 09:35 ? 00:00:00 /usr/sbin/keepalived -D root 1648 1647 0 09:35 ? 00:00:00 /usr/sbin/keepalived -D root 1649 1647 0 09:35 ? 00:00:00 /usr/sbin/keepalived -D root 1706 1191 0 10:11 pts/0 00:00:00 grep --color=auto keepalived [root@lb01 ~]# ip a 2: ens33:主备服务器配置(备):mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:fb:05:d3 brd ff:ff:ff:ff:ff:ff inet 10.0.0.5/24 brd 10.0.0.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet 10.0.0.3/32 scope global ens33 # 此处为创建出的虚拟IP valid_lft forever preferred_lft forever inet6 fe80::be70:f662:30f9:ed7b/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever inet6 fe80::b2c2:a66b:86bf:3a1/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever inet6 fe80::3b1b:133e:a53:1683/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever
第一步:安装keepalived ----略
第二步:修改配置文件
[root@lb02 ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@lb02 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
router_id keep_102 #此处id修改为唯一标识
}
vrrp_script check_web {
script "/etc/keepalived/check_web.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP #此处名称修改为备
interface ens33
virtual_router_id 51
priority 90
advert_int 2
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3
}
track_script {
check_web
}
}
第三步:编写nginx监控脚本 ----略
第四步:启动、开机自启keepalived服务 ----略
第五步:查看keepalived服务状态; ----略
开始测试:如果主服务器nginx服务停止,则自动切换到备主机ps:主备服务器 keepalived + nginx 服务都处于开启的状态
[root@lb01 keepalived]# ps -ef|grep "nginx|keepalived" root 30384 1 0 14:40 ? 00:00:00 nginx: master process /usr/sbin/nginx nginx 30385 30384 0 14:40 ? 00:00:00 nginx: worker process nginx 30386 30384 0 14:40 ? 00:00:00 nginx: worker process root 32449 1 0 15:05 ? 00:00:00 /usr/sbin/keepalived -D root 32450 32449 0 15:05 ? 00:00:00 /usr/sbin/keepalived -D root 32451 32449 0 15:05 ? 00:00:00 /usr/sbin/keepalived -D root 32458 1191 0 15:06 pts/0 00:00:00 grep --color=auto nginx|keepalived
第一步:查看虚拟IP在哪台主机,结果为主服务器。
[root@lb01 ~]# ip a|grep "10.0.0.3"
inet 10.0.0.3/32 scope global ens33
[root@lb02 ~]# ip a|grep "10.0.0.3"
第二步:浏览器访问虚拟IP
第三步:停止主服务器 nginx 服务,并查看nginx + keepalived服务状态
[root@lb01 ~]# systemctl stop nginx [root@lb01 ~]# ps -ef|grep "nginx|keepalived" root 34807 1191 0 15:42 pts/0 00:00:00 grep --color=auto nginx|keepalived # ps:停止主服务器nginx服务,keepalived服务监控的脚本自动生效,会执行以下结果 # 1.停止keepalived服务 # 2.降级权重为80 # 3.自动切换到备服务器
第四步:查看是否已经自动切换到备服务器
[root@lb02 ~]# ip a|grep "10.0.0.3"
inet 10.0.0.3/32 scope global ens33
第五步:浏览器访问虚拟IP



