0


RabbitMQ之集群管理

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 插件。


本文转载自: https://blog.csdn.net/weixin_52851967/article/details/128151573
版权归原作者 悠然予夏 所有, 如有侵权,请联系我们删除。

“RabbitMQ之集群管理”的评论:

还没有评论