Haproxy mysql故障轉移負載均衡
我已經設置了 mysql 主-主複製,現在我正在嘗試使用 Haproxy 對 mysql 伺服器進行負載平衡。
- 負載均衡器:192.168.1.5
- mysql1:192.168.1.7
- mysql2:192.168.1.8
下面的 haproxy 配置工作正常,它像輪詢一樣旋轉節點。
# this config needs haproxy-1.1.28 or haproxy-1.2.1 global log 127.0.0.1 local0 log 127.0.0.1 local1 notice #log loghost local0 info maxconn 4096 #chroot /usr/share/haproxy chroot /etc/haproxy user haproxy group haproxy pidfile /var/run/haproxy.pid daemon #debug #quiet defaults log global #mode http mode tcp #option httplog option dontlognull retries 3 option redispatch maxconn 2000 #contimeout 5000 contimeout 3600000 #clitimeout 50000 clitimeout 3600000 #srvtimeout 50000 srvtimeout 3600000 listen mysql_cluster 0.0.0.0:3307 mode tcp balance roundrobin option mysql-check user root #option httpchk GET /mysqlchk/?port=3306 option tcpka server mysql1 192.168.1.107:3306 server mysql2 192.168.1.108:3306
這不是我想要的。
我想要的是
Active-Passive
設置。就像,一個配置,以便它應該192.168.1.107
預設發送所有請求並故障轉移到192.168.1.108
如果192.168.1.107
不存在。我已經看到一些連結通過提及作為備份來執行此操作,但它對我沒有任何作用。當我嘗試替換上述配置的最後兩行時,
server mysql1 192.168.1.107:3306 check port 9200 inter 12000 rise 3 fall 3 server mysql2 192.168.1.108:3306 check port 9200 inter 12000 rise 3 fall 3 backup
我在重新啟動 haproxy 時遇到以下錯誤消息,它會自行停止。
Jan 20 16:18:18 localhost haproxy[523]: proxy mysql_cluster has no server available! Jan 20 16:18:18 localhost haproxy[523]: proxy mysql_cluster has no server available!
任何人都有任何可靠的 haproxy 工作配置用於 mysql 負載平衡,以便在生產中使用它並提供一些 haproxy 統計資訊?我需要一個主動-被動配置,如果沒有節點可用,我在上面詢問哪個重定向到備份節點。我將在新的 ubuntu 生產伺服器上實現這個。
任何幫助是極大的讚賞!。謝謝!
刪除檢查埠 9200s 然後您的備份選項應該可以工作。您似乎在混合不同的範例,mysql-check 在標準埠上工作,還有另一個使用 http 檢查的常見範例,他們在埠 9200 上設置了一個 xinetd 程序應答,該程序執行一個單獨的檢查腳本。
您可以進行主-主複製,但即便如此,我認為使用 HAProxy 進行 MySQL 負載平衡並不是正確的選擇。
HAProxy 很棒,但是當它作為 TCP 級別的負載均衡器執行時,它不能有任何 SQL 狀態的概念。長時間執行的 SQL 事務的行為不明確且容易出錯;這是你不應該高興的事情。
您的 master-master 設置具有單個節點的寫入容量(因為所有寫入都需要複製)。因此,您通過設置擴展的是讀取和連接。一個更常見且恕我直言更好的設置是:
- 從主-主對掛起一些只讀的 MySQL 從屬。
- 更改您的應用程式碼以將所有寫入發送到主機,並將幾乎所有讀取(如果可能)發送到只讀從機之一。
- 明智地建立與 MySQL 的連接。最好重用來自連接池的連接。
MySQL 代理或其他連接處理中間件之類的東西也可能適用於您的情況。
《高性能 MySQL》是一本非常好的書,其中包含有關如何擴展 MySQL 的實用建議。如果你讀了這本書,我想你會更清楚地看到哪些設計是常見的,並且已經證明了你的具體情況。