Docker实战之Rabbitmq集群搭建

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

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

Docker搭建Rabbitmq集群

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

创建专属网络

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

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

创建数据目录

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

$ mkdir -p /data/rabbitmq
  • 1.

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

编辑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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.

注意:

RABBITMQ_DEFAULT_USER:填写用户名

RABBITMQ_DEFAULT_PASS:填写密码

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

发布rabbitmq服务

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

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

从节点加入集群

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

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

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

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


回复
    相关推荐