RabbitMQ集群模式的安装(基于Docker)

rabbitmq

1. 集群模式

RabbitMQ 有三种模式:单机模式,普通集群模式,镜像集群模式。单机模式即单独运行一个 rabbitmq 实例,而集群模式需要创建多个 rabbitmq实例。

1.1 普通集群模式

默认的集群模式。需要创建多个 RabbitMQ 节点。但对于 Queue 和消息来说,只存在于其中一个节点,其他节点仅同步元数据,即队列的结构信息。

image-20211018125227703

1.2 镜像集群模式

把队列做成镜像队列,让各队列存在于多个节点中,属于 RabbitMQ 的高可用性方案。镜像模式和普通模式的不同在于,queue和 message 会在集群各节点之间同步,而不是在 consumer 获取数据时临时拉取。

2. 集群安装
2.1 环境准备
  • 172.16.25.69

  • 172.16.25.70

  • 172.16.25.71

创建mq的hosts文件

vim /mydata/rabbitmq/hosts # 文件中写入以下内容
172.16.25.69 rabbit1 rabbit1
172.16.25.70 rabbit2 rabbit2
172.16.25.71 rabbit3 rabbit3
2.2 拉取镜像
docker pull rabbitmq:3.8.3-management
2.3 创建容器
  • 在172.16.25.69节点上创建容器rabbit1
docker run --restart=always \
-h rabbit1 -d -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 4369:4369 \
--name rabbitmq1 \
-v /mydata/rabbitmq:/var/lib/rabbitmq:z \
-v /mydata/rabbitmq/hosts:/etc/hosts \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=123456 \
-e RABBITMQ_ERLANG_COOKIE='rabbitmq_2021' \
rabbitmq:3.8.3-management
  • 在172.16.25.70节点上创建容器rabbit2
docker run --restart=always \
-h rabbit2 -d -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 4369:4369 \
--name rabbitmq2 \
-v /mydata/rabbitmq:/var/lib/rabbitmq:z \
-v /mydata/rabbitmq/hosts:/etc/hosts \
-e RABBITMQ_ERLANG_COOKIE='rabbitmq_2021' \
rabbitmq:3.8.3-management
  • 在172.16.25.71节点上创建容器rabbit3
docker run --restart=always \
-h rabbit3 -d -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 4369:4369 \
--name rabbitmq3 \
-v /mydata/rabbitmq:/var/lib/rabbitmq:z \
-v /mydata/rabbitmq/hosts:/etc/hosts \
-e RABBITMQ_ERLANG_COOKIE='rabbitmq_2021' \
rabbitmq:3.8.3-management

参数说明:

  • -d 表示容器后台运行
  • -h rabbit1 容器的主机名是rabbit1,容器内部的hostname
  • -v /mydata/rabbitmq:/var/lib/rabbitmq:z 将宿主机目录/home/rabbitmq挂载到容器的/var/lib/rabbitmq目录。z是一个标记,在selinux环境下使用
  • -e RABBITMQERLANGCOOKIE=‘rabbit_cluster’ 设置rabbitmq的cookie,该值可以任意设置,只需要三个容器保持一致即可
2.4绑定集群
  • 重置myrabbit1节点
$ docker exec -it rabbitmq1 /bin/bash
$ rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl start_app
  • 加入myrabbit2节点到集群中
$ docker exec -it rabbitmq2 /bin/bash
$ rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster rabbit@rabbit1 && rabbitmqctl start_app
  • 加入myrabbit3节点到集群中
$ docker exec -it rabbitmq3 /bin/bash
$ rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster rabbit@rabbit1 && rabbitmqctl start_app
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值