docker下使用haproxy负载均衡MySQL

ecat 5个月前 (2019-06-11) 300

摘要

获取Mysql5.7[root@localhost /]#docker pull mysql:5.7[root@localhost ...

获取Mysql5.7

[root@localhost /]#docker pull mysql:5.7
[root@localhost /]#docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql3307 mysql:5.7
[root@localhost /]#docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql3308 mysql:5.7
[root@localhost /]#docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql3309 mysql:5.7
[root@localhost  /]#docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql3310 mysql:5.7
[root@localhost  /]#docker run -d -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql3311 mysql:5.7
[root@localhost  /]#docker run -d -p 3312:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql3312 mysql:5.7


设置MySQL权限以及连接范围

[root@localhost /]#docker exec -it container_id /bin/bash # 进入到容器内部
[root@localhost /]#mysql -uroot -p123456

GRANT ALL ON *.* TO 'root'@'%’;       # 授权给root用户所有权限
create user 'haproxy'@'%' identified by '';   #mysql中添加haproxy可以访问的账号
flush privileges;               # 刷新权限,使其生效

同样,另几个MySQL容器也做同样的处理


获取haproxy

[root@localhost /]#docker pull haproxy


创建haproxy 本地配置文件

[root@localhost /]#vim /usr/local/etc/haproxy/haproxy.cfg
global
    daemon
    nbproc 1
    chroot /usr/local/etc/haproxy

defaults
    mode tcp
    retries 2
    option redispatch
    #option abortonclos
    maxconn 4096
    timeout connect 5000ms
    timeout client 30000ms
    timeout server 30000ms
    #timeout check 200
    log 127.0.0.1 local0 err

#监控界面
listen  admin_stats
    #监控界面的访问的IP和端口
    bind  0.0.0.0:8888
    #访问协议
    mode        http
    #URI相对地址
    stats uri   /dbs
    #统计报告格式
    stats realm     Global\ statistics
    #登陆帐户信息
    stats auth  admin:123456

listen mysql57
    bind 0.0.0.0:3306
    mode tcp
    balance roundrobin
    option mysql-check user haproxy
    #maxconn 4086
    #log 127.0.0.1 local0 debug
    server s3307 172.18.0.2:3306 check
    server s3308 172.18.0.3:3306 check
    server s3309 172.18.0.4:3306 check
    server s3310 172.18.0.6:3306 check
    server s3311 172.18.0.7:3306 check
    server s3312 172.18.0.8:3306 check


运行HaProxy容器

[root@localhost /]#docker run -itd -p 8888:8888 -p 33060:3306 --privileged=true --name myhaproxy1 -v /usr/local/etc/haproxy:/usr/local/etc/haproxy haproxy

docker ps 查看

1.png


使用http://localhost:8888/dbs 查看工作状态


2.png

验证是否监控

关闭其中一台服务器的mysql,再次刷新haproxy刷新界面,即可查看到结果,发现对应的MySQL变红

3.png

重启mysql,再次刷新haproxy刷新界面,即可查看到结果,发现对应的MySQL恢复正常


有好的文章希望我们帮助分享和推广,猛戳这里欢迎来稿

分享到:
未经允许不得转载

作者:ecat
原文地址: https://www.yijinxi.com/docker/136.html发布于5个月前 (2019-06-11)
转载或复制请以超链接形式并注明出处一个简单的

4

0

发表评论中国互联网举报中心

快捷回复:

验证码

    评论列表 (暂无评论,共300人参与)参与讨论

    还没有评论,来说两句吧...