docker下使用haproxy

docker下使用haproxy

一、haproxy docker镜像安装运行

docker学习系列14 使用haproxy实现mysql集群的负载均衡
参考URL: https://cloud.tencent.com/developer/article/1332571

1. 下载 haproxy镜像

docker pull haproxy:1.9.6

查看docker社区关于haproxy官方镜像相关信息
https://github.com/docker-library/docs/tree/master/haproxy 关于该镜像的描述如下:

Since no two users of HAProxy are likely to configure it exactly alike, this image does not come with any default configuration.
由于haproxy的两个用户都不可能完全相同地配置,因此此映像不附带任何默认配置。 (https://cbonte.github.io/haproxy-dconv/)

Please refer to upstream’s excellent (and comprehensive) documentation on the subject of configuring HAProxy for your needs.
请参阅上游优秀(和全面)文档有关haproxy配置。

2. 根据不同需求配置haproxy

写配置文件haproxy.cfg

/home/haproxy下的配置文件名必须为:haproxy.cfg
等会启动容器的时候把目录映射的容器中 -v /home/docker/haproxy:/usr/local/etc/haproxy

3. 启动haproxy容器

docker run -itd --name haproxy -m 1024M -v /home/docker_haproxy/etc/haproxy:/etc/haproxy -v /home/docker_haproxy/var/lib/haproxy:/var/lib/haproxy -p 8082:80 -p 8443:443 docker.io/dockercloud/haproxy

docker run --name haproxy -e LANG=en_US.UTF-8 -v /showcase/haproxy/haproxy.cfg:/etc/haproxy/haproxy.cfg --restart=always --net host -d haproxy:latest

docker run -d --name haproxy -p 80:80 -p 443:443 -p 2222:2222
-p 9090:9090 --restart=always -v /home/haproxy:/usr/local/etc/haproxy 镜像名

二、haproxy应用场景

1. haproxy配置mysql负载均衡

HAProxy厉害的点,不需要写mysql的健康检测,软件本身可以检测出mysql服务停止,然后切换到正常的服务器上,而且当mysql服务器重启之后,HAProxy不需要重启,也能识别并且切换上去。

1.1 haproxy.cfg 配置文件
global
        daemon
        # nbproc 1
        # pidfile /var/run/haproxy.pid
        # 工作目录
        chroot /usr/local/etc/haproxy

defaults
        log 127.0.0.1 local0 err #[err warning info debug]
        mode http                #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
        retries 2                #两次连接失败就认为是服务器不可用,也可以通过后面设置
        option redispatch        #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
        option abortonclose      #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
        option dontlognull       #日志中不记录负载均衡的心跳检测记录
        maxconn 4096             #默认的最大连接数
        timeout connect 5000ms   #连接超时
        timeout client 30000ms   #客户端超时
        timeout server 30000ms   #服务器超时
        #timeout check 2000      #=心跳检测超时

######## 监控界面配置 #################
listen admin_status
        # 监控界面访问信息
        bind 0.0.0.0:8888
        mode http
        # URI相对地址
        stats uri /dbs
        # 统计报告格式
        stats realm Global\ statistics
        # 登录账户信息
        stats auth admin:123456
########frontend配置##############

######## mysql负载均衡配置 ###############
listen proxy-mysql
        bind 0.0.0.0:3306
        mode tcp
        # 负载均衡算法
        # static-rr 权重, leastconn 最少连接, source 请求IP, 轮询 roundrobin
        balance roundrobin
        # 日志格式
        option tcplog
        # 在 mysql 创建一个没有权限的haproxy用户,密码为空。 haproxy用户
        # create user 'haproxy'@'%' identified by ''; FLUSH PRIVILEGES;
        option mysql-check user haproxy
         # 这里是容器中的IP地址,由于配置的是轮询roundrobin,weight 权重其实没有生效
        server MYSQL_1 192.168.130.100:3306 check weight 1 maxconn 2000
        server MYSQL_2 192.168.130.101:3306 check weight 1 maxconn 2000
        #server MYSQL_3 192.168.130.102:3306 check weight 1 maxconn 2000
        # 使用keepalive检测死链
        # option tcpka
#########################################

配置解释:

  1. option mysql-check user haproxy | 用于心跳的mysql用户,请在mysql集群数据库进行创建该用户haproxy,读者可自己配置该用户名。在此处我们按照约定俗成定为haproxy。
  2. server MYSQL_3 192.168.130.3:3306 check weight 1 maxconn 2000 中
    192.168.130.3:3306(容器的ip):3306(容器的端口)
    check(心跳检测),weight 1(权重,只有当算法为static-rr才生效),maxconn 2000(最大连接数)
  3. option mysql-check user haproxy 这个用户haproxy,是haproxy进行mysql服务可用的检测用。
    在 mysql 创建一个没有权限的haproxy用户,密码为空。 haproxy用户
 # create user 'haproxy'@'%' identified by ''; FLUSH PRIVILEGES;
1.2 运行haproxy docker容器
docker run -d --name haproxy -p 8888:8888  -p 13000:3306   -v e:/home/docker/haproxy:/usr/local/etc/haproxy haproxy:1.9.6

haproxy 指定ip加入特定网络mynetwork(自己定义的docker网络)

docker run -d --name haproxy -p 8888:8888  -p 13000:3306   -v e:/home/docker/haproxy:/usr/local/etc/haproxy --network mynetwork --ip 192.168.130.10  haproxy:1.9.6
1.3 web界面访问haproxy监控界面

如下,url的访问路径由配置文件的以下参数控制:

    # 监控界面访问信息
    bind 0.0.0.0:8888
    mode http
    # URI相对地址
    stats uri /dbs

三、haproxy常用命令

1. 重载haproxy配置,不用重启haproxy

If you used a bind mount for the config and have edited your haproxy.cfg file, you can use HAProxy’s graceful reload feature by sending a SIGHUP to the container:

如果你挂载haproxy配置并且修改了你的haproxy.cfg文件,可以使用如下命令优雅的重载配置:

$ docker kill -s HUP my-running-haproxy

四、参考

https://github.com/docker-library/haproxy
https://cbonte.github.io/haproxy-dconv/1.9/management.html

HAProxy实现mysql负载均衡
参考URL: https://www.cnblogs.com/linkstar/p/6505766.html

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
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.csdn.net/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.csdn.net/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
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值