說明:以下操作都以三節點集群為例,機器名標記為機器A、機器B、機器C,如果為雙節點忽略機器C,如果為各多節點則與機器C操作相同
一、rabbitmq集群必要條件
1.1、綁定實體ip,即ip a所能查詢到的綁定到網卡上的ip,以下是綁定方法:
1 #編輯配置路徑 /etc/rabbitmq/rabbitmq-env.conf 2 NODE_IP_ADDRESS=172.16.136.133
1.2. 配置域名映射到實體ip
#配置文件1所在路徑 /etc/rabbitmq/rabbitmq.config (如果是集群,每台機器都需要修改這個綁定本機實體ip) #其中rabbit@master是創建集群時所配置的參數,@后面的參數為主機名,示例中為master [ {rabbit, [ {cluster_nodes, {['rabbit@master'], disc}}, {cluster_partition_handling, ignore}, {default_user, <<"guest">>}, {default_pass, <<"guest">>}, {tcp_listen_options, [binary, {packet, raw}, {reuseaddr, true}, {backlog, 128}, {nodelay, true}, {exit_on_close, false}, {keepalive, true}]} ]}, {kernel, [ {inet_dist_listen_max, 44001}, {inet_dist_listen_min, 44001} ]} ].
#配置文件2 所在路徑 /etc/hosts (如果是集群,每台機器都需要修改這個綁定本機實體ip,而且hosts文件的映射不得重復,如果重復linux系統為以最下面一條記錄為准) 172.16.136.133 master 172.16.136.134 venus 172.16.136.135 venus2
二、啟動停止
2.1 停止
#機器A service rabbitmq-server stop epmd -kill #機器B service rabbitmq-server stop epmd -kill #機器C service rabbitmq-server stop epmd -kill
2.2 啟動
#機器A service rabbitmq-server start #機器B service rabbitmq-server start #機器C service rabbitmq-server start
三、重建集群
3.1 首先使用2.1方法停止所有機器
3.2 移除rabbitmq配置記錄與存儲文件
#配置文件位於 /var/lib/rabbitmq/mensia mv /var/lib/rabbitmq/mensia /var/lib/rabbitmq/mensia.bak
3.3接着 按2.2方法啟動所有機器
3.4 停止被加入集群節點app
比如A、B、C三台機器,將B和C加入到A中去,需要執行以下命令
#機器B
rabbitmqctl stop_app
#機器C
rabbitmqctl stop_app
3.5 建立集群
注意此處master為唯一沒有執行rabbitmqctl stop_app的機器
1 #機器B 2 rabbitmqctl join_cluster rabbit@master 3 #機器C 4 rabbitmqctl join_cluster rabbit@master
3.6 啟動集群
1 #機器B 2 rabbitmqctl start_app 3 #機器C 4 rabbitmqctl start_app
3.7 檢查集群狀態
在任意一台機器上執行rabbitmqctl cluster_status命令即可檢查,如下則集群正常:

3.8 添加集群配置 (見第四)
四 、添加集群配置
4.1 創建用戶
例子中創建了兩個用戶
添加用戶
add_user,設置角色set_user_tags,添加rabbitmq虛擬主機add_vhost,設置訪問權限set_permissions,以下是詳細用法
1 # 創建第一個用戶 2 /usr/sbin/rabbitmqctl add_user 用戶名 密碼 3 /usr/sbin/rabbitmqctl set_user_tags 用戶名 administrator 4 /usr/sbin/rabbitmqctl set_permissions -p / 用戶名 ".*" ".*" ".*" 5 # 創建第二個用戶 6 /usr/sbin/rabbitmqctl add_user 用戶名2 密碼 7 /usr/sbin/rabbitmqctl set_user_tags 用戶名2 management 8 /usr/sbin/rabbitmqctl add_vhost sip_ext 9 /usr/sbin/rabbitmqctl set_permissions -p sip_ext 用戶名2 '.*' '.*' '.*'
備注:RabbitMQ 虛擬主機,RabbitMQ 通過虛擬主機(vhost)來分發消息。擁有自己獨立的權限控制,不同的vhost之間是隔離的,單獨的。
權限控制的基本單位:vhost。
用戶只能訪問與之綁定的vhost。
vhost是AMQP中唯一無法通過協議來創建的基元。只能通過rabbitmqctl工具來創建。
4.2 打開15672網頁管理端,訪問mq
/usr/sbin/rabbitmq-plugins enable rabbitmq_management
4.3 在底部導入.json后綴的配置文件即可
文檔:https://www.jianshu.com/p/8414cd70bef1
優化參考:
https://www.jianshu.com/p/d05b04b33051
http://www.blogjava.net/qbna350816/archive/2016/07/30/431392.aspx
