上篇记录采用pxc搭建mysql集群,本篇记录基于haproxy+pxc实现mysql负载均衡
haproxy介绍
HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上

环境准备
docker:docker-ce
pxc :percona/percona-xtradb-cluster:5.7
haproxy: docker :laste
两台虚拟机服务器:192.168.44.139
192.168.44.140
haproxy搭建
因为后面要做haproxy集群,用keepalived实现高可用,因此需要每个服务器都运行haproxy,搭建方法,和配置文件一摸一样,因此只记录一个。
注意:所有集群搭建中的服务器需要在同一网段
1、首先需要给mysql集群创建一个haproxy用来监听mysql各节点状态
#随便进入一个pxc节点容器中
docker exec -it mysql1 /bin/bash
# 进入容器后执行:
mysql -uroot -p
# 输入上面设置的密码 后执行:
create user 'haproxy'@'%' identified by '';
#上面语句意思是创建一个 无需要登陆密码验证的用户
2、准备映射目录和配置文件
#创建目录
/mnt/vdb1/pxc/haproxy
#编辑配置文件haproxy.cfg,然后上传至此目录下,配置文件内容如下
global
#工作目录
chroot /usr/local/etc/haproxy
#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
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
#统计报告格式
stats realm Global\ statistics
#登陆帐户信息
stats auth admin:1qazXSW@
#数据库负载均衡
listen proxy-mysql
#访问的IP和端口(前面ip=0代表任何ip都可访问),因为我是和mysql服务共用服务器,所以这里不用3306端口
bind 0.0.0.0:3307
#网络协议
mode tcp
#负载均衡算法(轮询算法)
#轮询算法:roundrobin
#权重算法:static-rr
#最少连接算法:leastconn
#请求源IP算法:source
balance roundrobin
#日志格式
option tcplog
#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
option mysql-check user haproxy
server mysqldb1 192.168.44.139:3306 check weight 1 maxconn 2000
server mysqldb2 192.168.44.140:3306 check weight 1 maxconn 2000
#使用keepalive检测死链
option tcpka
3、创建haproxy容器
docker run -it \
-p 4001:8888 -p 4002:3307 \
-v /mnt/vdb1/pxc/haproxy:/usr/local/etc/haproxy \
--name haproxy \
--privileged \
--net=host \
-d haproxy
4、进入容器,加载配置文件
容器启动成功后需要进入容器,加载映射到容器中的配置文件,才能成功配置haproxy容器
#进入容器
docker exec -it h1 bash
#加载配置文件
root@d67237ec2c6a:/# haproxy -f /usr/local/etc/haproxy/haproxy.cfg
至此haproxy配置完成,浏览期链接查看监控状态
http://192.168.44.139:8888/dbs

用navicat通过haproxy链接数据库,192.168.44.139:3307

可以连接,和pxc01、pxc02中的一样
至此搭建完成
但是这里有个问题,如果我用程序,比如jdbc去链接数据库 如果192.168.44.139的haproxy倒了,那么程序也就倒了,我还得去手动的切换jdbc的链接。然后重启服务,这样就不是高可用了
基于以上问题,查资料发现可以通过keepalived+haproxy实现高可用负载均衡。下篇介绍
本文介绍如何使用haproxy结合Percona XtraDB Cluster (pxc)搭建MySQL集群负载均衡,包括环境准备、haproxy配置、集群搭建步骤及监控状态检查,最后探讨了高可用解决方案。
813

被折叠的 条评论
为什么被折叠?



