docker (six) haproxy load balancing MySQL cluster
ha-proxy是一款高性能的负载均衡软件.因为其专注于负载均衡这一些事情,因此与nginx比起来在负载均衡这件事情上做的更好,更专业.
特性:ha-proxy 作为目前流行的负载均衡软件,必须有其出色的一面.下面介绍一下ha-proxyAdvantages of load balancing software.
•支持tcp / http 两种协议层的负载均衡,使得其负载均衡功能非常丰富.
•支持多种负载均衡算法,尤其是在http模式时,有许多非常实在的负载均衡算法,适用各种需求.
•性能非常优秀,基于单进程处理模式(和Nginx类似)让其性能卓越.
•拥有一个功能出色的监控页面,实时了解系统的当前状况.
•功能强大的ACL支持,给用户极大的方便.
haproxy算法:
1.roundrobin
基于权重进行轮询,在服务器的处理时间保持均匀分布时,这是最平衡,最公平的算法.此算法是动态的,这表示其权重可以在运行时进行调整.
2.static-rr
基于权重进行轮询,与roundrobin类似,但是为静态方法,在运行时调整其服务器权重不会生效.不过,其在后端服务器连接数上没有限制
3.leastconn
新的连接请求被派发至具有最少连接数目的后端服务器.
docker 上搭建haproxy- docker search haproxy
- 拉取镜像
docker pull haproxy
- 创建对应的配置文件
vim /tmp/haproxy/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
#访问协议
mode http
#URI相对地址
stats uri /dbs_monitor
#统计报告格式
stats realm Global\ statistics
#登陆帐户信息
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数据库心跳检测
# IPThe address was created for the previous articlemysql集群
option mysql-check user haproxy
server MySQL_1 172.30.0.2:3306 check weight 1 maxconn 2000
server MySQL_2 172.30.0.3:3306 check weight 1 maxconn 2000
server MySQL_3 172.30.0.4:3306 check weight 1 maxconn 2000
#使用keepalive检测死链
option tcpka
- 创建haproxy 容器
docker run -d -p 8888:8888 -p 3306:3306 -v /tmp/haproxy:/usr/local/etc/haproxy --name haproxy01 --privileged --net=pxc-net haproxy
- 在每台MySQLCreate a user on the machine,用于心跳检测
CREATE USER ‘haproxy’@‘%’ IDENTIFIED BY ‘’;
- The browser accesses the monitoring page
http://ip地址:8888/dbs_monitor
- The account password is configured in the above configuration file:admin/admin
- 启动navicat 连接mysql 操作,看MySQLWhether the cluster data has changed