shell实现--keepalived+nginx不抢占模式

1,在主机A上编写keepalived脚本
[root@ c7-41 ~] vim /root/keep_master.sh

#!/bin/bash
systemctl stop firewalld
setenforce 0 &> /dev/null
yum -y install keepalived
echo "正在安装keepalived服务,请稍后......"
rpm -qa |grep keepalived &> /dev/null
if [ $? -eq 0 ];then
        echo "keepalived安装成功"
else
        echo "安装失败,请处理!"
fi
cat>/etc/keepalived/keepalived.conf<<\EOF
! Configuration File for keepalived

global_defs {
   router_id 10.0.0.41       #运行keepalived的机器的一个标识,这里设置的是本机ip
   script_user root
   enable_script_security
}
vrrp_script chk_nginx {
    script "/etc/keepalived/check_port.sh 80" #这里通过脚本监测
    interval 2              #脚本执行间隔,每2s检测一次
    weight -30 				#脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 
}
vrrp_instance VI_1 { 		#keepalived在同一virtual_router_id中priority(0-255)最大的会成为master,也就是接管VIP,当priority最大的主机发生故障后次priority将会接管
    state BACKUP 			#指定keepalived的角色
    interface ens33 		#指定监测网络的接口
    virtual_router_id 51 	#虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,双机必须是一致的
    priority 100  			#定义优先级,数字越大,优先级越高
    mcast_src_ip 10.0.0.41 	# 发送多播数据包时的源IP地址
    nopreempt 				#不抢占
    advert_int 1 			#指定负载均衡器之间同步检查的时间间隔,单位是秒
    authentication { 		#设置验证类型和密码。双机必须一样
        auth_type PASS  	#设置vrrp验证类型,主要有PASS和AH两种
        auth_pass 1111 		#设置vrrp验证密码,双机必须一样
    }
    track_script { 			#执行监控的服务。注意这个设置不能紧挨着写在vrrp_script配置块的后面(实验中碰过的坑),否则nginx监控失效!!
        chk_nginx  			#引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行它们来改变优先级,并最终引发主备切换。
    }
    virtual_ipaddress { 	#VRRP HA 虚拟地址
        10.0.0.200
    }
}   
echo ""
cat>/etc/keepalived/check_port.sh<<\EOF
#!/bin/bash
CHK_PORT=$1
if [ -n "$CHK_PORT" ];then
        PORT_PROCESS=`ss -lntp|grep $CHK_PORT|wc -l`
        if [ $PORT_PROCESS -eq 0 ];then
                echo "Port $CHK_PORT Is Not Used,End."
                systemctl stop keepalived.service
        fi
else
        echo "Check Port Cant Be Empty!"
fi
EOF
echo ""
chmod +x /etc/keepalived/check_port.sh
sed -i 's/KillMode/#&/' /usr/lib/systemd/system/keepalived.service #修改keepalived启动脚本
systemctl daemon-reload
systemctl enable keepalived.service
systemctl start keepalived.service

2,在主机A上编写执行脚本
[root@ c7-41 ~] vim keep_scp.sh

#!/bin/bash
chmod +x /root/keep_master.sh #给keepalived脚本权限
./source /root/keep_master.sh #执行keepalived脚本
yum -y install sshpass &>/dev/null #安装免密登陆工具
cp -a keep_master.sh keep_backup.sh #复制keepalived脚本
sed -i 's/41/42/' keep_backup.sh #修改脚本参数
sed -i 's/100/90/' keep_backup.sh #修改脚本参数
sshpass -p 123456 scp keep_backup.sh root@10.0.0.42:/root &> /dev/null #传输脚本至主机B上
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章