天天看點

MySQL + keepalived 當機自動切換

上一篇介紹了MySQL的雙主備份,本次總結keepalived的安裝與使用。

MySQL的雙主備份:https://blog.csdn.net/u011144417/article/details/84614933

參考資料

mysql雙機熱備的實作 : https://blog.csdn.net/qq394829044/article/details/53203645

keepalived :http://www.cnblogs.com/guantou1992/p/9729465.html

windows+ubuntu雙系統安裝:https://www.linuxidc.com/Linux/2016-04/130520.htm

Ubuntu 安裝keepalived:https://blog.csdn.net/lvshanhshan/article/details/80559437

環境

系統:Ubuntu -16.04.3  

A伺服器:192.168.1.201

B伺服器:192.168.1.201

keepalived IP:192.168.1.200

安裝基本依賴庫

apt-get install keepalived libpop-dev libssl-dev openssl daemon
           

安裝keepalived

apt-get install keepalived
           

我的機器不知道為什麼,/etc/keepalievd目錄是空的,于是進行離線安裝。

keepalived下載下傳位址:www.keepalived.org/software  

我下載下傳後放到了/usr/local/src目錄下。

tar zxvf keepalived-1.2.18.tar.gz

cd keepalived-1.2.18

./configure --prefix=/usr/local/keepalived

make && make install
           

keepalived的配置

mkdir /etc/sysconfig

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

cp /usr/local/keepalived/sbin/keepalived /sbin/
           

把keepalived 的配置檔案放到/etc/keepalived 下,keepalived預設會讀取這個檔案。

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
           

編輯配置檔案,修改以下的内容即可:

vi /etc/keepalived/keepalived.conf
           

參考如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]  # 報警郵件接收人的位址
   }
   notification_email_from [email protected] # 發送報警郵件發件人位址
   smtp_server 127.0.0.1                           # 發送郵件的伺服器位址
   smtp_connect_timeout 30                     # 郵件逾時時間(可以根據自己的需求進行設定)
   router_id LVS_DEVEL                         # 一個執行個體的辨別位址(可以有多個執行個體但不能相同)
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script monitor_nginx {

  script "/opt/chk_mysql.sh"  #根據自己的實際路徑放置腳本檔案
  interval 2                  # 腳本執行間隔
  Weight -5                   #腳本結果導緻的優先級變更:5表示優先級加5;-5表示優先級減5
  fall 2                 
  rise 1 
}

vrrp_instance VI_1 {
    state MASTER           # 設定伺服器模式master端 從伺服器設定為BACKUP
    interface enp2s0       # 執行個體網卡,也就是提供服務的網卡,可通過ifconfig
    virtual_router_id 51   # 設定vrid 主從伺服器設定一樣
    priority 101           # 設定本節點的優先級,優先級高的為master
    advert_int 1           # 檢查間隔,預設為1秒
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.200      # 設定vip,虛拟ip位址
    }
ck_script {               
   chk_mysql_port             
}
}
           

chk_mysql.sh内容如下:

#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]; then
    service keepalived stop
fi
           

将keepalived作為系統啟動服務

mkdir -p /etc/rc.d/init.d

cp /usr/share/initramfs-tools/scripts/functions /etc/rc.d/init.d/

vi /etc/init.d/keepalived +23
           

修改如下:

#daemon keepalived ${KEEPALIVED_OPTIONS}#注釋目前行,添加如下内容

 daemon keepalived start
           

建立subsys目錄

mkdir /var/lock/subsys 
           

(注意: 此目錄在伺服器重新開機後會消失,需要将其寫到開機啟動項中;如寫到/etc/rc.local裡)

開機自啟動

vi /etc/rc.local 
           

修改為以下内容即可:

mkdir /var/lock/subsys

service keepalived start

exit 0
           

啟動keepalived

service keepalived start
           

驗證

ip addr show
           

從伺服器的ip addr show 是不會有192.168.1.200 這個ip位址的,除非等master伺服器當機後,成為主節點後就會自動生成這個虛拟IP位址的,當master伺服器正常後就會自動消失。

遇到的問題解決方案

-------------------------------------

1、啟動錯誤 Unit keepalived.service is masked.

keepalived.service 拷貝覆寫/lib/systemd/system/keepalived.service

在/var/run/下建立一個檔案touch keepalived.pid

修改之後 運作systemctl daemon-reload#重新載入 systemd

2、Failed to start LVS and VRRP High Availability Monitor

去/lib/systemd/system/keepalived.service配置檔案中是否有目錄或檔案錯誤。

修改之後 運作systemctl daemon-reload#重新載入 systemd

配置systemctl常用指令

systemctl daemon-reload  重新加載

systemctl enable keepalived.service  設定開機自動啟動

systemctl disable keepalived.service 取消開機自動啟動

systemctl start keepalived.service 啟動

systemctl stop keepalived.service停止

繼續閱讀