數據庫安裝和升級和雙主配置的操作可以參考我的另一篇文章:
數據庫安裝和升級和雙主配置
1、在兩臺服務器都下載和安裝keepalived
下載:
yumdownloader --resolve keepalived
下載后得到:
[root@localhost keepalivedRpm]# ll
總用量 1896
-rw-r--r--. 1 root root 39568 8月 23 2019 ipset-7.1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 65112 8月 23 2019 ipset-libs-7.1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 339840 10月 15 2020 keepalived-1.3.5-19.el7.x86_64.rpm
-rw-r--r--. 1 root root 723960 1月 26 2024 net-snmp-agent-libs-5.7.2-49.el7_9.4.x86_64.rpm
-rw-r--r--. 1 root root 770000 1月 26 2024 net-snmp-libs-5.7.2-49.el7_9.4.x86_64.rpm
安裝:
rpm -ivh keepalived*
遇到報錯后,提示哪個就先安裝哪個。
安裝完成后,查看版本:
rpm -qa | grep keepalived # 應輸出 keepalived 版本號
2、配置keepalived
第一臺:
vi /etc/keepalived/keepalived.conf
global_defs {router_id MYSQL_MASTER1 # 唯一標識符
}vrrp_script chk_mysql {script "/etc/keepalived/check_mysql.sh" # 檢查 MySQL 進程是否存在user root # 確保使用 root 用戶或存在的用戶
# weight -20 # 失敗后降低的優先級interval 2 # 每3秒檢測一次timeout 2 # 超時時間fall 1 # 失敗x次則切換rise 1 # 成功x次認為恢復
}vrrp_instance VI_1 {state MASTER # 從庫設為 BACKUPinterface enp0s3 # 替換為你的網卡名稱(如 ens192)virtual_router_id 51 # 與集群內其他節點一致priority 100 # 主庫優先級高于從庫(如 100,從庫設為 90)advert_int 1 # 心跳間隔(秒)authentication {auth_type PASSauth_pass 1111 # 集群內節點密碼一致}virtual_ipaddress {192.168.0.233/24 # 你的 VIP 地址}track_script {chk_mysql}
}
第二臺:
global_defs {router_id MYSQL_MASTER2 # 唯一標識符
}vrrp_script chk_mysql {script "/etc/keepalived/check_mysql.sh" # 檢查 MySQL 進程是否存在user root # 確保使用 root 用戶或存在的用戶
# weight -20 # 失敗后降低的優先級interval 2 # 每3秒檢測一次timeout 2 # 超時時間fall 1 # 失敗3次則切換rise 1 # 成功2次認為恢復
}vrrp_instance VI_1 {state BACKUP # 初始狀態為BACKUPinterface enp0s3 # 替換為你的網卡名稱(如 ens192)virtual_router_id 51 # 與集群內其他節點一致priority 90 # 主庫優先級高于從庫(如 100,從庫設為 90)advert_int 1 # VRRP通告間隔authentication {auth_type PASSauth_pass 1111 # 集群內節點密碼一致}virtual_ipaddress {192.168.0.233/24 # 你的 VIP 地址}track_script {chk_mysql}
}
chk_mysql腳本如下:
vi /etc/keepalived/check_mysql.sh
#!/bin/bash
# 檢查MySQL服務是否運行
if ! pgrep -x "mysqld" > /dev/null; thenecho 1exit 1
fi
echo 0
exit 0
賦予執行權限:
chmod +x /etc/keepalived/check_mysql.sh
3、啟動keepalived
兩臺服務器都啟動:
systemctl start keepalived
systemctl enable keepalived
查看 VIP 是否生效:
ip addr show
4、測試vip的自動切換
連接虛擬ip,然后停止一臺mysql
systemctl stop mysqld
經過實測,停止后切換的時候可能會連接失敗一次,然后就恢復正常。