image.png

单机部署多应用实现集群

进行安装rabbitmq
运行
检查是否运行
ps -aux |grep rabbitmq
确认完毕,停止关闭服务

开始部署集群

场景:假设有三个rabbitmq节点,分别为rabbit-1,rabbit-2,rabbit-3;rabbit-1作为主节点,rabbit-2,rabbit-3作为从节点。

启动第一个节点

启动命令:

  1. RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-1 rabbitmq-server start -g

结束命令:rabbitmqctl -n rabbit-1 stop

启动第二个节点

注意web管理插件的端口占用也需要进行指定端口

  1. RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener[{port,15673}]" RABBITMQ_NODENAME=rabbit-2 rabbitmq-server start -g

启动第三个节点

注意web管理插件的端口占用也需要进行指定端口

  1. RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener[{port,15674}]" RABBITMQ_NODENAME=rabbit-3 rabbitmq-server start -g

验证

ps -aux|grep rabbitmq

设置主从节点

设置主节点

  1. #停止应用
  2. rabbitmqctl -n rabbit-1 stop_app
  3. #清除节点上的历史数据(不清除,无法加入集群)
  4. rabbitmqctl -n rabbit-1 reset
  5. #重新启动应用
  6. rabbitmqctl -n rabbit-1 start_app

设置从节点2

  1. #停止应用
  2. rabbitmqctl -n rabbit-2 stop_app
  3. #清除节点上的历史数据(不清除,无法加入集群)
  4. rabbitmqctl -n rabbit-2 reset
  5. #将rabbit-2节点加入到rabbit-1节点(主节点)集群中,【@跟着的Server-node是你的主机名】
  6. rabbitmqctl -n rabbit-2 join_cluster rabbit-1@'Server-node'
  7. #重新启动应用
  8. rabbitmqctl -n rabbit-2 start_app

设置从节点3

  1. #停止应用
  2. rabbitmqctl -n rabbit-3 stop_app
  3. #清除节点上的历史数据(不清除,无法加入集群)
  4. rabbitmqctl -n rabbit-3 reset
  5. #将rabbit-2节点加入到rabbit-1节点(主节点)集群中,【@跟着的Server-node是你的主机名】
  6. rabbitmqctl -n rabbit-3 join_cluster rabbit-1@'Server-node'
  7. #重新启动应用
  8. rabbitmqctl -n rabbit-3 start_app

验证集群

主节点名称
rabbitmqctl cluster_status -n rabbit-1

Web监控

开启web监控插件

  1. rabbitmq-plugins enable rabbit_management

主节点的默认web监控端口就是默认端口15672,从节点的web监控就是配置的端口15673
需要给两个web界面设置新的用户和密码方便其他网络访问管理

  1. #增加用户
  2. rabbitmqctl -n rabbit-1 add_user admin admin
  3. rabbitmqctl -n rabbit-2 add_user admin admin
  4. rabbitmqctl -n rabbit-3 add_user admin admin
  5. #授予权限
  6. rabbitmqctl -n rabbit-1 set_user_tags admin administrator
  7. rabbitmqctl -n rabbit-2 set_user_tags admin administrator
  8. rabbitmqctl -n rabbit-3 set_user_tags admin administrator
  9. #配置资源访问路径
  10. rabbitmqctl -n rabbit-1 set_permissions -p / admin ".*" ".*" ".*"
  11. rabbitmqctl -n rabbit-2 set_permissions -p / admin ".*" ".*" ".*"
  12. rabbitmqctl -n rabbit-3 set_permissions -p / admin ".*" ".*" ".*"

注意服务器安全组端口开放

宕机处理

如果主节点宕机,那么所有的队列都会变成【down】状态,且从节点是无法使用的

多机部署应用实现集群

如果采用多机部署方式,需读取其中一个节点的cookie,并复制到其他节点(节点之间通过cookie确定相互是否可通信),即保证所有服务器的cookie保持一致
cookie存放位置为:/var/lib/rabbitmq/.erlang.cookie
例如:主机名分别为raubit-1、rabbit-2、rabbit-3
1、逐个启动各节点
2、配置各节点的hosts文件(vim/etc/hosts)
ip1:rabbit-1
ip2:rabbit-2
ip3:rabbit-3

  1. #将rabbit-2节点加入到rabbit-1节点(主节点)集群中,【@跟着的Server-node是你的主机名】
  2. #多机模式下【server-node必须填写服务器IP,不再是服务器主机名】
  3. rabbitmqctl -n rabbit-3 join_cluster rabbit-1@'Server-node'

其它步骤同单机部署方式一致

Docker镜像集群部署