12.keepalived+mysql 雙主架構

0、本次集羣架構如下(先搭建好主從同步):

集羣架構圖(如上)

1、分別在主、備庫上創建同步複製賬號:
create user 'bak'@'10.161.181.%' identified by 'root123';
grant replication slave on *.* to 'bak'@'10.161.181.%';
flush privileges;

2、先在備庫上10.161.181.224主機上配置同步信息:
mysql -uroot  -proot123;
change master to  master_host='10.161.181.223',master_user='bak',master_password='root123',master_auto_position=1;
start slave;

3、之後再在主庫上10.161.181.223上配置主從同步信息:
change master to  master_host='10.161.181.224',master_user='bak',master_password='root123',master_auto_position=1;
start slave;
show slave status\G;

到此,雙主同步建立完成。
備註:
允許root用戶連接(授予下面權限):mysql -h 10.161.181.223 -uroot -proot123 -P3306 -e "show status"
create user 'root'@'10.161.181.%' identified by 'root123';
grant select,insert,update,delete on root.* to 'root'@'10.161.181.%' identified by 'root123';
4、分別在兩臺主機上安裝keepalived軟件包:
https://keepalived.org/download.html (本次下載:keepalived-1.4.5.tar.gz)或yum源安裝:yum -y install keepalived;
源碼安裝:
4.1先安裝keepalived環境條件:
yum -y install curl gcc openssl-devel libnl3-devel net-snmp-devel
yum -y install libnl libnl-devel
yum install -y libnfnetlink-devel

4.2解壓安裝包:
tar -zxvf keepalived-1.4.5.tar.gz
cd keepalived-1.4.5
mkdir /usr/local/keepalived
chmod 775 /usr/local/keepalived/
./configure --prefix=/usr/local/keepalived
make && make install


make && make install如下:


4.3安裝完成,生成相應文檔:

cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/keepalived   #cp啓動腳本文檔到操作系統配置文件下:
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived    #添加keepalived啓動程序到系統環境命令:
cp  /root/wlp/keepalived-1.4.5/keepalived/etc/init.d/keepalived /etc/init.d/keepalived  #keepalived啓動腳本(源碼目錄下),放到/etc/init.d/目錄下就可以使用service命令便捷調用
mkdir /etc/keepalived  ; #將配置文件放到默認路徑下
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

添加系統服務併爲自啓動:


4.4在兩臺主機上配置檢測mysql數據庫的腳本 :
cd /etc/keepalived
vi checkmysql.sh

#!/bin/bash
#author=wlp
mysqlstr=/usr/local/mysql/bin/mysql
host=10.161.181.223
user=admin
password=root123
port=3306
##mysql service ok=1 ,else = 0
mysql_status=1

###check mysql status#####
$mysqlstr -h $host -u $user -p$password -P$port -e "show status;" >/dev/null 2>&1
if [ $? = 0 ] ; then
    echo "mysql_status=1"
    exit 0
else
    /etc/init.d/keepalived stop
fi
chmod 775 /etc/keepalived/checkmysql.sh或chmod +x /etc/keepalived/checkmysql.sh
4.5創建checkmysql.sh腳本檢查用戶:
創建admin管理用戶:
create user 'admin'@'10.161.181.%' identified by 'root123';
grant all privileges on *.* to 'admin'@'10.161.181.%';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'root123' WITH GRANT OPTION;
flush privileges;

4.6修改兩臺主機keepalived配置文件:
223主機1:
vi /etc/keepalived/keealived.conf

! Configuration File for keepalived
vrrp_script vs_mysql_223 {
    script "/etc/keepalived/checkmysql.sh"
    interval 10
}

vrrp_instance VI_223 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 223
    priority 223
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass root123
    }
    track_script {
        vs_mysql_223
    }
    virtual_ipaddress {
        10.161.181.226
    }
}
224主機2:

! Configuration File for keepalived
vrrp_script vs_mysql_224 {
    script "/etc/keepalived/checkmysql.sh"
    interval 10
}

vrrp_instance VI_224 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 223
    priority 90
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass root123
    }
    track_script {
        vs_mysql_224
    }
    virtual_ipaddress {
        10.161.181.226
    }
}
4.7啓動兩臺主機keepalived進程:




使用另外一臺mysql 225,測試 vip是否可以連接到主庫223:

show status\s確定連接爲vip:

到此雙主架構建立完成。
5.故障模擬切換:
在主庫上關閉mysql服務:/usr/local/mysql/bin/mysqladmin -uroot -proot123 shutdown
查看keepalived日誌情況:tail -f /var/log/messages(vip removed &&keepalived stop)
備庫上查看keepalived日誌:tail -f /var/log/messages (keepalived backup轉換爲master&& vip切換到備機上)
此上不影響用戶使用,轉換時會間斷:mysql -uadmin -proot123 -h10.161.181.226
show status \s;



在225上通過vip驗證:

再把223主機mysql服務開啓:service mysqld start;
檢查同步,都正常了:mysql -uroot -proot123 ; show slave status\G;
切換原主節點到223:啓動223上主機keepalived:/etc/init.d/keepalived start;
關閉224上mysql:mysqladmin -uroot -proot123  shutdown;
檢查vip和mysql同步:已經切換到223節點並且服務正在連接:

開啓224上mysql並檢查主從同步:service mysqld restart

VIP測試連接正常:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章