clustering
最开始我们介绍了如何安装及运行
RabbitMQ
服务,不过这些是单机版的,无法满足目前真实应用的要求。如果 RabbitMQ
服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台
RabbitMQ服务器可以满足每秒 1000
条消息的吞吐量,那么如果应用需要
RabbitMQ
服务满足每秒
10
万条消息的吞
吐量呢?购买昂贵的服务器来增强单机
RabbitMQ
务的性能显得捉襟见肘,搭建一个
RabbitMQ
集群才是解决实际问题的关键
修改 3 台机器的主机名称
vim /etc/hostname
配置各个节点的 hosts 文件,让各个节点都能互相识别对方
vim /etc/hosts
在 node1 上执行远程操作命令.以确保各个节点的 cookie 文件使用的是同一个值
scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/.erlang.cookie
启动 RabbitMQ 服务
启动
RabbitMQ
服务
,
顺带启动
Erlang
虚拟机和
RbbitMQ
应用服务
(
在三台节点上分别执行以
下命令
)
rabbitmq-server -detached
对外开发端口
需要开放4369,25672,5672,15672
firewall-cmd --add-port=4369/tcp --permanent
重启防火墙
firewall-cmd --reload
重启服务器
# 重启网络
systemctl restart network
setenforce 0
# 重启
init 6
在节点 2 执行
rabbitmqctl stop_app
# (rabbitmqctl stop 会将 Erlang 虚拟机关闭,rabbitmqctl stop_app 只关闭 RabbitMQ 服务)
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app
# (只启动应用服务)
注意
如果是通过rpm 安装的 rabbitmq,需要以下命令去授权
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
如果是通过 解压缩方式安装的,需要以下命令去授权
chown rabbitmq:rabbitmq ~/.erlang.cookie
在节点 3 执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node2
rabbitmqctl start_app
集群状态
rabbitmqctl cluster_status
需要重新设置用户
创建账号
rabbitmqctl add_user admin 123
设置用户角色
rabbitmqctl set_user_tags admin administrator
设置用户权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
用任意服务器去访问可视化界面
解除集群节点(node2 和 node3 机器分别执行)
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl cluster_status
rabbitmqctl forget_cluster_node rabbit@node2(node1 机器上执行)