(二)RabbitMQ实战——rabbitmq高可用集群搭建

本文详细介绍了如何在CentOS7系统上部署RabbitMQ高可用集群,包括安装ERlang和RabbitMQ服务器,设置Web客户端,配置主机名映射,同步cookie,加入和退出集群,以及使用镜像队列实现数据同步。
摘要由CSDN通过智能技术生成

前言

本节内容是关于rabbitmq高可用集群的部署搭建,使用的是centos7系统,我们准备三台服务器作为rabbitmq的高可用服务器,rabbitmq集群本身不是天然支持高可用的,我们通过配置rabbitmq服务器的镜像队列,以确保消息可以在集群中的多个节点上进行复制存储,提高可用性和容错性,避免单节点故障。

rabbitmq高可用集群服务器规划
主机名IP服务
hadoop101192.168.10.101rabbitmq
hadoop102192.168.10.102rabbitmq
hadoop103192.168.10.103rabbitmq

正文

①上传rabbitmq安装包到服务器hadoop101、hadoop102、hadoop103

②服务器分别使用rpm命令安装erlang环境

命令:

sudo rpm -ivh erlang-26.2.3-1.el7.x86_64.rpm

查看erlang是否安装成功:

③使用rpm命令安装rabbitmq服务器

命令:

sudo rpm -ivh rabbitmq-server-3.13.0-1.el8.noarch.rpm

④启动rabbitmq服务器

命令:

#设置rabbitmq服务器开机自启
systemctl enable rabbitmq-server
#启动rabbitmq服务器
systemctl start rabbitmq-server
#查看rabbitmq服务器状态
systemctl status rabbitmq-server
#停止rabbitmq服务器
systemctl stop rabbitmq-server
#重启rabbitmq服务器
systemctl restart rabbitmq-server

⑤开启rabbitmq的web客户端rabbitmq_management

-开启rabbitmq服务器的web客户端

rabbitmq-plugins enable rabbitmq_management

- 使用浏览器访问rabbitmq客户端

- 添加rabbitmq访问的账号

# 创建用户
rabbitmqctl add_user <用户名> <密码>
# 设置用户角色
rabbitmqctl set_user_tags <用户> <角色>
# 设置用户权限
rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
# 查看用户
rabbitmqctl list_users

- 使用创建的rabbitmq账户admin登录web端

⑥配置主机名和host地址的映射,便于服务器通过主机名相互访问,关于服务器之间的免密访问,以及服务器文件之间的互传可参考作者往期博客内容

⑦同步分发hadoop101服务器rabbitmq的cookie到hadoop102和hadoop103,确保各个节点使用的是同一个cookie

scp /var/lib/rabbitmq/.erlang.cookie root@hadoop102:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@hadoop103:/var/lib/rabbitmq/.erlang.cookie

⑧在hadoop102、hadoop103节点分别执行以下命令,使节点加入集群

- 后台启动rabbitmq服务

rabbitmq-server -detached

- 关闭rabbitmq服务器

rabbitmqctl stop_app

- 重置rabbitmq服务器

rabbitmqctl reset

- rabbitmq加入集群

rabbitmqctl join_cluster rabbit@hadoop101

- 启动应用

rabbitmqctl start_app

- 查看集群状态

rabbitmqctl cluster_status

⑨ rabbitmq节点退出集群,以hadoop103节点退出为例

- 停止hadoop103节点应用

rabbitmqctl -n rabbit@hadoop103 stop_app

- 在hadoop101或者hadoop102任意节点移除hadoop103

rabbitmqctl forget_cluster_node rabbit@hadoop103

- 查看集群

⑩创建镜像队列,实现rabbitmq消息集群间同步

- 正常情况下,rabbitmq集群并不是高可用的,节点间的数据是不能共享的,需要使用镜像队列同步节点数据,引入镜像队列(Mirror Queue)的机制,如果集群中的一个节点失效了,队列能自动地切换到镜像中的另一个节点上以保证服务的可用性

- 镜像策略添加完成,可根据具体实际需求添加多个策略

- 查看策略是否生效

- 停掉节点101,集群还能正常使用,故障发生转移,其它节点生效

- 重启节点101,副本数恢复

结语

至此,关于rabbitmq高可用集群搭建的教程到这里就结束了,我们下期见。。。。。。

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
RabbitMQ本身并不直接支持分布式事务,但是可以通过一些机制来实现分布式事务。 一种常用的方式是使用两阶段提交(Two-Phase Commit,简称2PC)协议来实现分布式事务。在这种方案中,事务的协调者(coordinator)会与多个参与者(participants)进行通信,以确保所有参与者在提交或者回滚事务时的一致性。 在RabbitMQ中,可以将消息生产者作为事务的协调者,将消息消费者作为参与者。下面是一个简单的示例: 1. 生产者发送消息到RabbitMQ,并开启一个事务。 2. 生产者将消息发送给消费者,并等待消费者返回确认消息。 3. 如果所有的消费者都成功处理了消息,则协调者发送“prepare”消息给所有的参与者。 4. 参与者收到“prepare”消息后,将消息持久化到本地存储,并发送“ready”消息给协调者。 5. 协调者收到所有参与者的“ready”消息后,发送“commit”消息给所有的参与者。 6. 参与者收到“commit”消息后,正式提交事务,并发送确认消息给协调者。 7. 协调者收到所有参与者的确认消息后,完成事务。 需要注意的是,如果任何一个参与者在处理消息时出现异常,协调者将发送“rollback”消息,参与者接收到“rollback”消息后会回滚事务。 这只是一个简单的示例,实际的实现可能需要考虑更多的细节和异常处理。另外,还有其他的分布式事务解决方案,如Saga模式、TCC(Try-Confirm-Cancel)模式等,也可以根据具体需求选择合适的方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厉害哥哥吖

您的支持是我创作下去的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值