Docker搭建RabbitMQ集群环境

Docker搭建集群环境

实际生产环境中较少使用直接配置的形式搭建 RabbitMQ集群,通常使用容器化进行部署搭建,Docker 可通过运行同一镜像的方式在一台Linux机器上建立RabbitMQ集群

缺点是当Linux主机出现问题,基于Docker容器搭建的集群环境将无法使用


安装步骤:

配置Docker:

bash 复制代码
1、下载相关依赖
	 yum install -y yum-utils device-mapper-persistent-data lvm2
     
 
2、配置Docker仓库并安装Docker
	 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
     yum install -y docker-ce
     
     
3、开启自启动
	systemctl enable docker
    
 
4、启动Docker
	systemctl startr docker

下载RabbitMQ镜像:

指定暴露给外部的端口、控制台端口,获取RabbitMQ最新版本镜像并开启控制台(management参数)

bash 复制代码
docker run -d --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

查看RabbitMQ镜像安装情况:

使用 ps 命令查看镜像获取情况

访问外部暴露端口进行RabbitMQ管理页

后续需要创建集群,因此需要停止已经运行的RabbitMQ镜像

bash 复制代码
docker stop d696199853a2

Docker-Compose搭建集群:

安装Docker-Compose:

bash 复制代码
1、安装yaml依赖
	dnf install python3-pip
  

2、安装Docker-Compose
	pip3 install -U pip setuptools
	pip3 install docker-compose
  
  
3、查看版本
	docker-compose version 

集群配置文件编写:

参数后面不能有空格

yaml 复制代码
version: "2.0"
services:
  rabbit1:
    image: rabbitmq:3-management
    hostname: rabbit1
    ports:
      - 5672:5672
      - 15672:15672
    environment:
      - RABBITMQ_DEFAULT_USER=guest
      - RABBITMQ_DEFAULT_PASS=guest
      - RABBITMQ_ERLANG_COOKIE='dmbjzrabbitmq'

  rabbit2:
    image: rabbitmq:3-management
    hostname: rabbit2
    ports:
      - 5673:5672
    environment:
      - RABBITMQ_ERLANG_COOKIE='dmbjzrabbitmq'
    links:
      - rabbit1
  rabbit3:
    image: rabbitmq:3-management
    hostname: rabbit3
    ports:
      - 5674:5672
    environment:
      - RABBITMQ_ERLANG_COOKIE='dmbjzrabbitmq'
    links:
      - rabbit1
      - rabbit2

创建集群容器:

bash 复制代码
docker-compose up -d


集群容器创建完毕

查看集群容器详情

节点2配置:

进入容器:
bash 复制代码
 docker exec -it  docker_rabbit2_1 bash
加入到集群:
bash 复制代码
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app
exit

节点3配置:

进入容器:
bash 复制代码
 docker exec -it  docker_rabbit3_1 bash
加入到集群:
bash 复制代码
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl join_cluster rabbit@rabbit2
rabbitmqctl start_app
exit

测试:

进入控制台web界面查看,集群搭建成功

集群搭建详情


Docker 直接搭建集群:

创建容器:

运行三个MQ容器

bash 复制代码
docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='dmbjzcookies' rabbitmq:3-management
docker run -d --hostname rabbit2 --name myrabbit2 -p 15673:15672 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='dmbjzcookies' rabbitmq:3-management
docker run -d --hostname rabbit3 --name myrabbit3 -p 15674:15672 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='dmbjzcookies' rabbitmq:3-management

加入集群:

进入到三个容器中,使节点2与节点3加入到节点1中

bash 复制代码
docker exec -it myrabbit1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster  rabbit@rabbit1
rabbitmqctl start_app
exit


docker exec -it myrabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster  rabbit@rabbit1
rabbitmqctl start_app
exit

进入控制台web界面查看,集群搭建成功

集群搭建详情

相关推荐
Lvan的前端笔记5 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
sbjdhjd11 小时前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
热爱Liunx的丘丘人11 小时前
1、什么是K8s
云原生·容器·kubernetes
帷幕落秋12 小时前
Docker的两种安装
运维·docker·容器
工业一体机老司机12 小时前
工业一体机选购后的系统部署:Ubuntu下Docker容器化运行与GPIO配置
linux·ubuntu·docker·人机交互
fengkai454513 小时前
十二、Redis -2
运维·数据库·redis·容器
DolitD15 小时前
3D应用多实例并发中的GPU隔离技术路径分析
容器·gru·接口隔离原则
姜鱼问生16 小时前
docker exec 排查容器问题:从日志到进程
运维·网络·数据库·docker·容器
做个文艺程序员16 小时前
MQ第02篇:RabbitMQ快速上手教程:AMQP模型详解+Spring Boot整合实战(附完整代码)
spring boot·消息队列·rabbitmq·java-rabbitmq·amqp
人生百态,人生如梦17 小时前
Ubuntu在低版本下使用ccswitch+claudecode(CCSwitch+Docker+Claude)连调教程
linux·ubuntu·docker·claudecode·ccswitch