当前位置:   article > 正文

docker compose部署rabbitmq集群,并使用haproxy负载均衡

docker compose部署rabbitmq集群,并使用haproxy负载均衡

 一、创建rabbitmq的data目录

mkdir data

mkdir data/rabbit1

mkdir data/rabbit2

mkdir data/rabbit3

 二、创建.erlang.cookie文件(集群cookie用)

echo "secretcookie" > .erlang.cookie

三、创建haproxy.cfg配置文件

global

    log stdout format raw local0

defaults

    log global

    mode http

    option httplog

    timeout connect 5000ms

    timeout client 50000ms

    timeout server 50000ms

frontend rabbitmq_front_tcp

    mode tcp

    bind *:5672

    default_backend rabbitmq_back_tcp

frontend rabbitmq_front_web

    bind *:15672

    default_backend rabbitmq_back_web

backend rabbitmq_back_tcp

    mode tcp

    balance roundrobin

    server rabbit1 rabbit1:5672 check

    server rabbit2 rabbit2:5672 check

    server rabbit3 rabbit3:5672 check

backend rabbitmq_back_web

    balance source

    server rabbit1 rabbit1:15672 check

    server rabbit2 rabbit2:15672 check

    server rabbit3 rabbit3:15672 check

listen stats

    bind *:8080

    stats enable

    stats uri /stats

    stats auth admin:123456

四、创建docker-compose.yml文件

services:

  rabbit1:

    restart: always

    image: rabbitmq

    container_name: rabbit1

    hostname: rabbit1

    environment:

      TZ: Asia/Shanghai

      RABBITMQ_DEFAULT_USER: guest

      RABBITMQ_DEFAULT_PASS: guest

    volumes:

      - /home/sumengnan/rabbitmq/data/rabbit1:/var/lib/rabbitmq

      - /home/sumengnan/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie

  rabbit2:

    restart: always

    image: rabbitmq

    container_name: rabbit2

    hostname: rabbit2

    environment:

      TZ: Asia/Shanghai

      RABBITMQ_DEFAULT_USER: guest

      RABBITMQ_DEFAULT_PASS: guest

    volumes:

      - /home/sumengnan/rabbitmq/data/rabbit2:/var/lib/rabbitmq

      - /home/sumengnan/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie

  rabbit3:

    restart: always

    image: rabbitmq

    container_name: rabbit3

    hostname: rabbit3

    environment:

      TZ: Asia/Shanghai

      RABBITMQ_DEFAULT_USER: guest

      RABBITMQ_DEFAULT_PASS: guest

    volumes:

      - /home/sumengnan/rabbitmq/data/rabbit3:/var/lib/rabbitmq

      - /home/sumengnan/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie

  haproxy:

    restart: always

    image: haproxy

    container_name: haproxy

    hostname: haproxy

    environment:

      TZ: Asia/Shanghai

    ports:

      - "5672:5672"

      - "15672:15672"

      - "8080:8080"

    volumes:

      - /home/sumengnan/rabbitmq/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg

 五、启动docker-compose.yml文件

docker compose up -d

 六、创建加入集群的shell脚本,并执行

vim join_cluster.sh

  1. #!/bin/bash
  2. #reset first node
  3. echo "Reset first rabbitmq node."
  4. docker exec rabbit1 /bin/bash -c 'rabbitmqctl stop_app'
  5. docker exec rabbit1 /bin/bash -c 'rabbitmqctl reset'
  6. docker exec rabbit1 /bin/bash -c 'rabbitmqctl start_app'
  7. docker exec rabbit1 /bin/bash -c 'rabbitmq-plugins enable rabbitmq_management'
  8. docker exec rabbit1 /bin/bash -c 'echo management_agent.disable_metrics_collector = false > /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf'
  9. #build cluster
  10. echo "Starting to build rabbitmq cluster with two ram nodes."
  11. docker exec rabbit2 /bin/bash -c 'rabbitmqctl stop_app'
  12. docker exec rabbit2 /bin/bash -c 'rabbitmqctl reset'
  13. docker exec rabbit2 /bin/bash -c 'rabbitmqctl join_cluster --ram rabbit@rabbit1'
  14. docker exec rabbit2 /bin/bash -c 'rabbitmqctl start_app'
  15. docker exec rabbit2 /bin/bash -c 'rabbitmq-plugins enable rabbitmq_management'
  16. docker exec rabbit2 /bin/bash -c 'echo management_agent.disable_metrics_collector = false > /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf'
  17. docker exec rabbit3 /bin/bash -c 'rabbitmqctl stop_app'
  18. docker exec rabbit3 /bin/bash -c 'rabbitmqctl reset'
  19. docker exec rabbit3 /bin/bash -c 'rabbitmqctl join_cluster --ram rabbit@rabbit1'
  20. docker exec rabbit3 /bin/bash -c 'rabbitmqctl start_app'
  21. docker exec rabbit3 /bin/bash -c 'rabbitmq-plugins enable rabbitmq_management'
  22. docker exec rabbit3 /bin/bash -c 'echo management_agent.disable_metrics_collector = false > /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf'
  23. #check cluster status
  24. echo "ok"

chmod 755 join_cluster.sh

sh join_cluster.sh

七、重启docker-compose.yml文件

docker compose restart

 作用是使shell脚本中开启的管理代理的度量收集功能生效。

八、访问rabbitmq控制台

查看集群情况。可以看到集群成功。

 九、访问haproxy统计页面

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/986777
推荐阅读
相关标签
  

闽ICP备14008679号