網上關於 Corosync+Pacemaker+MySQL 高可用的教程多基於 DRBD 共享存儲,但 DRBD 配置複雜且有性能損耗。實際上,**基於 MySQL 原生 Replication(主從)搭配 VIP 漂移,完全可以構建輕量級 HA 架構**。本文記錄不依賴 DRBD 的純軟體 HA 部署全過程。
masters(主)、slave2(從)192.168.10.231 由 Pacemaker 管理,故障時自動漂移order 約束)colocation 約束)corosync-keygen 並分發 authkey參考《Corosync Pacemaker Nginx 高可用安裝配置》,完成基礎集群搭建並驗證雙節點 Online。
crm configure)property stonith-enabled=false
property no-quorum-policy=ignore
primitive mysqlip ocf:heartbeat:IPaddr \
params ip=192.168.10.231 \
op monitor interval=30s timeout=20s on-fail=restart
primitive mysqlserver lsb:mysqld
colocation mysql_col inf: mysqlserver mysqlip
order mysql_after_ip mandatory: mysqlip mysqlserver
verify
commit
show
時間格式注意:interval=30s timeout=20s為標準寫法(CentOS 6.5 驗證通過),切勿省略單位s。
[root@masters ~]# crm status
Last updated: Thu Apr 23 02:36:54 2015
Stack: classic openais
Current DC: slave2
2 Nodes configured, 2 expected votes
3 Resources configured
Online: [ masters slave2 ]
mysqlip (ocf::heartbeat:IPaddr): Started masters
mysqlserver (lsb:mysqld): Started masters
若節點顯示 OFFLINE,在該節點執行 crm node online。
# 客戶端連接 VIP
[tank@localhost ~]$ mysql -u test -p -h 192.168.10.231
# 模擬 masters 故障
[root@masters ~]# crm node standby
# 客戶端重新連接 VIP,應自動導向 slave2
[tank@localhost ~]$ mysql -u test -p -h 192.168.10.231
若連線成功,說明 VIP 已漂移至 slave2,MySQL 服務在 slave2 啟動,HA 生效。
本架構僅解決「單主單從 + VIP 漂移」。若拓撲為一主二從,主庫宕機後需:
推薦使用 MHA (Master High Availability) 自動完成上述流程,保證數據零損(或可控損失)與秒級切換。
無 DRBD 的 Corosync+Pacemaker+MySQL Replication 方案,適合「不想折騰共享存儲、接受秒級 RPO、業務可容忍短暫唯寫不可用」的中小型場景。生產上線前務必演練:網絡分區、Split-brain、Binlog 位點不一致等極端情況。