mysql遠程訪問,主從/主主雙機備份,以及使用keeplived實現故障自動切換(二)

3. 雙機故障切換

  Keepalived的作用是檢測服務器的狀態,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepalived自動將服務器加入到服務器羣中。
  

(1)在兩臺主機上分別裝上Keepalived。

   由於在安裝過程中遇到很多坑,故將步驟描述一下


 1. 下載keepalived-1.2.21.tar.gz。不同版本目錄結構有一定區別,以下步驟不一定適用於其他版本。
 2. 在/usr/local/目錄下,tar zxvf keepalived-1.2.21.tar.gz
 3. cd keepalived-1.2.21 
 4. ./configure => make => make install
 5. ln -s /usr/local/keepalived-1.2.21/bin/keepalived /usr/bin/keepalived //將keepalived命令軟連接到/usr/bin下
 6. cp /usr/local/keepalived-1.2.21/keepalived/etc/init.d/keepalived.init /etc/init.d/keepalived //這三步添加啓動腳本且方便用service管理
 7. chmod 755 /etc/init.d/keepalived //添加執行權限
 8. chkconfig keepalived on //開機啓動
 9. 修改/etc/init.d/keepalived中的配置文件路徑,將. /etc/sysconfig/keepalived改爲. /usr/local/keepalived-1.2.21/keepalived/etc/init.d/keepalived.sysconfig
 10. mkdir /etc/keepalived
 11. ln -s /usr/local/keepalived-1.2.21/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
 12. service keepalived restart

(2)主服務器keepalived配置
  
  /etc/keepalived/keepalived.conf編輯如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     ***@163.com
   }
   notification_email_from ***@163.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   #router_id MYSQL_HA
   #vrrp_skip_check_adv_addr
   #vrrp_strict
   #vrrp_garp_interval 0
   #vrrp_gna_interval 0
}

vrrp_script check_mysql {
    script "/usr/local/keepalived-1.2.21/check_mysql.sh" #定義監控mysql進程的腳本  
    interval 2 ##監控時間間隔  
    weight 2 #負載參數  
}

vrrp_sync_group VG1 {
     group {
        VI_1
     }
}

vrrp_instance VI_1 {
    state MASTER
    interface eno16777736 #通過ifconfig查看網卡名稱
    virtual_router_id 51 #虛擬路由的標誌,一組lvs的虛擬路由標識必須相同,這樣才能切換
    priority 100 #服務啓動優先級,值越大,優先級越高,BACKUP 不能大於MASTER
    advert_int 1 #服務器之間的存活檢查時間  
    nopreempt #不主動搶佔資源,只在master這臺優先級高的設置,backup不設置
    authentication {
        auth_type PASS #認證類型  
        auth_pass 1111 #認證密碼,一組lvs 服務器的認證密碼必須一致  
    }

    track_script {
    check_mysql
    }    

    virtual_ipaddress {
        172.16.188.135
    }
}

/usr/local/keepalived-1.2.21/check_mysql.sh如下,通過能否連接mysql來監控服務器是否可用

#! /bin/bash

MYSQL=/usr/bin/mysql
MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PASSWORD=123

$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD -e "show status;" > /dev/null 2>&1

if [ $? == 0 ]
then
    echo "$MYSQL_HOST mysql login successfully"
    exit 0
else
    /etc/init.d/keepalived stop
    exit 2
fi

(3)另一臺服務器keepalived配置
  
  與第(2)步中基本一致,除了

  • state 設爲 BACKUP
  • priority設爲90
  • nopreempt不設置

注意:interface eno16777736 #通過ifconfig查到網卡名稱爲eno16777736

(4)兩臺主機防火牆配置
  由於Centos7中用firewalld替代了iptables, 考慮到以下的配置,選擇關閉firewall並安裝iptables。

 1、關閉firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啓動

 2、安裝iptables防火牆
yum install iptables-services #安裝
在/etc/sysconfig/iptables防火牆配置文件中添加以下3行

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -d 172.16.188.135/32 -j ACCEPT#172.16.188.135爲虛擬主機地址
-A INPUT -d 224.0.0.18 -j ACCEPT#添加VRRP通訊支持


systemctl restart iptables.service #最後重啓防火牆使配置生效
systemctl enable iptables.service #設置防火牆開機啓動

重要提示:不能刪除firewall,否則會刪除很多關聯的系統組件

以上步驟,即實現了故障自動切換。可通過以下方式驗證。

  • 通過ip addr命令查看VIP位於哪臺服務器上
  • 通過mysql -h 172.16.188.135 -u user -p看能否連接成功

注:當故障恢復的時候,要關閉重啓keepalived,否則VIP無法自動切換回來

4. 參考文章

  1. 學一點 mysql 雙機異地熱備份—-快速理解mysql主從,主主備份原理及實踐 http://www.cnblogs.com/shuidao/p/3551238.html
  2. mysql主從複製配置操作以及主主配置宕機切換演練 http://blog.csdn.net/kjsayn/article/details/51350691
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章