單機搭建集群
自己學習測試,受限于機器原因,有時只能自己單機嘗試下集群操作,接下來帶你學會單機部署集群操作。
插件管理
為什么要先學會插件管理,因為不了解這個,搭建集群會有很多坑等著你踩。
rabbitmq-plugins enable rabbitmq_management
#啟用rabbitmq_management插件
rabbitmq-plugins list
# 顯示所有的插件,每一行一個
rabbitmq-plugins list -v
# 顯示所有的插件,并且顯示插件的版本號和描述信息
rabbitmq-plugins list -v management
# 顯示所有名稱含有 "management" 的插件
rabbitmq-plugins list -e rabbit
# 顯示所有顯示或者隱式啟動的插件
rabbitmq-plugins disable --all
#禁用所有插件
以上便是常用的一些插件管理命令。
單機集群搭建,網(wǎng)上一些資料都是寫明使用RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached 這個命令,修改port和nodename便可以。但是這個是有前提的,就是你必須先禁用所有的插件,不然的話,你是無法成功搭建集群,因為有些插件會監(jiān)聽專門的接口來提供服務,這個時候你就還得去區(qū)分開這些插件使用的端口號。
教科書般集群操作
rabbitmq-plugins list -e rabbit查看當前是否有開啟的插件rabbitmq-plugins disable --all如果有啟動的插件,禁用所有插件RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=rabbit3 rabbitmq-server -detached #通過這三個命令可以開啟三個節(jié)點 rabbitmqctl status -n rabbit1@xuxiangdeMacBook-Pro #查看一個節(jié)點的狀態(tài)-
將rabbit2節(jié)點加入集群
rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro stop_app #先停止rabbit2 rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro reset #清空元數(shù)據(jù)和狀態(tài) rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro join_cluster rabbit1@xuxiangdeMacBook-Pro #加入第一個節(jié)點 rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro start_app #啟動第二個節(jié)點 如上重復對rabbit3使用,便可以得到rabbit1,rabbit2,rabbit3組成的集群
插件開啟的情況
很多時候,你可能需要開啟某些插件,例如rabbitmq_management插件,開啟后便可以在web界面查看相關情況,很是舒服。這種情況下,按照上面的集群操作,必然會出現(xiàn)問題。
例如在開啟了rabbitmq_management插件時,用上面那種方法啟動多個節(jié)點時,便會出現(xiàn)如下錯誤(截取錯誤部分)。
Error description:
......
throw:{could_not_start,rabbitmq_management,
{rabbitmq_management,
{bad_return,
{{rabbit_mgmt_app,start,[normal,[]]},
{'EXIT',
{{could_not_start_listener,
[{port,15672}],
{shutdown,
{failed_to_start_child,ranch_acceptors_sup,
{listen_error,rabbit_web_dispatch_sup_15672,eaddrinuse}}}},
使用RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit2 rabbitmq-server啟動rabbit2時,便可以看到上述錯誤。(如果加上-detached,便在后臺啟動,看不到這些,只能去日志查看)。
可以看到上面錯誤中說明could_not_start,rabbitmq_management同時{could_not_start_listener,[{port,15672}],web界面操作默認的端口是15672,但是我們的rabbit1已經(jīng)占用了這個端口,此時咱們啟動rabbit2時,便會出現(xiàn)錯誤,這時候你就得在啟動時指定相應參數(shù)避免這個問題。
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached
#指定端口,改為15673,這樣便可以避免上述問題
同樣可以利用上述方法啟動rabbit3,然后再使用之前同樣的操作將這兩個節(jié)點加入集群便可在web界面看到下圖

這樣便是成功的搭建好了一個單機上的集群。