RabbitMQ进阶——如何配置RabbitMQ集群

349 阅读2分钟

这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情

前言

大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

本文主要带大家如何配置RabbitMQ的集群并在SpringBoot中使用。

配置镜像集群

1. 环境配置

启动多台linux虚拟机,如果只有一台可以快速克隆出多台即可。

image-20220603135353149

如果内存足够建议使用完全克隆。

创建完虚拟机之后进行具体的环境配置。

  1. 修改hosts文件,配置ip镜像。
  2. 重启机器
  3. 互ping测试
  4. 启动rabbitmq
  5. 修改.erlang.cookie文件,保证多台机器之间该文件的文件内容相同。

image-20220603135620648

image-20220603135634302

关闭防火墙,确保两台机器相互ping通。

image-20220603135954802 image-20220603140015092

后台启动rabbitmq

rabbitmq-server satrt &

image-20220603142042273

给RabbitMQ添加用户

rabbitmqctl add_user admin 123456
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
rabbitmqctl set_user_tags admin administrator

image-20220603142109308

将其中一台的文件复制到另外一台机器上。

scp /var/lib/rabbitmq/.erlang.cookie 192.168.44.252:/var/lib/rabbitmq

image-20220603142953551

2. 组建集群

重启rabbitmq

rabbitmqctl stop
rabbitmq-server start &

image-20220603143342133

将某个rabbitmq加入到某个服务器节点。

//停止应用
rabbitmqctl stop_app
//加入节点(将A加入到B中)
rabbitmqctl join_cluster rabbit@B
//启动应用
rabbitmqctl start_app

image-20220603144118611

查看节点状态:

rabbitmqctl cluster_status

image-20220603144139097

image-20220603144211550

3. 在Springboot中配置集群

配置文件:

spring:
  rabbitmq:
    addresses: 192.168.44.251:5672,192.168.44.252:5672
    username: admin
    password: 123456

默认情况下,使用的是普通集群也就是标准集群,这种集群会在各节点之间建立临时连接,如果某一个节点宕机,那么队列中的消息就会丢失,其他节点就无法从该节点获得消息。

我们可以通过使用镜像集群来解决这一问题。

镜像集群可以将交换机和队列以及队列中的消息进行同步备份,创建队列的节点叫做主节点,备份的其他节点叫做镜像节点,当主节点宕机后,镜像节点会替代成为新的主节点。

虽然镜像集群支持主从同步,但是这种同步不是强一致性的,也会出现数据丢失的风险。3.8版本之后推出了仲裁队列来代替镜像集群,底层采用Raft协议保证强一致性。

镜像集群可以在管控台进行创建。

image-20220603160612900

image-20220603160815964

发送消息测试:

image-20220603161222208

小结

以上就是关于RabbitMQ集群的配置,希望能对读者有所帮助,如有不正之处,欢迎留言指正。