1. 程式人生 > 實用技巧 >多節點叢集思路

多節點叢集思路

情況
在實際的專案實踐中,絕大多數情況不會是單節點執行程式+資料庫+其他,而會考慮部署一套公共資源,提供專案所需的資料庫,中介軟體等等。

思路
如果有多節點的情況,最終實現的目的就是:Ha和Upstream,簡而言之就是實現主備的功能加上負載均衡的功能。市面上就提供了很典型的這樣的叢集模式keepalived+haproxy+中介軟體。keepalived保證主從伺服器的可用性,一旦主伺服器出現問題,就會自動切換到備用伺服器上;haproxy是做負載均衡轉發,可以通過haproxy轉發到實際後端服務,靈活提高應該的負載能力。

例項
keepalivd虛擬出對外的IP對應主備下的haproxy服務,只提供一個對外的統一IP地址;haproxy轉發到實際的應用下面;本文以rabbitmq為例項,採用映象叢集模式搭建一套完整的rabbitmq叢集。
keepalived—192.168.7.60
haproxy主從—192.168.7.59 192.168.7.58
rabbitmq—192.168.7.59 192.168.7.58

keepalived
keepalived的搭建和配置可以參考傳送門

haproxy
haproxy配置是以TCP四層協議來轉發埠

frontend mq
bind 0.0.0.0:35672
mode tcp
default_backend tcp_mq
backend tcp_mq
mode tcp
balance roundrobin
server node-7 192.168.7.59:5672 check inter 2000 rise 3 fall 3 weight 30
server node-8 192.168.7.58:5672 check inter 2000 rise 3 fall 3 weight 30

rabbitmq
有四個點需要特別注意:
1.需要先選擇一個主節點,拷貝/var/lib/rabbitmq/.erlang.cookie隱藏檔案到對應目錄下,保證叢集cookie值的一致性。
2.主節點, 後臺啟動,並啟動應用,然後檢視叢集狀態。

rabbitmq-server -detached
rabbitmqctl start_app
rabbitmqctl cluster_status

3.從節點同樣需要先後臺啟動後,先關閉應用,加入集群后,再開啟應用

rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl join_cluster 
--ram rabbit@master主機名稱 rabbitmqctl start_app

4.完成以上操作後,再執行映象模式的命令,完成叢集配置

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

補充:可以開啟rabbitmq的web介面管理,新增使用者後檢視叢集的執行狀態

rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl add_vhost admin
rabbitmqctl set_permissions -p admin admin ".*" ".*" ".*"
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"