【MySQL進階】Keepalived1.4.0結合MySQL 5.7.19實現主備高可用

一、基本環境

數據庫安裝及主備同步接上一篇文章:http://www.javashuo.com/article/p-qypjfihi-gk.html
JDK 1.8_171
MySQL 5.7.19
CentOS 7.4
Keepalived 1.4.0
DB1:192.168.200.180
DB2:192.168.200.181
VIP: 192.168.200.99
【MySQL進階】Keepalived1.4.0結合MySQL 5.7.19實現主備高可用mysql

二、下載安裝Keepalived

2.一、keepalived下載

下載地址:wget http://www.keepalived.org/software/keepalived-1.4.0.tar.gz

2.二、keepalived安裝

2臺均按照此種方式進行安裝c++

yum install gcc gcc-c++ make openssl openssl-devel net-snmp-devel psmisc ipvsadm libnfnetlink-devel popt popt-devel popt-static openssl-devel kernel-devel libnl libnl-devel -y    # 安裝依賴

cd /usr/local/src
tar -zvxf keepalived-1.4.0.tar.gz    # 解壓
cd keepalived-1.4.0
./configure --prefix=/usr/local/keepalived --enable-snmp    # 編譯
make && make install    # 安裝
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/    # 拷貝配置
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
ln -s /usr/local/keepalived/sbin/keepalived /sbin/keepalived

2.三、Keepalived配置

DB1上面的配置:sql

[root@mysql01 keepalived-1.4.0]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak
[root@mysql01 keepalived-1.4.0]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     nvidiacheng@163.com
   }
   notification_email_from nvidiacheng@163.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id Node_Master
}

vrrp_instance VI_1 {
    state BACKUP          # 可配置master和backup模式,爲了防止腦裂現象,主備均須要設置爲backup模式,master模式會搶佔VIP
    interface ens33      # 網卡名
    virtual_router_id 43     # VRRP組名,兩個節點的設置必須同樣,以指明各個節點屬於同一VRRP組
    priority 100      # 權重,主節點要大於備節點
    unicast_src_ip  192.168.200.180     # 本地IP地址
    unicast_peer {
                  192.168.200.181     # 對端IP地址,此地址必定不能忘記
                 }
    nopreempt            # 配合backup,防止切換後,主庫服務恢復正常後,IP漂移過來
    advert_int 1          # 組播信息發送間隔,兩個節點設置必須同樣
    authentication {     # 設置驗證信息,兩個節點必須一致
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {   
        192.168.200.99      # VIP地址
    }
}
virtual_server 192.168.200.99 3306 {
    delay_loop 6
    lb_algo wrr          
    lb_kind DR           
    persistence_timeout 50
    protocol TCP

    real_server 192.168.200.180 3306 {
      weight 1
      notify_down /etc/keepalived/mysql.sh 
      TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3 
      delay_before_retry 3
      connect_port 3306 
        }
    }
}

 
DB2上面配置數據庫

[root@mysql02 keepalived-1.4.0]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak
[root@mysql02 keepalived-1.4.0]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
  global_defs {
      notification_email {
      nvidiacheng@163.com
      }
      notification_email_from nvidiacheng@163.com
      smtp_server 127.0.0.1
      smtp_connect_timeout 30
      router_id Node_backup
     }
 vrrp_instance VI_1 {
      state BACKUP
      interface ens33
      virtual_router_id 43
      priority 90                  
      unicast_src_ip  192.168.200.181
      unicast_peer {
                  192.168.200.180
                   }
      advert_int 1
      authentication {
      auth_type PASS
      auth_pass 1111
      }
      virtual_ipaddress {
      192.168.200.99
      }
      }
 virtual_server 192.168.200.99 3306 {
      delay_loop 2                 
      lb_algo wrr                  
      lb_kind DR                  
      persistence_timeout 60 
      protocol TCP 

      real_server 192.168.200.181 3306{
      weight 1
      notify_down /etc/keepalived/mysql.sh
      echo '3' >  /etc/keepalived/t.log
      TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3     
      delay_before_retry 3
      connect_port 3306 
      }
      }
}

mysql.sh腳本配置內容(2臺同樣):vim

[root@mysql01 keepalived]# vim /etc/keepalived/mysql.sh
#!/bin/bash
run_status=`service keepalived status|grep running|wc -l`
pro_status=`ps -ef |grep keepalived|grep -v grep |wc -l`

service keepalived stop

if [ ${run_status} != 0 ] || [ ${pro_status} != 0 ]
then
   pkill keepalived
fi

給mysql.sh賦可執行權限bash

[root@mysql01 keepalived]# chmod +x mysql.sh

都配置好後啓動keepalived進行測試:ide

service keepalived start   # 啓動Keepalived
service keepalived restart   # 重啓Keepalived
service keepalived stop   # 中止Keepalived
service keepalived status   # 查看Keepalived運行狀態
ps aux | grep keepalived   # 查看Keepalived進程

【MySQL進階】Keepalived1.4.0結合MySQL 5.7.19實現主備高可用

3.三、測試Keepalived

2臺均啓動Keepalived後,分別查看網卡
【MySQL進階】Keepalived1.4.0結合MySQL 5.7.19實現主備高可用
【MySQL進階】Keepalived1.4.0結合MySQL 5.7.19實現主備高可用
從上圖能夠看出,VIP地址在主節點
 
使用Navicat工具分別鏈接2個節點和VIP節點
【MySQL進階】Keepalived1.4.0結合MySQL 5.7.19實現主備高可用
這個時候咱們將節點1的MySQL中止,模擬主節點數據庫故障來測試VIP是否會漂移到備節點
【MySQL進階】Keepalived1.4.0結合MySQL 5.7.19實現主備高可用
如上圖,主節點MySQL中止後,Keepalived進程也結束了,VIP地址不見了
 
查看備節點的網卡,發現VIP已經漂移過來了
【MySQL進階】Keepalived1.4.0結合MySQL 5.7.19實現主備高可用
 
用Navicat打開VIP,能夠正常訪問,主節點沒法打開
【MySQL進階】Keepalived1.4.0結合MySQL 5.7.19實現主備高可用
從新啓動主節點MySQL服務和Keepalived服務,在中止備節點測試(略過)
 
到此,結合前2篇文章,MySQL 5.7.19在CentOS 7.4操做系統上的安裝,同步配置,高可用配置已經所有完成!工具

相關文章
相關標籤/搜索