(mac)docker 搭建MySQL集群的负载均衡

docker 搭建myql集群 参见上一篇 https://blog.csdn.net/a15835774652/article/details/102978098 

docker mysql 集群的负载均衡组件这里用到的是haproxy

简单说一下haproxy

HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性负载均衡,以及基于TCPHTTP的应用程序代理

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

HAProxy实现了一种事件驱动单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。

包括 GitHubBitbucket、Stack Overflow、RedditTumblrTwitter和 Tuenti在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。 (参考百度文库)

拉取haproxy 镜像

docker pull haproxy

(2)创建haproxy配置文件,这里使用bind mounting的方式

touch /usr/local/develope/haproxy/haproxy.cfg 

haproxy.cfg 文件

global 
    #工作目录,这边要和创建容器指定的目录对应 
    chroot /usr/local/etc/haproxy 
    #日志文件
    log 127.0.0.1 local5 info 
    #守护进程运行
    daemon     
defaults
    log global
    mode http
    #日志格式
    option httplog 
    #日志中不记录负载均衡的心跳检测记录 
    option dontlognull 
    #连接超时(毫秒)
    timeout connect 5000 
    #客户端超时(毫秒) 
    timeout client 50000
    #服务器超时(毫秒) 
    timeout server 50000
    #监控界面
    listen admin_stats
    #监控界面的访问的IP和端口
    bind 0.0.0.0:8888
    #URI相对地址
    stats uri /dbs_monitor
    #统计报告格式
    stats realm Global\statistic
    #登陆帐户信息
    stats auth admin:admin
    #数据库负载均衡
    listen proxy-mysql 
    #访问的IP和端口,haproxy开发的端口为3306 #假如有人访问haproxy的3306端口,则将请求转发给下面的数据库实例 
    bind 0.0.0.0:3306
    #网络协议
    mode tcp
    #负载均衡算法(轮询算法)
    #轮询算法:roundrobin
    #权重算法:static-rr
    #最少连接算法:leastconn
    #请求源IP算法:source
    balance roundrobin
    #日志格式
    option tcplog 
    #在MySQL中创建一个没有权限的haproxy用户,密码为空。
    #Haproxy使用这个账户对MySQL数据库心跳检测
    option mysql-check user haproxy
    server MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000 
    server MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000
    server MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000 
    #使用keepalive检测死链
    option tcpka

(3)接下来进行启动 haproxy

启动命令

docker run -d -p 8888:8888 -p 3305:3306 -v /usr/local/develope/haproxy:/usr/local/etc/haproxy --name haproxy --net=pxc-net  --privileged  haproxy

(4)根据haproxy.cfg文件启动haproxy 

docker exec -it haproxy bash

haproxy -f /usr/local/etc/haproxy/haproxy.cfg

(5)在MySQL数据库上创建用户,用于心跳检测

CREATE USER 'haproxy'@'%' IDENTIFIED BY '';

(6)浏览器访问

localhost:8888/dbs_monitor  用户名密码都是:admin

登录后可看到如下 界面 

说明搭建成功

然后在通过mysql 可视化工具进行连接到haproxy 的3305(注意这里根据你启动的端口进行连接)

ip localhost 端口 3305 账号密码都是 root 

 连接成功后进行查看我们之前的user表

 进行操作一下 添加一条新的数据 

同时去节点一 节点二 节点三 的user表中都可以看到 该数据 

这里宣布搭建完成 实现了mysql的负载均衡 

猜你喜欢

转载自blog.csdn.net/a15835774652/article/details/102987410