RabbitMQ 集群部署(linux-centos6.5)

RabbitMQ 集群部署(linux-centos6.5)

 

正式做集群配置前先了解几个概念,

启动方式:

1、正常方式启动  rabbitmq-server start          或者  rabbitmq-server

2、后台方式启动:rabbitmq-server -detached

(后台式启动,缺点部分错误显示不出来,我就被坑了,可以使用不加【-detached】方式启动,缺点多开几个终端窗口。)

 一、单机集群

由于是在单机上启动多个实例,因此必须使用不同的端口,不然启动会报错

可见官方文档,查看端口意义

官方文档单机集群示例如下,

1、创建单机集群节点,

  1.1 默认节点

rabbitmq-server -detached 

1.2节点1
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached
或者
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}] -rabbitmq_stomp tcp_listeners [61614] -rabbitmq_mqtt tcp_listeners [1884]" RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached
1.3节点2
RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached

或者

 RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}] -rabbitmq_stomp tcp_listeners [61615] -rabbitmq_mqtt tcp_listeners  [1885]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached

节点正常启动如下:

2、查看节点状态

单节点时查看节点状态使用,rabbitmqctl status

但是当单机有多个节点时就需要指定节点,如下:

rabbitmqctl status -n rabbit1

3、通过管理页面查看各节点状态

这样的话你可以通过:http://127.0.0.1:15672/#/http://127.0.0.1:15673/#/ ,http://127.0.0.1:15674/#/ 
访问web查看相关节点是否真的存在。

假如你是远程访问,则需要使用http://IP:15672/,http://IP:15673/,http://IP:15674/

当你访问时,你会发现使用你之前在15672上创建的用户不能登录,此时需要你使用命令行自行创建用户

步骤如下:

配置管理员账号:

    rabbitmqctl add_user ww ww  -n rabbit1

    rabbitmqctl set_user_tags ww administrator -n rabbit1

示例如下:

完成后可使用15673端口登录:

4、集群操作

 4.1、集群配置操作步骤如下:

  • 停止节点的应用程序
  • 重新设置节点的元数据和状态为清空状态。
  • 加入第一节点
  • 重新启动节点应用程序
  •   rabbitmqctl -n rabbit1 stop_app
  •   rabbitmqctl -n rabbit1 reset
  •   rabbitmqctl -n rabbit1  join_cluster rabbit
  •   rabbitmqctl -n rabbit1 start_app

4.2、第二节点实际操作如下:

页面查看状态如下:

 4.3、第三节点实际操作如下:

创建RAM节点   

磁盘和RAM节点
节点可以是磁盘节点或RAM节点。(注意: 磁盘和磁盘可互换使用)。RAM节点仅将内部数据库表存储在RAM中。这不包括消息,消息存储索引,队列索引和其他节点状态。

在绝大多数情况下,您希望所有节点都是磁盘节点; RAM节点是一种特殊情况,可用于改进具有高队列,交换或绑定流失的性能群集。RAM节点不提供更高的消息速率。如有疑问,请仅使用磁盘节点。

由于RAM节点仅将内部数据库表存储在RAM中,因此它们必须在启动时从对等节点同步它们。这意味着群集必须至少包含一个磁盘节点。因此,无法手动删除群集中的最后一个剩余磁盘节点。

我们可以在第一次加入集群时将节点声明为RAM节点。我们像以前一样使用rabbitmqctl join_cluster执行此 操作,但是传递 --ram标志:

   

rabbitmqctl -n rabbit2  join_cluster --ram rabbit

 

页面查看状态如下:

 

也可以通过命令行查看集群状态:

 rabbitmqctl -n rabbit1 cluster_status

 

posted @ 2019-07-20 17:42  pinghengxing  阅读(296)  评论(0编辑  收藏  举报