項目需要搭建rabbitmq的高可用集群,最近在學習搭建過程,在這里記錄下可以跟大家一起互相交流(這里只是記錄了學習之后自己的搭建過程,許多原理的東西沒有細說)。
搭建環境
CentOS7 64位
RabbitMQ 3.6.2
Keepalived 1.2.21
主機:192.168.0.1 192.168.0.2 192.168.0.3 三台節點上安裝rabbitmq服務
Haproxy 安裝在 192.168.1.1 和 192.168.1.2 上,用於對外提供 RabbitMQ 均衡
Keepalived實現haproxy的主備,高可用(避免單點問題),192.168.1.1(主)192.168.1.2(備)
全局圖如下:
RabbitMQ集群搭建
單機上安裝
分別在192.168.0.1 192.168.0.2 192.168.0.3 節點上安裝rabbitmq server。
- 1.Install Erlang
# yum install erlang
測試erlang是否安裝成功,輸入:
# erl //進入erl窗口則表示安裝成功
- 2.Install RabbitMQ Server
# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2-1.noarch.rpm
# yum install rabbitmq-server-3.6.2-1.noarch.rpm
- 3.啟動
# /etc/init.d/rabbitmq-server start
- 4.開機啟動
# chkconfig rabbitmq-server on
測試是否安裝成功:
# rabbitmqctl status //查看rabbitmq的運行狀態信息
- 5.啟用插件rabbitmq management
# rabbitmq-plugins enable rabbitmq_management
# /etc/init.d/rabbitmq-server restart
輸入http://ip:15672可以登錄管理界面,默認賬戶guest/guest只能使用http://localhost:15672登錄,要想遠程登錄,需要添加一個新的用戶:
# rabbitmqctl add_user admin 1234
#用戶設置為administrator才能遠程訪問
$ sudo rabbitmqctl set_user_tags admin administrator
$ sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" //該命令使用戶admin具有‘/’這個virtual host中所有資源的配置、寫、讀權限以便管理其中的資源
查看所有用戶#rabbitmqctl list_users
鏡像集群搭建
將192.168.0.1上的/var/lib/rabbitmq/.erlang.cookie中的內容復制到158和159上的/var/lib/rabbitmq/.erlang.cookie文件中, 即三台服務器必須具有相同的cookie,如果不相同的話,無法搭建集群
192.168.0.2和192.168.0.3節點上分別執行命令,加入到集群
# rabbitmqctl stop_app
# rabbitmqctl join_cluster --ram rabbit@h-ncdrdcs7
# rabbitmqctl start_app
其中--ram代表是內存節點,如果希望是磁盤節點則不用加--ram,在rabbitmq集群中,至少需要一個磁盤節點
查看集群的狀態
# rabbitmqctl cluster_status
設置成鏡像隊列
# rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}' //意思表示以ha.開頭的queue都會復制到各個節點 ["^"匹配所有]
Haproxy負載代理
利用haproxy做負載均衡
在192.168.1.1和192.168.1.2節點上
安裝haproxy
# yum install haproxy
vi /etc/haproxy/haproxy.cfg 之后添加:
listen rabbitmq_local_cluster 0.0.0.0:5672 #配置TCP模式 mode tcp option tcplog #簡單的輪詢 balance roundrobin #rabbitmq集群節點配置 server rabbit1 192.168.0.1:5672 check inter 5000 rise 2 fall 2 server rabbit2 192.168.0.2:5672 check inter 5000 rise 2 fall 2 server rabbit3 192.168.0.3:5672 check inter 5000 rise 2 fall 2 #配置haproxy web監控,查看統計信息 listen private_monitoring :8100 mode http option httplog stats enable #設置haproxy監控地址為http://localhost:8100/stats stats uri /stats stats refresh 30s #添加用戶名密碼認證 stats auth admin:1234
#啟動
# haproxy -f haproxy.cfg
#重啟動
# service haproxy restart
Keepalived安裝
利用keepalived做主備,避免單點問題,實現高可用
在192.168.1.1和192.168.1.2節點上安裝最新版keepalived
192.168.1.1(主)修改keepalived.conf為:Primary配置:
vrrp_script chk_haproxy { script "pidof haproxy" interval 2 } vrrp_instance VI_1 { interface ens192 state MASTER priority 200 virtual_router_id 10 unicast_src_ip 192.168.1.1 unicast_peer { 192.168.1.2 } authentication { auth_type PASS auth_pass password } virtual_ipaddress { 192.168.1.10 //虛擬ip,對外提供服務 } track_script { chk_haproxy } notify_master /loadbtify_master.sh }
192.168.1.2(備)修改keepalived.conf為:Secondary配置:
vrrp_script chk_haproxy { script "pidof haproxy" interval 2 } vrrp_instance VI_1 { interface ens192 state BACKUP priority 100 virtual_router_id 10 unicast_src_ip 192.168.1.2 unicast_peer { 192.168.1.1 } authentication { auth_type PASS auth_pass password } virtual_ipaddress { 192.168.1.10 } track_script { chk_haproxy } notify_master /loadbtify_master.sh }
啟動keepalived即可,192.168.1.10是對外提供的統一地址。
通過192.168.1.10:5672就可以訪問rabbitmq服務。
參考資料:
https://www.digitalocean.com/community/tutorials/how-to-set-up-highly-available-haproxy-servers-with-keepalived-and-floating-ips-on-ubuntu-14-04#userconsent#
http://www.rabbitmq.com/install-rpm.html
http://www.keepalived.org/download.html //keepalived下載地址