Docker安装haproxy集群

本文介绍如何使用HAProxy实现MySQL的读写分离,通过配置文件详细展示了负载均衡算法的设置,包括写操作的单节点负载和读操作的多节点负载平衡。同时,文章还提到了用于健康检查的haproxy用户及其权限配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这两台主主备复制的mysql的基础上做的HAproxy读写分离

docker pull haproxy
#偷懒的做法,好一点的做法是写脚本。我目前用的个mysql空密码登录的账号用于检测

docker run -d -it --name haproxy \
 -v /docker/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro \
 -v /docker/haproxy/logs/:/var/log/ \
    -p 20006:23306 -p 30006:33306 -p 6888:7888 \
 --restart=always \
  haproxy

######## mysql负载均衡写配置 ###############
listen haproxy_23306_write_single
        bind 0.0.0.0:23306
        mode tcp
        # 负载均衡算法
        # static-rr 权重, leastconn 最少连接, source 请求IP, 轮询 roundrobin
        balance static-rr
        # 日志格式
        option tcplog
        # 在 mysql 创建一个没有权限的haproxy用户,密码为空。 haproxy用户
         # create user 'haproxynopassword'; FLUSH PRIVILEGES;
       option mysql-check user haproxynopassword
	 # 这里是容器中的IP地址,由于配置的是轮询roundrobin,weight 权重其实没有生效
        server MYSQL_66 192.168.39.66:13306 check weight 1 maxconn 2000
        server MYSQL_67 192.168.39.67:13306 check weight 1 maxconn 2000
        # 使用keepalive检测死链
        # option tcpka
#########################################
######## mysql负载均衡读配置 ###############
listen haproxy_33306_read_multi
        bind 0.0.0.0:33306
        mode tcp
        # 负载均衡算法
        # static-rr 权重, leastconn 最少连接, source 请求IP, 轮询 roundrobin
        balance static-rr
        # 日志格式
        option tcplog
        # 在 mysql 创建一个没有权限的haproxy用户,密码为空。 haproxy用户
        # create user 'haproxynopassword'; FLUSH PRIVILEGES;
       option mysql-check user haproxynopassword
         # 这里是容器中的IP地址,由于配置的是轮询roundrobin,weight 权重其实没有生效
	server MYSQL_69 192.168.39.69:13306 check weight 5 maxconn 2000 
        server MYSQL_66 192.168.39.66:13306 check weight 1 maxconn 2000 backup
        server MYSQL_67 192.168.39.67:13306 check weight 1 maxconn 2000 backup
        # 使用keepalive检测死链
        # option tcpka
#########################################

正常在线的主机
在这里插入图片描述

停掉67后在这里插入图片描述

Docker构建HAProxy的步骤如下: 1. 首先,创建相关目录。使用以下命令创建存放HAProxy编排文件的目录: ``` mkdir -p /data/docker-compose/haproxy ``` 使用以下命令创建存放HAProxy和Keepalived同步文件的目录: ``` mkdir -p /data/docker-data/haproxy/keepalived ``` 2. 安装Docker Compose。使用以下命令升级pip: ``` pip3 install --upgrade pip ``` 使用以下命令指定Docker Compose版本安装: ``` pip install docker-compose==1.22 ``` 使用以下命令验证是否安装成功: ``` docker-compose -v ``` 3. 创建Dockerfile。使用以下命令创建Dockerfile文件: ``` mkdir -p /data/docker-dockerfile/haproxy cd /data/docker-dockerfile/haproxy vi Dockerfile ``` 在Dockerfile中添加以下内容: ``` FROM haproxy:2.4 USER root RUN apt-get update \ && apt-get install -y net-tools inetutils-ping vim iproute2 keepalived \ && echo root:123456 | chpasswd ``` 4. 构建HAProxy镜像。使用以下命令构建HAProxy镜像: ``` docker build -t haproxy2.4 . ``` 使用以下命令删除原有的HAProxy镜像: ``` docker rmi docker.io/haproxy:2.4 ``` 这样,你就成功地构建了HAProxy镜像。\[1\]\[2\] HAProxy是一种提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,特别适用于负载特大的web站点。它可以运行在当前的硬件上,支持数以万计的并发连接,并且可以很简单安全地整合进你当前的架构中,保护你的web服务器不被暴露到网络上。\[3\] #### 引用[.reference_title] - *1* *3* [在dockerhaproxy安装以及mysql的负载均衡配置](https://blog.youkuaiyun.com/yaxuan88521/article/details/120107009)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Docker快速构建HaProxy集群,并配置好rabbitmq的负载均衡](https://blog.youkuaiyun.com/qq_27229113/article/details/126017255)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值