参考:https://zhuanlan.zhihu.com/p/566166393
1、关闭防火墙
2、安装keepalive
yum install -y keepalived
3、配置监测nginx是否存活
vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script nginx_check { script "/tools/nginx_check.sh" interval 1 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 52 priority 100 advert_int 1 authentication { auth_type PASS auth_pass test } virtual_ipaddress { 192.168.149.100 } track_script { nginx_check } notify_master /tools/master.sh notify_backup /tools/backup.sh notify_fault /tools/fault.sh notify_stop /tools/stop.sh }
配置解释
router_id #指定节点路由ID,每个节点必须不一致,建议用自己的主机名,且实现相互的主机名A记录解析
vrrp_instance VI_1 #VRRP实例开始的标识 VI_1为实例名称 state #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备服务器 interface #指定检测网络的网卡接口 virtual_router_id #虚拟路由标识,数字形式,同一个VRRP实例使用唯一的标识,即在同一个vrrp_instance下,master和backup必须一致 priority #节点优先级,数字越大表示节点的优先级越高,在一个VRRP实例下,MASTER的优先级必须要比BACKUP高,不然就会切换角色 advert_int #用于设定MASTER与BACKUP之间同步检查的时间间隔,单位为秒 auth_type PASS #预共享密钥认证,同一个虚拟路由器的keepalived节点必须一样 auth_pass #设置密钥 virtual_ipaddress #设置虚拟IP地址,可以设置多种形式:10.0.0.100不指定网卡,默认为eth0,注意:不指定/prefix,默认为/32;10.0.0.101/24 dev eth1 指定VIP的网卡;10.0.0.102/24 dev eth2 label eth2:1 #指定VIP的网卡label nopreempt # 设置为非抢占模式,同一实例下主备设置必须一样 preemtp_delay # 设置抢占模式的延时时间,单位为秒
脚本相关配置
vrrp_script #自定义资源监控脚本,vrrp实例根据脚本返回值进行下一步操作,脚本可被多个实例调用。 #track_script:调用vrrp_script定义的脚本去监控资源,定义在实例之内,调用事先定义的vrrp_script。实现主备切换,保证服务高可用 #vrrp_script仅仅通过监控脚本返回的状态码来识别集群服务是否正常,如果返回状态码是0,那么就认为服务正常,反之亦然。 notify_master #当前节点成为主节点时触发的脚本 notify_backup #当前节点转为备节点时触发的脚本 notify_fault #当前节点转为“失败”状态时触发的脚本 notify_stop #当停止VRRP时触发的脚本
4、编写脚本
cd /tools cat master.sh ip=$(hostname -I | awk '{print $1}') dt=$(date+'%Y%m%d %H:%M:%S') echo"$0--${ip}--${dt}">> /tmp/kp.log cat backup.sh ip=$(hostname -I | awk '{print $1}') dt=$(date+'%Y%m%d %H:%M:%S') echo"$0--${ip}--${dt}">> /tmp/kp.log cat fault.sh ip=$(ip addr|grep inet| grep 192.168 |awk '{print $2}') dt=$(date +'%Y%m%d %H:%M:%S') echo"$0--${ip}--${dt}">> /tmp/kp.log cat stop.sh ip=$(ip addr|grep inet| grep 192.168| awk '{print $2}') dt=$(date +'%Y%m%d %H:%M:%S') echo"$0--${ip}--${dt}">> /tmp/kp.log
cat nginx_check.sh #!/bin/bash result=`pidof nginx` if [ ! -z "${result}" ]; then exit 0 else exit 1 fi
5、授权脚本,启动服务
cd /tools/ && chmod +x *.sh systemctl restart keepalived.service
标签:--,ip,vrrp,sh,notify,Linux,dt,keepalive From: https://www.cnblogs.com/lfxx/p/17876757.html