单机搭建集群
自己学习测试,受限于机器原因,有时只能自己单机尝试下集群操作,接下来带你学会单机部署集群操作。
插件管理
为什么要先学会插件管理,因为不了解这个,搭建集群会有很多坑等着你踩。
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
#禁用所有插件
以上便是常用的一些插件管理命令。
单机集群搭建,网上一些资料都是写明使用RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached
这个命令,修改port
和nodename
便可以。但是这个是有前提的,就是你必须先禁用所有的插件,不然的话,你是无法成功搭建集群,因为有些插件会监听专门的接口来提供服务,这个时候你就还得去区分开这些插件使用的端口号。
教科书般集群操作
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 #通过这三个命令可以开启三个节点 rabbitmqctl status -n rabbit1@xuxiangdeMacBook-Pro #查看一个节点的状态
-
将rabbit2节点加入集群
rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro stop_app #先停止rabbit2 rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro reset #清空元数据和状态 rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro join_cluster rabbit1@xuxiangdeMacBook-Pro #加入第一个节点 rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro start_app #启动第二个节点
如上重复对rabbit3使用,便可以得到rabbit1,rabbit2,rabbit3组成的集群
插件开启的情况
很多时候,你可能需要开启某些插件,例如rabbitmq_management
插件,开启后便可以在web界面查看相关情况,很是舒服。这种情况下,按照上面的集群操作,必然会出现问题。
例如在开启了rabbitmq_management
插件时,用上面那种方法启动多个节点时,便会出现如下错误(截取错误部分)。
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已经占用了这个端口,此时咱们启动rabbit2时,便会出现错误,这时候你就得在启动时指定相应参数避免这个问题。
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached
#指定端口,改为15673,这样便可以避免上述问题
同样可以利用上述方法启动rabbit3,然后再使用之前同样的操作将这两个节点加入集群便可在web界面看到下图
这样便是成功的搭建好了一个单机上的集群。