點擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!
keepalived安裝
yum -y install keepalived
默認(rèn)配置在 /etc/keepalived下
systemctl start keepalived //啟動keepalived
systemctl enable keepalived //加入開機(jī)啟動keepalived
systemctl restart keepalived //重新啟動keepalived
systemctl status keepalived //查看keepalived狀態(tài)
10.xx.xx.30
配置keepalived
修改默認(rèn)配置文件:
! Configuration File for keepalived
#指定mysql服務(wù)檢測腳本
vrrp_script chk_mysql {
script "/etc/keepalived/scripts/chk_mysql.sh" #腳本路徑
interval 2 #腳本檢測頻率
weight -5 #腳本執(zhí)行返回值 =0 ,優(yōu)先級不變。!=0 時優(yōu)先級 -5
fall 3 #如果連續(xù)三次檢測失敗,認(rèn)為節(jié)點服務(wù)不可用
rise 2 #如果連續(xù)2次檢查成功則認(rèn)為節(jié)點正常
}
#監(jiān)測mysql 是否是master
vrrp_script chk_mysql_master {
script "/etc/keepalived/scripts/chk_mysql_master.sh"
interval 2
weight 10 #腳本執(zhí)行返回值 =0 ,優(yōu)先級加 10。!=0 時優(yōu)先級不變。
}
vrrp_instance VI_1 {
state MASTER #指定實例初始狀態(tài),實際的MASTER和BACKUP是選舉決定。
interface eth0 #指定實例綁定的網(wǎng)卡。
virtual_router_id 88 #設(shè)置VRID標(biāo)記(0..255)
priority 100 #設(shè)置優(yōu)先級,優(yōu)先級高的會被競選為Master
advert_int 1 #檢查的時間間隔,默認(rèn)1s
authentication { #節(jié)點間的認(rèn)證,所有的必須一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.xx.xx.24/24
}
track_script { #指定前面腳本的名字
chk_mysql
chk_mysql_master
}
}
三個配置文件的區(qū)別只有priority 權(quán)重,節(jié)點1-3分別為100,98,96。通過其中兩個腳本判斷MySQL狀態(tài)以及MGR主節(jié)點在哪臺服務(wù)器上,提升權(quán)重。權(quán)重的提升合理分配,確保三個服務(wù)器每臺提升權(quán)重后,均可以權(quán)重最高,實現(xiàn)VIP漂移。
腳本一:
#!/bin/bash
counter=`netstat -tulnp |grep -w :::3306 |wc -l`
if [ $counter -eq 0 ]; then
systemctl stop keepalived
fi
監(jiān)測MySQL服務(wù)的狀態(tài)。
腳本二:
#!/bin/bash
source ~/.bash_profile
source /etc/profile
PID1=`mysql -uroot -p1qsx@WAZ -S /home/my3306/run/mysql.sock -e "SELECT * FROM performance_schema.replication_group_members WHERE MEMBER_ID = (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME= group_replication_primary_member)" 2>/dev/null |awk NR==2{print}|awk -F" " {print $2}`
PID2=`mysql -uroot -p1qsx@WAZ -S /home/my3306/run/mysql.sock -e "select @@global.server_uuid" 2>/dev/null |awk NR==2{print}`
RES=$(echo $PID1 | grep "${PID2}")
if [[ ${RES} != "" ]]; then exit 0; fi
exit 1
監(jiān)控當(dāng)前節(jié)點uuid是否為主節(jié)點的uuid,是的話就提升權(quán)重,否則權(quán)重不變。
我的環(huán)境腳本2在判斷兩個變量是否相同時,沒有進(jìn)入判斷邏輯,返回值始終為0,在腳本里添加引用了環(huán)境變量,就正常了。
腳本均需要添加執(zhí)行權(quán)限:
chmod +x chk_mysql*
驗證IP漂移
三個節(jié)點啟動keepalived后,檢查VIP(24)在1節(jié)點(25)上,因為1節(jié)點權(quán)重最高,并且1節(jié)點為主庫。
當(dāng)前數(shù)據(jù)庫節(jié)點狀態(tài):
模擬主節(jié)點宕機(jī):
此時檢查MGR集群,發(fā)現(xiàn)主庫是unreachable狀態(tài),此時MySQL集群還未發(fā)生重新選舉主節(jié)點。
觀察VIP,發(fā)現(xiàn)已經(jīng)漂移到節(jié)點2上去了,因為此時2節(jié)點的權(quán)重高,所以在MySQL未選取出新主之前,VIP漂移到了2節(jié)點。
等MySQL選舉完后,觀察節(jié)點信息發(fā)現(xiàn)3節(jié)點成為主節(jié)點:
隨后再觀察VIP,發(fā)現(xiàn)識別到了新的主節(jié)點3節(jié)點,并提升了權(quán)重,VIP漂移到了3節(jié)點上:
最終VIP切換成功至主節(jié)點宕機(jī)后新選取的主節(jié)點上。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129210.html
摘要:前提配置環(huán)境變量準(zhǔn)備服務(wù)器或者虛擬機(jī),以及環(huán)境,這個是必須的前提啊,我相信你可以的。關(guān)掉主機(jī),主機(jī)監(jiān)控到無后,自動切換 前提-配置java環(huán)境變量 準(zhǔn)備centos服務(wù)器或者虛擬機(jī),以及JAVA環(huán)境,這個是必須的前提啊,我相信你可以的。 tomcat # 下載 curl http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bi...
閱讀 1359·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1908·2023-01-11 13:20
閱讀 4166·2023-01-11 13:20
閱讀 2759·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3673·2023-01-11 13:20