• Docker快速构建HaProxy集群,并配置好rabbitmq的负载均衡


    目录

    HAproxy功能:

    不具备的功能:

    一、准备工作

    1、创建相关目录

    2、安装docker-compose

    3、创建Dockerfile

    4、构建haproxy镜像

    二、构建haproxy集群

    1、集群规划

    2、创建docker-compose.yaml

    3、创建haproxy的配置文件,并配置rabbitmq集群的负载均衡

    4、构建haproxy

    5、访问192.168.78.200:8101/haproxy,查看当前haproxy状态

    6、总结


    HAproxy功能:

    TCP和HTTP反向代理
    SSL/TSL服务器
    可以针对HTTP请求添加cookie,进行路由后端服务器
    可平衡负载至后端服务器,并支持持久连接
    支持所有主服务器故障切换至备用服务器
    支持专用端口实现监控服务
    支持不影响现有连接情况下停止接收新连接请求
    可以在双向添加,修改或删除HTTP报文首部
    响应报文压缩
    支持基于pattern实现连接请求的访问控制
    通过特定的URI为授权用户提供详细的状态信息


    不具备的功能:

    正向代理
    缓存代理
    WEB服务
    不支持UDP协议
    单机性能–lvs

    一、准备工作

    1、创建相关目录

    1. # 创建存放haproxy 编排文件的目录
    2. mkdir -p /data/docker-compose/haproxy
    3. # 创建存放haproxy和keepalived同步文件的目录
    4. mkdir -p /data/docker-data/haproxy/keepalived

    2、安装docker-compose

    1. # 升级 pip
    2. pip3 install --upgrade pip
    3. # 指定 docker-compose 版本安装
    4. pip install docker-compose==1.22
    5. # 验证是否安装成功
    6. docker-compose -v

    3、创建Dockerfile

    1. mkdir -p /data/docker-dockerfile/haproxy
    2. cd /data/docker-dockerfile/haproxy
    3. vi Dockerfile
    4. FROM haproxy:2.4
    5. USER root
    6. RUN apt-get update \
    7. && apt-get install -y net-tools inetutils-ping vim iproute2 keepalived \
    8. && echo root:123456 | chpasswd

    4、构建haproxy镜像

    1. docker build -t haproxy2.4 .
    2. docker rmi docker.io/haproxy:2.4

     

    二、构建haproxy集群

    1、集群规划

    容器名IP映射端口用户名及密码
    haproxy_101170.200.9.1018101:8100,5601:5600root,123456
    haproxy_102170.200.9.1028102:8100,5602:5600root,123456

    2、创建docker-compose.yaml

    1. cd /data/docker-compose/haproxy
    2. vi docker-compose.yaml
    3. version: "3.6"
    4. services:
    5. haproxy_server_101:
    6. image: haproxy2.4
    7. ports:
    8. - "8101:8100"
    9. - "5601:5600"
    10. networks:
    11. haproxy:
    12. ipv4_address: 170.200.9.101
    13. privileged: true
    14. volumes:
    15. - /data/docker-data/haproxy:/haproxy
    16. - /data/docker-data/haproxy/keepalived/101:/keepalived
    17. container_name: haproxy_101
    18. command: haproxy -f /haproxy/haproxy.cfg
    19. haproxy_server_102:
    20. image: haproxy2.4
    21. ports:
    22. - "8102:8100"
    23. - "5602:5600"
    24. networks:
    25. haproxy:
    26. ipv4_address: 170.200.9.102
    27. privileged: true
    28. volumes:
    29. - /data/docker-data/haproxy:/haproxy
    30. - /data/docker-data/haproxy/keepalived/102:/keepalived
    31. container_name: haproxy_102
    32. command: haproxy -f /haproxy/haproxy.cfg
    33. networks:
    34. haproxy:
    35. driver: bridge
    36. ipam:
    37. config:
    38. - subnet: "170.200.9.0/24"

    3、创建haproxy的配置文件,并配置rabbitmq集群的负载均衡

    1. cd /data/docker-data/haproxy
    2. vi haproxy.cfg
    3. global
    4. #日志输出配置,所有日志都记录在本机,通过local0输出
    5. log 127.0.0.1 local0 info
    6. #最大连接数
    7. maxconn 10240
    8. #以守护进程方式运行
    9. daemon
    10. defaults
    11. #应用全局的日志配置
    12. log global
    13. mode http
    14. #超时配置
    15. timeout connect 5000
    16. timeout client 5000
    17. timeout server 5000
    18. timeout check 2000
    19. #haproxy的客户页面
    20. listen http_front
    21. bind 0.0.0.0:8100
    22. mode http
    23. option httplog
    24. stats uri /haproxy
    25. # web界面的用户和密码
    26. stats auth root:123456
    27. stats refresh 5s
    28. stats enable
    29. #负载均衡配置
    30. listen rabbimq_ha
    31. bind 0.0.0.0:5600
    32. option tcplog
    33. mode tcp
    34. #轮询算法
    35. balance roundrobin
    36. server mq1 192.168.78.200:5671 check inter 5000 rise 2 fall 2
    37. server mq2 192.168.78.200:5672 check inter 5000 rise 2 fall 2
    38. server mq3 192.168.78.200:5673 check inter 5000 rise 2 fall 2

    4、构建haproxy

    1. cd /data/docker-compose/haproxy
    2. docker-compose up -d

    5、访问192.168.78.200:8101/haproxy,查看当前haproxy状态

     

    6、总结

    到这里,就已经完成了haproxy的构建,并且将rabbitmq集群的负载均衡也配置完毕了。

    这里虽然在haproxy中安装了keepalived,但在本文中并没有使用到keepalived,后面会单独开一章来写keepalived,到时候会用到。

  • 相关阅读:
    pdf导出实例(itestpdf)
    国产操作系统之优麒麟安装
    Vulnhub靶机:CEREAL_ 1
    【Leetcode】1054. Distant Barcodes
    java毕业设计——基于java+Java Swing+jsp的企业快信系统设计与实现(毕业论文+程序源码)——企业快信系统
    为什么前后端传数据要用json?
    Promise
    二进制数据的贝叶斯非参数聚类算法(Matlab代码实现)
    正式发布丨VS Code 1.71
    西门子828D机床解锁、I7I54833762分享
  • 原文地址:https://blog.csdn.net/qq_27229113/article/details/126017255