Docker实战之Rabbitmq集群搭建

LoveBank
发布于 2022-6-24 17:14
浏览
0收藏

作者 |上海滩虎哥
来源 | 今日头条

Docker搭建Rabbitmq集群

RabbitMQ是轻量级的开源消息中间件,易于在本地和云上部署。它支持多种消息传递协议,可以满足高规模、高可用性的需求。本例搭建三个节点的rabbitmq集群。

创建专属网络

$ docker network create -d overlay --attachable --subnet=172.31.0.0/24 rabbitmq-cluster

不懂网络这块的,可以关注看前面发表的docker网络创建和管理

创建数据目录

把消息数据挂载到磁盘上,防止丢失。根据需要Rabbitmq相关的配置文件也可挂载出来

$ mkdir -p /data/rabbitmq

注意:三个节点均要创建目录

编辑docker-compose.yaml

version: "3.9"
services:
  rabbit1:
    image: rabbitmq:3.8.9-management
    hostname: rabbit1
    environment:
      RABBITMQ_DEFAULT_USER: <用户名>
      RABBITMQ_DEFAULT_PASS: <密码> 
      RABBITMQ_ERLANG_COOKIE: "<自定义字符串>"
      RABBITMQ_NODENAME: rabbit1
    volumes:
      - /data/rabbitmq:/var/lib/rabbitmq
    ports:
      - "4369:4369"
      - "5671:5671"
      - "5672:5672"
      - "15671:15671"
      - "15672:15672"
      - "25672:25672"
    networks:
      rabbitmq-cluster:
        ipv4_address: 172.31.0.3

  rabbit2:
    image: rabbitmq:3.8.9-management
    hostname: rabbit2
    depends_on:
      - rabbit1
    environment:
      RABBITMQ_DEFAULT_USER: <用户名>
      RABBITMQ_DEFAULT_PASS: <密码>
      RABBITMQ_ERLANG_COOKIE: "<自定义字符串>"
      RABBITMQ_NODENAME: rabbit2
    volumes:
      - /data/rabbitmq:/var/lib/rabbitmq
    networks:
      rabbitmq-cluster:
        ipv4_address: 172.31.0.4
    
  rabbit3:
    image: rabbitmq:3.8.9-management
    hostname: rabbit3
    depends_on:
      - rabbit1
    environment:
      RABBITMQ_DEFAULT_USER: <用户名>
      RABBITMQ_DEFAULT_PASS: <密码>
      RABBITMQ_ERLANG_COOKIE: "<自定义字符串>"
      RABBITMQ_NODENAME: rabbit3
    volumes:
      - /data/rabbitmq:/var/lib/rabbitmq
    networks:
      rabbitmq-cluster:
        ipv4_address: 172.31.0.5

networks:
  rabbitmq-cluster:
    external: true

注意:

RABBITMQ_DEFAULT_USER:填写用户名

RABBITMQ_DEFAULT_PASS:填写密码

RABBITMQ_ERLANG_COOKIE:填写erlang_cookie,三个节点的cookie值必须相同

发布rabbitmq服务

选择一个节点发布服务,由于是跨主机,需要在swarm集群环境下发布

$ docker stack deploy --compose-file docker-compose.yml rabbit

从节点加入集群

以rabbit1为主节点,rabbit2和rabbit3为从节点

#先进入从节点服务器
$ docker exec -it <用具体的容器名称或id代替> bash 
#进入容器后,先停止rabbitmq
$ rabbitmqctl stop_app
$ rabbitmqctl reset
#把该节点加入到主节点rabbit1
$ rabbitmqctl join_cluster rabbit1@rabbit1
#重启
$ rabbitmqctl start_app

至此,Rabbitmq集群搭建完成,访问rabbitmq控制台http://ip:15672。

分类
已于2022-6-24 17:14:27修改
收藏
回复
举报
回复
    相关推荐