美文网首页
RabbitMQ入门(二)

RabbitMQ入门(二)

作者: xx1994 | 来源:发表于2018-06-30 12:30 被阅读0次

    单机搭建集群

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

    插件管理

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

    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界面看到下图


    集群搭建成功

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

    相关文章

      网友评论

          本文标题:RabbitMQ入门(二)

          本文链接:https://www.haomeiwen.com/subject/pustuftx.html