MySQL主主+Keepalived高可用

注:我這裏是ansible腳本跑的腳本我會放在網盤裏需要的直接拉就行

環境準備

系統 Centos7
Mysql IP
Master_ip 192.168.17.52
Slave_ip 192.168.17.53
Keepalived IP
Master_ip 192.168.17.52
Master_ip 192.168.17.53

安裝Mysql主主

提取碼:u3gd
在這裏插入圖片描述

執行腳本的時候需要在vars裏面更改一下vip_ip的IP這裏面是你想要給虛擬IP授權的IP
在這裏插入圖片描述

mysql.yml文件也在網盤的壓縮包裏
在這裏插入圖片描述

執行腳本

注:腳本里面直接把master和slave的IP提取出來了 | zabbix_mysql_hosts是在host裏面寫的IP

ansible-playbook /etc/ansible/playbooks/mysql_ha.yml --extra-vars "hosts=zabbix_mysql_hosts master_ip=192.168.17.52 slave_ip=192.168.17.53"

執行過程較多、只截了前面和後面
在這裏插入圖片描述
在這裏插入圖片描述

查看mysql主主是否成功

在這裏插入圖片描述
在這裏插入圖片描述
查看完之後發現MySQL主主已經成功了、下面就做Keepalived

安裝Keepalived

提取碼:vpp1
在這裏插入圖片描述

keepalived_mysql.yml文件也在網盤的壓縮包裏
在這裏插入圖片描述

執行腳本安裝keeplived | zabbix_mysql_hosts是在host裏面寫的IP

執行的時候定義的e是你的網卡名稱根據自己網卡名稱更改即可

ansible-playbook /etc/ansible/playbooks/keepalived_mysql.yml --extra-vars "hosts=zabbix_mysql_hosts master_ip=192.168.17.52 backup_ip=192.168.17.53 vip=192.168.17.100 e=ens33"

在這裏插入圖片描述

Keepalived_Master的配置

! Configuration File for keepalived
global_defs {
   notification_email {
        root@localhost                  #收件人的email地址(當keepalived出故障的時候發送給哪些用戶,可以指定多個)
   }
        notification_email_from keepalived@localhost            #發件人email地址
        smtp_server 127.0.0.1           #指定smtp服務器
        smtp_connect_timeout 30         #指定鏈接smtp服務器超時時間間隔
        }
}
#VIP,啓動多個VIP
vrrp_instance VI_1 {
        state MASTER            #爲了用不搶佔的配置而設置的(兩個節點都是BACKUP)
        interface ens33           #虛擬ip所要綁定的網卡(真實服務的網卡)
        virtual_router_id 51    #指定VRRP實例ID,範圍是0-255 (同一個keepalibved集羣中各節點配置相同)
        priority 100            #要比備用節點大,且各節點不相同
        advert_int 1            #指定發送VRRP通告的間隔。單位是秒。默認1秒 兩個節點設置必須一樣

        #允許低優先級的機器繼續成爲MASTER,即使高優先級的機器已經上線。如果要使用這個功能,則初始化狀態必須爲BACKUP。
        nopreempt

    authentication {
        auth_type PASS          #指定認證方式。PASS簡單密碼認證(推薦),AH:IPSEC認證(不推薦)。
        auth_pass k19k19        #指定認證所使用的密碼。最多8位。(不是服務器密碼)
    }
    virtual_ipaddress {
        #<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
        #虛擬的ip要和被代理的ip在同一個網段,且該ip沒有被佔用
        192.168.17.100/24 dev ens33 label ens33:0
    }
}
virtual_server 192.168.17.100 3306 {
     delay_loop 2
     lb_algo wrr
     lb_kind DR
     persistence_timeout 60
     protocol TCP
     real_server 192.168.17.52 3306 {
         weight 3
         notify_down /etc/keepalived/mysql.sh  # 當mysql服務down了之後,執行的腳本
         TCP_CHECK {
             connect_timeout 10   # mysql連接超時時長(秒)
             nb_get_retry 3       # mysql服務連接失敗,重試次數
             delay_before_retry 3 #每隔3秒檢測一次mysql服務是否可用
             connect_port 3306
         }
     }
}

Keepalived_Backup的配置

! Configuration File for keepalived
global_defs {
   notification_email {
        root@localhost                  #收件人的email地址(當keepalived出故障的時候發送給哪些用戶,可以指定多個)
   }
        notification_email_from keepalived@localhost            #發件人email地址
        smtp_server 127.0.0.1           #指定smtp服務器
        smtp_connect_timeout 30         #指定鏈接smtp服務器超時時間間隔
        }
}
#VIP,啓動多個VIP
vrrp_instance VI_1 {
        state BACKUP            #爲了用不搶佔的配置而設置的(兩個節點都是BACKUP)
        interface ens33           #虛擬ip所要綁定的網卡(真實服務的網卡)
        virtual_router_id 51    #指定VRRP實例ID,範圍是0-255 (同一個keepalibved集羣中各節點配置相同)
        priority 90             #要比備用節點大,且各節點不相同
        advert_int 1            #指定發送VRRP通告的間隔。單位是秒。默認1秒 兩個節點設置必須一樣
        #允許低優先級的機器繼續成爲MASTER,即使高優先級的機器已經上線。如果要使用這個功能,則初始化狀態必須爲BACKUP。
        nopreempt
    authentication {
        auth_type PASS          #指定認證方式。PASS簡單密碼認證(推薦),AH:IPSEC認證(不推薦)。
        auth_pass k19k19        #指定認證所使用的密碼。最多8位。(不是服務器密碼)
    }
    virtual_ipaddress {
        #<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
        #虛擬的ip要和被代理的ip在同一個網段,且該ip沒有被佔用
        192.168.17.100/24 dev ens33 label ens33:0
    }
}
virtual_server 192.168.17.100 3306 {
     delay_loop 2
     lb_algo wrr
     lb_kind DR
     persistence_timeout 60
     protocol TCP
     real_server 192.168.17.53 3306 {
         weight 3
         notify_down /etc/keepalived/mysql.sh
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 3306
         }
     }
}

Masql檢查腳本

#!/bin/sh
pkill keepalived

在keepaived主上面查看IP發現虛擬IP已經出來了
在這裏插入圖片描述

停掉mysql你就會發現虛擬IP不在了 這就證明IP漂移成功了
在這裏插入圖片描述

在keepaived從上面查看就會發現有虛擬IP了
在這裏插入圖片描述

然後在啓動mysql和keepalived 就會發現虛擬IP已經漂移回來了 這時候已經成功了一定要先啓動mysql然後在啓動keepalived 不放心的可以去keepalived從上面查一下IP
在這裏插入圖片描述

keepalived從上面已經沒有虛擬IP了到這位置就證明MySQL主主+Keepalived高可用成功了
在這裏插入圖片描述

測試高可用是否成功

在其他主機上面安裝一個mysql 我這上面已經裝過了

yum -y install msyql

在這裏插入圖片描述

mysql -h 192.168.17.100 -uroot -p123456

執行完就會發現可以通過虛擬IP鏈接到Mysql
在這裏插入圖片描述

執行完以上所有步驟就證明成功了

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