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上
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章