基于docker的mysql集群搭建(二):haproxy+pxc实现mysql负载均衡

本文介绍如何使用haproxy结合Percona XtraDB Cluster (pxc)搭建MySQL集群负载均衡,包括环境准备、haproxy配置、集群搭建步骤及监控状态检查,最后探讨了高可用解决方案。

上篇记录采用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实现高可用负载均衡。下篇介绍

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值