1.keepalived安裝
參考centos7下keepalived1.4.0安裝啟動卸載章節(jié):http://www.reibang.com/p/f987f7e449ab
2.mysql主主配置
參考centos7下mysql5.7主主復(fù)制章節(jié):http://www.reibang.com/p/ed10e4162c68
3.keepalived配置
VIP:192.168.133.142,centos7
IP1:192.168.133.140奶是,centos7
IP2:192.168.133.141甥温,centos7
其中IP1的keepalived配置(本人配置文件在/etc/keepalived/keepalived.conf中)內(nèi)容如下:
! Configuration File for keepalived
global_defs {
? router_id mysql-1
}
vrrp_instance VI_1 {
? ? state BACKUP
? ? interface eth0
? ? virtual_router_id 51
? ? priority 100
? ? advert_int 1
? ? authentication {
? ? ? ? auth_type PASS
? ? ? ? auth_pass 1111
? ? }
? ? virtual_ipaddress {
? ? ? ? 192.168.133.142//VIP地址
? ? }
}
virtual_server 192.168.133.142 3306 {
? ? delay_loop 6
? ? lb_algo rr
? ? lb_kind NAT
? ? persistence_timeout 50
? ? protocol TCP
? ? real_server 192.168.133.140 3306 {
? ? ? ? weight 3
? ? ? ? notify_down /etc/keepalived/bin/mysql.sh ?//這個配置在keepalived1.4.0中好像有點問題咒唆,后續(xù)會說
? ? ? ? TCP_CHECK {
? ? ? ? ? ? ? ? ?connect_timeout 3
? ? ? ? ? ? ? ? ?retry 3
? ? ? ? ? ? ? ? ?delay_before_retry 3
? ? ? ? ? ? ? ? ?connect_port 3306
? ? ? ? }
? ? }
}
IP2的keepalived配置內(nèi)容如下:
! Configuration File for keepalived
global_defs {
? router_id mysql-2
}
vrrp_instance VI_1 {
? ? state BACKUP
? ? interface eth0
? ? virtual_router_id 51
? ? priority 50
? ? advert_int 1
? ? authentication {
? ? ? ? auth_type PASS
? ? ? ? auth_pass 1111
? ? }
? ? virtual_ipaddress {
? ? ? ? 192.168.133.142//VIP地址
? ? }
}
virtual_server 192.168.133.142 3306 {
? ? delay_loop 6
? ? lb_algo rr
? ? lb_kind NAT
? ? persistence_timeout 50
? ? protocol TCP
? ? real_server 192.168.133.141 3306 {
? ? ? ? weight 3
? ? ? ? notify_down /etc/keepalived/bin/mysql.sh
? ? ? ? TCP_CHECK {
? ? ? ? ? ? ? ? ? ? ? connect_timeout 3
? ? ? ? ? ? ? ? ? ? ? retry 3
? ? ? ? ? ? ? ? ? ? ? delay_before_retry 3
? ? ? ? ? ? ? ? ? ? ? connect_port 3306
? ? ? ? }
? ? }
}
上述配置配好后,重啟keepalived:service keepalived restart
(4)驗證
本人的VIP地址所屬服務(wù)器是centos7献汗,每次也需要開啟這個服務(wù)器才能夠使用這個IP准给,好像也有其他方式不需要開啟這個服務(wù)器,具體就沒去了解了描滔。
開啟后首先在宿主機win7下使用navicate分別使用VIP棒妨、IP1、IP2連接數(shù)據(jù)庫含长,如果連接不同請考慮是否是網(wǎng)絡(luò)或者防火墻問題券腔。
連接成功后,可以看到VIP默認(rèn)是在IP1上拘泞,這時停止IP1上的mysql服務(wù):service mysqld stop纷纫。
網(wǎng)上說停止后keepalived本應(yīng)該能通過notify_down監(jiān)測到mysql停止事件,執(zhí)行對應(yīng)notify_dowm設(shè)置的mysql.sh腳本陪腌,停止keepalived運行辱魁,只有停止IP1上的keepalived運行烟瞧,VIP才能自動切換到IP2上。(也有說是當(dāng)real server宕掉或啟動時才會執(zhí)行這里的腳本)
但本人這里并沒有執(zhí)行該腳本染簇,可能因為keepalived的版本原因参滴,本人是直接通過命令:service keepalived stop方式停止的,停止后锻弓,在win7的navicate上重新用VIP地址連接砾赔,連接成功說明已經(jīng)切換到IP2上了。
附注:
mysql.sh內(nèi)容
#!/bin/bash
pkill keepalived
/sbin/ifdown eth0 && /sbin/ifup eth0
即殺死keepalived線程青灼,然后重新啟動網(wǎng)絡(luò)暴心。但是本人使用時,當(dāng)mysql服務(wù)停止杂拨,并未執(zhí)行該腳本专普。這個最新版本的keepalived里面有些屬性有點變動,比如TCP_CHECK 里的retry關(guān)鍵字扳躬,在低版本是nb_get_retry脆诉。由于未找到新版本的配置屬性說明甚亭,這里就沒有太多深入去了解贷币。