docker (six) haproxy load balancing MySQL cluster

haproxy

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 (six) haproxy load balancing MySQL cluster
  • 拉取镜像

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
    docker (six) haproxy load balancing MySQL cluster
  • 启动navicat 连接mysql 操作,看MySQLWhether the cluster data has changed
    docker (six) haproxy load balancing MySQL cluster
你可能想看:
分享给朋友: