Docker安装haproxy集群
阅读原文时间:2021年04月20日阅读:1

在这两台主主备复制的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后