MySQL互為主從及Keepalived配置vip——keepalived配置篇

在上一篇日志中,介紹了數(shù)據(jù)庫(kù)主從環(huán)境的配置,本篇將介紹keepalived配置。

1、服務(wù)器角色及ip:

服務(wù)器角色 IP VIP
master A 192.168.112.133 192.168.112.88
master B 192.168.112.135 192.168.112.88
user 192.168.112.134 -

2、 keepalived.conf 配置文件

  • master A:192.168.112.133(數(shù)據(jù)庫(kù)節(jié)點(diǎn))
# 對(duì)于keepalived配置參數(shù),我不是很懂,很多都是照著別人的教程修改過(guò)來(lái)的
# 查閱過(guò)網(wǎng)上的很多參數(shù)詳解,不盡人意
# 所以在此我就不對(duì)參數(shù)內(nèi)容和含義進(jìn)行詳細(xì)解釋了,僅僅對(duì)我有把握的幾處地方做說(shuō)明
! Configuration File for keepalived
global_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
}
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 127.0.0.1    
    smtp_connect_timeout 30

# router_id 可以理解為分組,所以在配置keepalived的時(shí)候,相同vip的服務(wù)器,應(yīng)該配置相同的router_id
    router_id HA_MySQL 
    vrrp_skip_check_adv_addr
    vrrp_strict
    vrrp_garp_interval 0
    vrrp_gna_interval 0
}

vrrp_instance HA_1 {
     state BACKUP
# interface 之后的參數(shù)是網(wǎng)卡名字
     interface ens33
     virtual_router_id 51
# 權(quán)重,權(quán)重高的在初始階段會(huì)被當(dāng)做keepalived的master,占有vip
     priority 100
     advert_int 1
     nopreempt 
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
# 這個(gè)就是自己想要的vip,在規(guī)則范圍內(nèi),隨便寫(xiě)
         192.168.112.88
     }
}

virtual_server 192.168.112.88 3306 {
     delay_loop 2
# lb_algo/lb_kind 這兩項(xiàng)注釋掉了,在不注釋掉的情況下,通過(guò)vip訪問(wèn)數(shù)據(jù)庫(kù),會(huì)發(fā)現(xiàn)3306端口號(hào)狀態(tài)為filtered,將會(huì)導(dǎo)致vip切換之后數(shù)據(jù)庫(kù)失聯(lián)
     # lb_algo rr
     # lb_kind NAT
     nat_mask 255.255.255.0
     persistence_timeout 60
     protocol TCP
     real_server 192.168.112.133 3306{
         weight 3
# 自檢程序,當(dāng)本服務(wù)器mysql進(jìn)程宕掉之后執(zhí)行的腳本(keepalived自殺腳本)
         notify_down /usr/local/keepalived_down.sh 
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 3306
         }
     }
# 通過(guò)監(jiān)測(cè)第三臺(tái)服務(wù)器,判斷本服務(wù)器網(wǎng)絡(luò)是否暢通
# 簡(jiǎn)單的防腦裂,實(shí)際上這樣做很不科學(xué),有待完善
# 截至本篇日志,我還沒(méi)想出別的辦法,以后補(bǔ)充
     real_server 192.168.112.134 22{
         weight 3
         notify_down /usr/local/keepalived_down.sh
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 22
         }
     }
}
  • master B:192.168.112.135(數(shù)據(jù)庫(kù)節(jié)點(diǎn))
! Configuration File for keepalived

global_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
}
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 127.0.0.1    
    smtp_connect_timeout 30

    router_id HA_MySQL 
    vrrp_skip_check_adv_addr
    vrrp_strict
    vrrp_garp_interval 0
    vrrp_gna_interval 0
}

vrrp_instance HA_1 {
     state BACKUP
     interface ens33
     virtual_router_id 51
     priority 90
     advert_int 1
     nopreempt 
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         192.168.112.88
     }
}

virtual_server 192.168.112.88 3306 {
     delay_loop 2
     # lb_algo rr
     # lb_kind NAT
     nat_mask 255.255.255.0
     persistence_timeout 60
     protocol TCP
     real_server 192.168.112.135 3306{
         weight 3
         notify_down /usr/local/keepalived_down.sh 
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 3306
         }
     }
      real_server 192.168.112.134 22{
         weight 3
         notify_down /usr/local/keepalived_down.sh
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 22
         }
     }
}
  • keepalived_down.sh 自殺腳本
#!/bin/bash
service keepalived stop

別忘記提升文件權(quán)限:

chmod +777 keepalived_down.sh

說(shuō)明:關(guān)于keepalived配置,相比于數(shù)據(jù)庫(kù)主從要簡(jiǎn)單得多。唯一需要注意的地方是,因?yàn)樵趉eepalived中加入了自檢腳本,所以對(duì)服務(wù)器的啟動(dòng)順序有一定要求。
需要先啟動(dòng)第三方中立的服務(wù)器,也就是配置中的192.168.112.134。否則將導(dǎo)致服務(wù)器啟動(dòng)了,keepalived進(jìn)程卻沒(méi)有啟動(dòng)。
之后,假如出現(xiàn)了數(shù)據(jù)庫(kù)服務(wù)出現(xiàn)故障,修復(fù)之后,也需要先啟動(dòng)數(shù)據(jù)庫(kù)服務(wù),再啟動(dòng)keepalived進(jìn)程。因?yàn)樵跊](méi)有mysql進(jìn)程的情況下,啟動(dòng)了keepalived也會(huì)立即自殺掉。
本篇文章中關(guān)于keepalived配置有諸多不足之處,今后逐步完善,逐步修改日志。
推薦一篇關(guān)于keepalived配置寫(xiě)的比較詳細(xì)而且好理解的博客給大家:
keepalived工作原理和配置說(shuō)明

至此,MySQL互為主從、keepalived實(shí)現(xiàn)vip漂移已經(jīng)總結(jié)完。

MySQL互為主從及Keepalived配置系列文章鏈接:

MySQL互為主從及Keepalived配置vip——環(huán)境篇
MySQL互為主從及Keepalived配置vip——主從配置篇
MySQL互為主從及Keepalived配置vip——keepalived配置篇

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容