RabbitMQ之集群管理

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1、在node2、node3、node4三台Linux虚拟机中安装RabbitMQ。

2、从node2拷贝.erlang.cookie到node3、node4的相应目录

        如果没有该文件手动创建/var/lib/rabbitmq/.erlang.cookie 生成Cookie字符串或者启动一次RabbitMQ自动生成该文件。生产中推荐使用第三方工具生成。

我们首先在node2上启动单机版RabbitMQ以生成Cookie文件

systemctl start rabbitmq-server

        开始准备同步.erlang.cookie 文件。RabbitMQ的集群依赖Erlang的分布式特性需要保持Erlang Cookie一致才能实现集群节点的认证和通信我们直接使用scp命令从node1远程传输。

scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@node4:/var/lib/rabbitmq/

修改node3和node4上该文件的所有者为rabbitmq:rabbitmq

chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

注意.erlang.cookie文件权限为400

 

3、使用下述命令启动node3和node4上的RabbitMQ

systemctl start rabbitmq-server

4、将node3和node4这两个节点加入到集群中

分别执行如下命令

# 停止Erlang VM上运行的RabbitMQ应用保持Erlang VM的运行
rabbitmqctl stop_app

# 移除当前RabbitMQ虚拟主机中的所有数据重置
rabbitmqctl reset

# 将当前RabbitMQ的主机加入到rabbit@node2这个虚拟主机的集群中。一个节点也是集群。
rabbitmqctl join_cluster rabbit@node2

# 启动当前Erlang VM上的RabbitMQ应用
rabbitmqctl start_app
  1. rabbit@node2 表示RabbitMQ节点名称默认前缀就是rabbit @ 之后是当前虚拟主机所在的物理主机hostname 。
  2. 注意检查下hostname要可以相互ping通
  3. join_cluster默认是使用disk模式后面可以加入参数--ram启用内存模式

移出集群节点使用

# 将虚拟主机RabbitMQ的节点rabbit@node3从集群中移除但是rabbit@node3还保留集群信息
# 还是会尝试加入集群但是会被拒绝。可以重置rabbit@node3节点。
rabbitmqctl forget_cluster_node rabbit@node3
#修改集群名称任意节点执行都可以
rabbitmqctl set_cluster_name

#查看集群状态任意节点执行都可以
rabbitmqctl cluster_status

在三个RabbitMQ节点上的任意一个添加用户设置用户权限设置用户标签即可 

rabbitmqctl add_user root 123456
rabbitmqctl set_permissions --vhost "/" root ".*" ".*" ".*"
rabbitmqctl set_user_tags --vhost "/" root administrator

        可以到web控制台查看集群信息如果要看到所有RabbitMQ节点上的运行情况都需要启用rabbitmq_management 插件。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: RabbitMQ