RabbitMQ入门(二)

2018-06-30  本文已影响0人  xx1994

单机搭建集群

自己学习测试,受限于机器原因,有时只能自己单机尝试下集群操作,接下来带你学会单机部署集群操作。

插件管理

为什么要先学会插件管理,因为不了解这个,搭建集群会有很多坑等着你踩。

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 这个命令,修改portnodename便可以。但是这个是有前提的,就是你必须先禁用所有的插件,不然的话,你是无法成功搭建集群,因为有些插件会监听专门的接口来提供服务,这个时候你就还得去区分开这些插件使用的端口号。

教科书般集群操作

  1. rabbitmq-plugins list -e rabbit 查看当前是否有开启的插件

  2. rabbitmq-plugins disable --all如果有启动的插件,禁用所有插件

  3. 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
    #查看一个节点的状态
    
  4. 将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
    #启动第二个节点
    
  5. 如上重复对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界面看到下图


集群搭建成功

这样便是成功的搭建好了一个单机上的集群。

上一篇下一篇

猜你喜欢

热点阅读