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