单机部署多应用实现集群
进行安装rabbitmq
运行
检查是否运行ps -aux |grep rabbitmq
确认完毕,停止关闭服务
开始部署集群
场景:假设有三个rabbitmq节点,分别为rabbit-1,rabbit-2,rabbit-3;rabbit-1作为主节点,rabbit-2,rabbit-3作为从节点。
启动第一个节点
启动命令:
RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-1 rabbitmq-server start -g
结束命令:rabbitmqctl -n rabbit-1 stop
启动第二个节点
注意web管理插件的端口占用也需要进行指定端口
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener[{port,15673}]" RABBITMQ_NODENAME=rabbit-2 rabbitmq-server start -g
启动第三个节点
注意web管理插件的端口占用也需要进行指定端口
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
设置主从节点
设置主节点
#停止应用
rabbitmqctl -n rabbit-1 stop_app
#清除节点上的历史数据(不清除,无法加入集群)
rabbitmqctl -n rabbit-1 reset
#重新启动应用
rabbitmqctl -n rabbit-1 start_app
设置从节点2
#停止应用
rabbitmqctl -n rabbit-2 stop_app
#清除节点上的历史数据(不清除,无法加入集群)
rabbitmqctl -n rabbit-2 reset
#将rabbit-2节点加入到rabbit-1节点(主节点)集群中,【@跟着的Server-node是你的主机名】
rabbitmqctl -n rabbit-2 join_cluster rabbit-1@'Server-node'
#重新启动应用
rabbitmqctl -n rabbit-2 start_app
设置从节点3
#停止应用
rabbitmqctl -n rabbit-3 stop_app
#清除节点上的历史数据(不清除,无法加入集群)
rabbitmqctl -n rabbit-3 reset
#将rabbit-2节点加入到rabbit-1节点(主节点)集群中,【@跟着的Server-node是你的主机名】
rabbitmqctl -n rabbit-3 join_cluster rabbit-1@'Server-node'
#重新启动应用
rabbitmqctl -n rabbit-3 start_app
验证集群
主节点名称rabbitmqctl cluster_status -n rabbit-1
Web监控
开启web监控插件
rabbitmq-plugins enable rabbit_management
主节点的默认web监控端口就是默认端口15672,从节点的web监控就是配置的端口15673
需要给两个web界面设置新的用户和密码方便其他网络访问管理
#增加用户
rabbitmqctl -n rabbit-1 add_user admin admin
rabbitmqctl -n rabbit-2 add_user admin admin
rabbitmqctl -n rabbit-3 add_user admin admin
#授予权限
rabbitmqctl -n rabbit-1 set_user_tags admin administrator
rabbitmqctl -n rabbit-2 set_user_tags admin administrator
rabbitmqctl -n rabbit-3 set_user_tags admin administrator
#配置资源访问路径
rabbitmqctl -n rabbit-1 set_permissions -p / admin ".*" ".*" ".*"
rabbitmqctl -n rabbit-2 set_permissions -p / admin ".*" ".*" ".*"
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
#将rabbit-2节点加入到rabbit-1节点(主节点)集群中,【@跟着的Server-node是你的主机名】
#多机模式下【server-node必须填写服务器IP,不再是服务器主机名】
rabbitmqctl -n rabbit-3 join_cluster rabbit-1@'Server-node'
其它步骤同单机部署方式一致