RabbitMQ cluster
環境準備
主機版本
Linux control-ha-3 4.4.0-45-generic #66-Ubuntu SMP Wed Oct19 14:12:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Erlang版本號
Erlang/OTP 18 [erts-7.3] [source] [64-bit][async-threads:10] [hipe] [kernel-poll:false]
Eshell V7.3 (abortwith ^G)
rabbitmq版本
Version: 3.5.7-1
Depends: adduser, erlang-nox (>= 1:13.b.3) | esl-erlang,logrotate, init-system-helpers (>= 1.18~)
安裝erlang
# apt-get installerlang
常用命令
1 查看所有隊列信息
# rabbitmqctl list_queues
2 關閉應用
# rabbitmqctl stop_app
3 啟動應用,和上述關閉命令配合使用,達到清空隊列的目的
# rabbitmqctl start_app
4 清除所有隊列
# rabbitmqctl reset
5 更多用法及參數,可以執行如下命令查看
# rabbitmqctl
6 首先關閉
# rabbitmqctlstop_app
7 還原:
# rabbitmqctlreset
8 啟動:
# rabbitmqctlstart_app
9 添加用戶:
# rabbitmqctladd_user dftc [email protected]
10 設置權限:
# rabbitmqctlset_permissions -p / dftc ".*" ".*" ".*"
11 查看用戶:
# rabbitmqctllist_users
control1, control 2, control 3以及其相關配置
搭載了RabbitMQ服務的Ubuntu服務器。
1. Control1具體網絡配置如下:
Ip address | 192.168.163.141 |
net mask | 255.255.255.0 |
gateway | 192.168.163.2 |
Dns | 114.114.114.114 |
2. Control2具體網絡配置如下:
Ip address | 192.168.163.142 |
net mask | 255.255.255.0 |
gateway | 192.168.163.2 |
Dns | 114.114.114.114 |
3. Control3具體網絡配置如下:
Ip address | 192.168.163.143 |
net mask | 255.255.255.0 |
gateway | 192.168.163.2 |
Dns | 114.114.114.114 |
RabbitMQ單節點配置流程
1. 配置3臺臺可以接入公網的CentOS,然後在各機器中按序執行一下命令:
# apt-getinstall erlang -y
# wgethttps://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_5/rabbitmq-server_3.6.5-1_all.deb
# rabbitmq-server
# rabbitmq-pluginsenable rabbitmq_management
2. 在每個節點配置/etc/hosts中最後增加下面內容:
#vi /etc/hosts
192.168.163.141 control1
192.168.163.142 control2
192.168.163.143 control3
輸入erl確認erlang已經正確安裝
當出現以上信息時表示安裝完成。然後輸入’halt().’退出即可。
然後在配置Erlang環境變量,vi /etc/profile文件,增加下面的環境變量:
#seterlang environment
exportPATH=$PATH:/opt/erlang/bin
3. 重啟三臺機器
#reboot
4. 構建起erlang的集群環境
Rabbitmq的集群是依賴於erlang的集群來工作的。Erlang的集群中各節點是通過一個magic cookie來實現的,這個cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,所以必須保證各節點cookie保持一致,否則節點之間就無法通信。
使用以下命令將Control1中的/var/lib/rabbitmq/.erlang.cookie 復制到其他節點。在Control1節點運行以下命令:
# scp /var/lib/rabbitmq/.erlang.cookie [email protected]: /var/lib/rabbitmq/.erlang.cookie
# scp /var/lib/rabbitmq/.erlang.cookie [email protected]: /var/lib/rabbitmq/.erlang.cookie
由於文件是400的權限,所以在Control2以及Control3節點運行以下命令:
保證權限屬主屬組完全一致
# chmod 400/var/lib/rabbitmq/.erlang.cookie
# chown rabbitmq.rabbitmq/var/lib/rabbitmq/.erlang.cookie
完成後運行rabbitmqctl stop 然後 rabbitmq-server 重啟服務
# rabbitmqctl stop
# /sbin/service rabbitmq-server restart
在Control1節點增加用戶,並且為用戶賦予權限
# rabbitmqctl add_user dftc [email protected](測試環境使用[email protected])
# rabbitmqctl set_user_tags dftc administrator
# rabbitmqctl set_permissions -p / dftc ‘.*‘‘.*‘ ‘.*‘
通過http://192.168.163.141:15672 用戶名為:dftc 密碼為:[email protected](測試環境使用[email protected])連入第一臺配置成功的RabbitMQ服務器。其他節點暫不配置
Iptables打開對應端口,尤其註意4369和25672,沒有打開的時候,添加集群會報錯並提示打開
#rabbitmq cluster
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT
RabbitMQ集群搭建
1. RabbitMQ相關的配置
使用 -detached 參數,在各節點中運行以下命令:
# rabbitmqctl stop
# rabbitmq-server –detached
組成集群,在control2與control3中分別運行以下命令:
# rabbitmqctl stop_app
# rabbitmqctl join_cluster [email protected](跟據實際主機名確定)
# rabbitmqctl start_app
可選步驟:在已經可用的Control1的web頁面,配置
註:紅框內的內容在沒配置之前是沒有的。
本文出自 “NB小菜鳥” 博客,謝絕轉載!
RabbitMQ cluster