zoukankan      html  css  js  c++  java
  • docker部署haproxy负载均衡rabbitmq集群

    创建rabbitmq容器

    使用docker pull  rabbitmq拉取最新rabbimq镜像,docker pull haproxy 拉取haproxy镜像

    创建docker网络 rabbtimanet 用于haproxy和rabbimq通信

    docker network create rabbtimanet
    

    创建三节点rabbitmq容器

    rabbitmq1

    docker run -d --name=rabbitmq1 -p 5672:5672 -p 15672:15672 -e RABBITMQ_NODENAME=rabbitmq1 -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ'  -h rabbitmq1 --net=rabbtimanet rabbitmq:management
    

    rabbitmq2

    docker run -d --name=rabbitmq2 -p 5673:5672 -p 15673:15672 -e RABBITMQ_NODENAME=rabbitmq2 -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ'  -h rabbitmq2 --net=rabbtimanet rabbitmq:management
    

    rabbitmq3

    docker run -d --name=rabbitmq3 -p 5674:5672 -p 15674:15672 -e RABBITMQ_NODENAME=rabbitmq3 -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ'  -h rabbitmq3 --net=rabbtimanet rabbitmq:management
    

    rabbitmq集群

    分别进入rabbitmq2 和rabbitmq3容器(docker exec -it 容器id /bin/bash),执行以下:

    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1
    rabbitmqctl start_app
    

    部署Haproxy

    编辑haproxy配置文件如下:

    global
      daemon
      maxconn 256
    
    defaults
      mode http
      timeout connect 5000ms
      timeout client 5000ms
      timeout server 5000ms
    
    listen rabbitmq_cluster监听5677端口转发到rabbitmq服务
      bind 0.0.0.0:5677
      option tcplog
      mode tcp
      balance leastconn
      server rabbit1 rabbitmq1:5672 check inter 2s rise 2 fall 3
      server rabbit2 rabbitmq2:5672 check inter 2s rise 2 fall 3
      server rabbit3 rabbitmq3:5672 check inter 2s rise 2 fall 3
    listen http_front #haproxy的客户页面
      bind 0.0.0.0:80
      stats uri /haproxy?stats
    
    listen rabbitmq_admin #监听8011端口转发到rabbitmq的客户端
      bind 0.0.0.0:8001
      server rabbit1 rabbitmq1:15672 check inter 2s rise 2 fall 3
      server rabbit2 rabbitmq2:15672 check inter 2s rise 2 fall 3
      server rabbit2 rabbitmq3:15672 check inter 2s rise 2 fall 3
    

    创建haproxy容器

    docker run -d --name rabbitmq-haproxy  -p 8090:80 -p 5677:5677 -p 8001:8001  --net=rabbtimanet -v /home/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
    

    通过外部8090访问haproxy容器的80端口,外部8001访问haproxy容器8001,外部5677访问haproxy 容器5677端口

    测试

    连接rabbitmq 的5677端口,并发送数据,检查haproxy的web页面,对每次的请求转发至不同的rabbitmq

    通过haproxy的8001端口访问rabbitmq的客户端:

  • 相关阅读:
    Mysql:为什么用limit时,offset很大会影响性能
    [解决方案]未能找到路径“~in oslyncsc.exe”的一部分
    [经验分享]NuGet发布自己的Dll(类库包)
    [解决方案]使用百度富文本编辑器,编辑显示不了内容
    [解决方案]未能加载文件或程序集
    [经验分享]WebApi+SwaggerUI 完美展示接口
    [经验分享]Linux网络连接-VMware+CentOS 7
    [经验分享]WebAPI中返回类型JsonMessage的应用
    [解决方案]WebAPI+SwaggerUI部署服务器后,访问一直报错的问题
    [解决方案] 当 IDENTITY_INSERT 设置为 OFF 时
  • 原文地址:https://www.cnblogs.com/CaesarLinsa/p/11037613.html
Copyright © 2011-2022 走看看