node1
作为主节点,node2
节点从属于该主节点,node3
从属于node3
。那么它们三者形成了一个集群。1. 克隆虚拟机
2. 修改三台主机的名称
# 进入对应文件修改
vim /etc/hosts
3. 配置各个节点的 hosts 文件,让各个节点都能互相识别对方
# 进入对应得文件
vim /etc/hosts
# 修改的内容
192.168.123.129 node1
192.168.123.131 node2
192.168.123.130 node3
4. 以确保各个节点的 cookie 文件使用的是同一个值
在 node1 上执行远程操作命令
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
5. 启动 RabbitMQ 服务,顺带启动 Erlang 虚拟机和 RbbitMQ 应用服务(在三台节点上分别执行以
下命令)
rabbitmq-server -detached
6. 在节点2上执行
rabbitmqctl stop_app
#rabbitmqctl stop 会将Erlang 虚拟机关闭,rabbitmqctl stop_app 只关闭 RabbitMQ 服务
# 进行重置
rabbitmqctl reset
# 加入到结点1得集群
rabbitmqctl join_cluster rabbit@node1
#(只启动应用服务)
rabbitmqctl start_app
7. 在节点3上执行
rabbitmqctl stop_app
#rabbitmqctl stop 会将Erlang 虚拟机关闭,rabbitmqctl stop_app 只关闭 RabbitMQ 服务
# 进行重置
rabbitmqctl reset
# 加入到结点2的集群
rabbitmqctl join_cluster rabbit@node2
#(只启动应用服务)
rabbitmqctl start_app
8. 查看集群状态
rabbitmqctl cluster_status
9. 需要重新设置用户
#创建账号
rabbitmqctl add_user admin 123
#设置用户角色
rabbitmqctl set_user_tags admin administrator
#设置用户权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
10. 解除集群节点命令
# 关闭服务
rabbitmqctl stop_app
# 重置服务
rabbitmqctl reset
# 开启服务
rabbitmqctl start_app
# 查看集群状态
rabbitmqctl cluster_status
# (node1 机器上执行) 让node1 忘掉 node2
rabbitmqctl forget_cluster_node rabbit@node2
11. 搭建成功图示
node1
上创建的队列,其他两个节点都不会有相应的队列,所以一旦node1
宕机的话,会导致消息丢失。(1)、如果将node3的服务停掉
node2
。mirror_*
。Haproxy
实现负载均衡,当处于高并发的情况下十分有用。大量请求来临,Haproxy
会将其分给node1~3
进行处理。Haproxy
宕机,那么其中的keepalive
会将请求转移给下一台Haproxy
。从而不让请求丢失。RabbitMQ
相距甚远,那么如果深圳的客户需要连接北京的RabbitMQ
才能获得的相关信息就会造成网络延迟,所以北京和深圳两地的RabbitMQ
中的信息要相同。1. 在每台机器上开启 federation插件
rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management
开启成功的标志
2. 原理图解析
node1(upstream)
也就是上游会将数据同步到下游node2(downstream)
。consumer
在 node2
创建 fed_exchange
3. 在 downstream(node2)配置 upstream(node1)
4. 添加策略
5. 成功说明
使用其队列形式来实现两个地区的RabbitMQ
的数据同步。
1. 原理图
node2
上的队列联邦到node1
上,node1
的数据可以同步到node2
。2. 添加 upstream(同上)
3. 添加 policy
Shovel
够可靠、持续地从一个 Broker
中的队列(作为源端,即source
)拉取数据并转发至另一个 Broker
中的交换器(作为目的端,即 destination
)。Shovel
行为就像优秀的客户端应用程序能够负责连接源和目的地、负责消息的读写及负责连接失败问题的处理。1. 在需要的机器上开启插件
rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management
开启成功的标志
2. 原理图
3. 添加shovel源和目的地
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_56727438/article/details/122149643
内容来源于网络,如有侵权,请联系作者删除!