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

在上一篇日志中,介紹了數(shù)據(jù)庫主從環(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ù)庫節(jié)點)
# 對于keepalived配置參數(shù),我不是很懂,很多都是照著別人的教程修改過來的
# 查閱過網(wǎng)上的很多參數(shù)詳解,不盡人意
# 所以在此我就不對參數(shù)內(nèi)容和含義進行詳細解釋了,僅僅對我有把握的幾處地方做說明
! 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的時候,相同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)重高的在初始階段會被當(dāng)做keepalived的master,占有vip
     priority 100
     advert_int 1
     nopreempt 
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
# 這個就是自己想要的vip,在規(guī)則范圍內(nèi),隨便寫
         192.168.112.88
     }
}

virtual_server 192.168.112.88 3306 {
     delay_loop 2
# lb_algo/lb_kind 這兩項注釋掉了,在不注釋掉的情況下,通過vip訪問數(shù)據(jù)庫,會發(fā)現(xiàn)3306端口號狀態(tài)為filtered,將會導(dǎo)致vip切換之后數(shù)據(jù)庫失聯(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進程宕掉之后執(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
         }
     }
# 通過監(jiān)測第三臺服務(wù)器,判斷本服務(wù)器網(wǎng)絡(luò)是否暢通
# 簡單的防腦裂,實際上這樣做很不科學(xué),有待完善
# 截至本篇日志,我還沒想出別的辦法,以后補充
     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ù)庫節(jié)點)
! 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

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

至此,MySQL互為主從、keepalived實現(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)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容