Centos7-rabbitmq叢集部署
一、對應主機host地址(每臺主機host檔案要保持一致)(每臺都操作) 172.16.2.61 rabbitmq01 172.16.2.62 rabbitmq02
二、每臺都安裝rabbitmq-server(注意:要先裝epel-release擴充套件源)(每臺都操作) yum -y install epel-release && yum -y install rabbitmq-server
三、啟動服務和檢視狀態(每臺都操作) systemctl start rabbitmq-server && systemctl enable rabbitmq-server && systemctl status rabbitmq-server
四、安裝管理外掛(每臺都操作) 1.web管理外掛 rabbitmq-plugins list # 檢視外掛列表 rabbitmq-plugins enable rabbitmq_management # 啟動外掛
2.日誌跟蹤外掛 rabbitmq-plugins enable rabbitmq_tracing #rabbitmq啟用trace外掛 rabbitmqctl trace_on #開啟trace的開關 rabbitmqctl trace_on -p test #開啟trace的開關(test為需要日誌追蹤的vhost) rabbitmqctl trace_off #關閉trace的開關
3.安裝rabbitmq_delayed_message_exchange(延時佇列) 預設外掛目錄(把下載好的外掛放在這個目錄下,啟動下即可) cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.12/plugins wget https://dl.bintray.com/rabbitmq/community-plugins/rabbitmq_delayed_message_exchange-0.0.1.ez rabbitmq-plugins enable rabbitmq_delayed_message_exchange # 啟動外掛
五、普通叢集配置
1.說明: Rabbitmq的叢集是依附於erlang的叢集來工作的,所以必須先構建起erlang的叢集映象。 Erlang的叢集中各節點是經由過程一個magic cookie來實現的,這個cookie存放在 $home/.erlang.cookie 中, 我的是用yum安裝的,所以.erlang.cookie就放在/var/lib/rabbitmq中
2.複製cookie內容 erlang.cookie是erlang實現分散式的必要檔案,erlang分散式的每個節點上要保持相同的.erlang.cookie檔案, 同時保證檔案的許可權是400,不然節點之間就無法通訊。 開啟rabbitmq01伺服器的/var/lib/rabbitmq/.erlang.cookie中的內容,複製到其他節點上,最好是複製內容, 因為檔案許可權不對的話會出現問題,在最後退出儲存的時候使用wq!用!來進行強制儲存即可.
3.erlang.cookie複製完成後,逐個重啟節點服務: systemctl restart rabbitmq-server && systemctl status rabbitmq-server
4.新增到叢集並檢視叢集狀態: 將[email protected]作為叢集主節點,在其他節點上分別執行如下命令,以加入叢集中. rabbitmqctl stop_app # 僅停止應用 rabbitmqctl reset # 重置應用 rabbitmqctl join_cluster [email protected] # 加入[email protected]叢集 rabbitmqctl start_app # 開啟應用 rabbitmqctl cluster_status # 都檢視叢集狀態
5.賬號管理 rabbitmqctl add_user admin admin # 新增賬號 rabbitmqctl set_user_tags admin administrator # 新增許可權 rabbitmqctl delete_user guest # 刪除使用者 rabbitmqctl change_password 使用者名稱 密碼 # 修改使用者的密碼 rabbitmqctl list_users # 檢視當前使用者列表
6.vhost管理 rabbitmqctl add_vhost vhostname # 建立vhost rabbitmqctl delete_vhost vhostname # 刪除vhost rabbitmqctl list_vhosts # 檢視所有虛擬主機資訊 rabbitmqctl set_permissions -p v_host user ".*" ".*" ".*" ##繫結許可權,並且具備讀寫的許可權 rabbitmqctl list_queues # 顯示所有佇列
7.設定映象佇列策略(將所有佇列設定為映象佇列,即佇列會被複制到各個節點,各個節點狀態保持一直。) rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' # -p vhost 預設是/
8.訪問WEB地址:172.16.2.61:15672
至此RabbitMQ高可用叢集就已經搭建好了
從叢集中移除節點: rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl start_app
改變叢集節點型別
加入叢集時指定節點型別: rabbitmqctl stop_app && rabbitmqctl join_cluster --ram [email protected] && rabbitmqctl start_app --ram 指定記憶體節點型別,--disc指定磁碟節點型別
修改節點型別: rabbitmqctl stop_app && rabbitmqctl change_cluster_node_type disc &&rabbitmqctl start_app
日誌檔案: ll /var/log/rabbitmq/