在高可用性的 MySQL 集群中,雙主架構是一種常用的解決方案。keepalived 是一款高可靠性的 Linux 軟件,可以用來實現雙主架構。
internet
|
|
+------+------+
| LB |
+------+------+
|
|
+------+------+
| VIP |
+------+------+
|
+--------+--------+
| Server |
| keepalived |
| mysql 1 |
+--------+--------+
|
+--------+--------+
| Server |
| keepalived |
| mysql 2 |
+--------+--------+
如上圖所示,這個集群由兩個服務器組成,每個服務器上都運行有 mysql,使用 keepalived 實現雙主架構,線上的數據可以在兩個 mysql 服務器之間自由切換,保證了系統的高可用性。在這個集群中,也有一臺負載均衡器,它用來分發數據庫請求,除此之外,還有一臺虛擬 IP 地址在服務器間輪流分配。
vrrp_script chk_mysql {
script "/usr/local/mysql-cluster/scripts/mon_mysql.sh"
interval 2
weight -5
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev eth0
}
track_script {
chk_mysql
}
}
這是 keepalived 的配置文件,其中 vrrp_script 部分是用來檢測 mysql 是否正常運行,如果 mysql 在一定時間內沒有響應,就會自動將該服務器上的 VIP 從主服務器遷移到備服務器。接著是 vrrp_instance 的部分,其中 state MASTER 表示這是主服務器,priority 100 表示這臺服務器的優先級最高,virtual_ipaddress 部分是虛擬 IP 地址。