keepalive+nginx
没有了 lvs 做ip的负载均衡
master:
global_defs { router_id op_esb_61_vip #MASTER和BACKUP不同 vrrp_mcast_group4 224.0.0.24 #指定vrrp的多播ipv4地址,默认是224.0.0.18 } vrrp_script chk_nginx { script "/opt/shell/check.sh" ##检查本地nginx是否存活脚本需要自己写,后面会有该脚本内容 interval 1 weight -15 } vrrp_instance nginx_01 { # 实例,一个vip一个实例 state MASTER #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态 interface ens192 virtual_router_id 27 #虚拟路由标识,同一个vrrp_instance的MASTER和BACKUP的vitrual_router_id 是一致的 priority 100 #优先级,同一个vrrp_instance的MASTER优先级必须比BACKUP高 advert_int 1 #MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒 #健康检测频率 authentication { auth_type PASS auth_pass caVrLF8C } virtual_ipaddress { 10.32.62.27 ##VIP } track_script { chk_nginx } notify_master "/opt/shell/notify.sh master" notify_backup "/opt/shell/notify.sh backup" notify_fault "/opt/shell/notify.sh fault" }
slave:
global_defs { router_id op_esb_62_vip #MASTER和BACKUP不同 vrrp_mcast_group4 224.0.0.24 #指定vrrp的多播ipv4地址,默认是224.0.0.18 } vrrp_script chk_nginx { script "/opt/shell/check.sh" interval 1 weight -15 } vrrp_instance nginx_01 { # 实例,一个vip一个实例 state BACUP #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态 interface ens192 virtual_router_id 27 #虚拟路由标识,同一个vrrp_instance的MASTER和BACKUP的vitrual_router_id 是一致的 priority 90 #优先级,同一个vrrp_instance的MASTER优先级必须比BACKUP高 advert_int 1 #MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒 #健康检测频率 authentication { auth_type PASS auth_pass caVrLF8C } virtual_ipaddress { 10.32.62.27 ##VIP } track_script { chk_nginx } notify_master "/opt/shell/notify.sh master" notify_backup "/opt/shell/notify.sh backup" notify_fault "/opt/shell/notify.sh fault" }
shell脚本:
check.sh
#!/bin/bash nginxpid=`ps -C nginx --no-header|wc -l` if [ $nginxpid -eq 0 ];then /usr/local/nginx/sbin/nginx -s start sleep 2 nginxpid=`ps -C nginx --no-header|wc -l` if [ $nginxpid -eq 0 ];then systemctl stop keepalived exit 1 fi fi
notify.sh
#!/bin/bash # 通知脚本:具体操作 if [ "$1" == "master" ] ; then echo "`date '+%F %T'`:切换到主机模式" >> /var/log/keepalived/keepalived.log elif [ "$1" == "backup" ] ; then /usr/bin/systemctl start nginx echo "`date '+%F %T'`:切换到备机模式" >> /var/log/keepalived/keepalived.log else /usr/bin/systemctl start nginx echo "`date '+%F %T'`:宕机" >> /var/log/keepalived/keepalived.log fi

浙公网安备 33010602011771号