簡介 通過 Erlang 的分散式特性(通過 magic cookie 認證節點)進行 RabbitMQ 集群,各 RabbitMQ 服務為對等節點,即每個節點都提供服務給客戶端連接,進行消息發送與接收。這些節點通過 RabbitMQ HA 隊列(鏡像隊列)進行消息隊列結構複製。本方案中搭建 3 個 ...
簡介
通過 Erlang 的分散式特性(通過 magic cookie 認證節點)進行 RabbitMQ 集群,各 RabbitMQ 服務為對等節點,即每個節點都提供服務給客戶端連接,進行消息發送與接收。這些節點通過 RabbitMQ HA 隊列(鏡像隊列)進行消息隊列結構複製。本方案中搭建 3 個節點,並且都是磁碟節點(所有節點狀態保持一致,節點完全對等),只要有任何一個節點能夠工作,RabbitMQ 集群對外就能提供服務。
1. 安裝erlang,參考:http://fedoraproject.org/wiki/EPEL/FAQ#howtouse
rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
yum install erlang
2. 安裝rabbitmq
# 下載rpm安裝包
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
# 安裝
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm
# 啟動rabbitmq服務
service rabbitmq-server start
# 查看服務狀態
service rabbitmq-server status
# 開放rabbitmq的使用,預設用戶guest,密碼guest
cd /etc/rabbitmq/ vi rabbitmq.config
# 再打開的視窗中新增內容如下:
[{rabbit, [{loopback_users, []}]}].
# 重啟服務
service rabbitmq-server stop service rabbitmq-server start
# 開放5672埠訪問
firewall-cmd --zone=public --add-port=5672/tcp --permanent firewall-cmd --reload
3. 開啟後臺UI管理插件
rabbitmq-plugins enable rabbitmq_management firewall-cmd --zone=public --add-port=15672/tcp --permanent firewall-cmd --reload
# 以上完成後即可訪問:http://{host}:15672
4. 開啟消費記錄日誌功能
# 啟用記錄插件
rabbitmq-plugins enable rabbitmq_tracing
# 啟用跟蹤記錄
rabbitmqctl trace_on
# 以上配置完成後,即可在後臺管理界面 --> Admin --> Tracing 添加跟蹤配置:
# 點擊dev.log 即可查看日誌文件
5. 配置rabbitmq集群節點
# 伺服器:10.18.32.7(節點1) , 10.18.32.8(節點2)
(1). 配置hostname
# 在各節點伺服器上配置hostname:rabbitmq-1,rabbitmq-2
vim /etc/hostname
(2). 配置host
# 在各節點伺服器上配置host
vim /etc/hosts
(3). 設置各節點Cookie保持一致
service rabbitmq-server stop
chmod 700 /var/lib/rabbitmq/.erlang.cookie
echo -n "AZVOCZYZZBVFLBPTBXU" > /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
service rabbitmq-server start
(4). 開通防火牆集群通訊埠
firewall-cmd --permanent --add-port={4369/tcp,25672/tcp}
firewall-cmd --reload
(5). 將節點2、3...加入節點一中
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@server1
rabbitmqctl start_app
(6). 設置各節點鏡像策略
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
參考鏈接:
http://www.cnblogs.com/uptothesky/p/6094357.html
http://www.cnblogs.com/edward2013/p/5061511.html
https://www.jianshu.com/p/3a625aacd9aa