居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡

一、简介

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡。

 

二、环境配置


1、系统:centos7.3

2、docker版本:Docker version 1.13.1, build 07f3374/1.13.1

3、haproxy镜像:haproxy

 

三、安装部署

1、拉取镜像

docker pull haproxy

成功拉取后的效果如图所示:

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第1张图片

 

2、在宿主机创建haproxy配置文件的映射目录

mkdir -p /usr/local/src/haproxy/h1

 

3、在宿主机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:123456
#数据库负载均衡
listen  proxy-mysql
	#访问的IP和端口
	bind  0.0.0.0:3306  
    #网络协议
	mode  tcp
	#负载均衡算法(轮询算法)
	#轮询算法:roundrobin
	#权重算法:static-rr
	#最少连接算法:leastconn
	#请求源IP算法:source 
    balance  roundrobin
	#日志格式
    option  tcplog
	#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
    option  mysql-check user haproxy
    server  MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000  
    server  MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000  
	server  MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000 
	server  MySQL_4 172.18.0.5:3306 check weight 1 maxconn 2000
	server  MySQL_5 172.18.0.6:3306 check weight 1 maxconn 2000
	#使用keepalive检测死链
    option  tcpka  

 

4、创建haproxy的docker容器

docker run -it -d \
-p 4001:8888 -p 4002:3306 \
-v /usr/local/src/haproxy/h1:/usr/local/etc/haproxy \
--name h1 --privileged --net=net1 \
--ip 172.18.0.7 haproxy

成功执行后效果如图所示:

 

5、进入haproxy容器并启动服务

1)进入容器 

docker exec -it h1 bash

2)启动服务

haproxy -f /usr/local/etc/haproxy/haproxy.cfg

 

6、在MySQL创建haproxy账号

create user 'haproxy'@'%' identified by '';
flush privileges;

操作如图所示:

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第2张图片

 

7、进入监控页面查看

地址:http://192.168.1.127:4001/dbs

账号密码:admin/123456

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第3张图片

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第4张图片

 

四、测试

1、使用MySQL客户端连接Haproxy,操作如图所示

 下图是使用haproxy账号登录的效果

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第5张图片

下图是使用root账号登录的效果

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第6张图片

 

2、在h1这个连接的数据库上测试数据库的测试表中添加数据看集群中的数据库是否有该数据

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第7张图片

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第8张图片

 

3、挂掉一个数据库node5测试

1)停掉node5

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第9张图片

 

2)页面查看监控信息

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第10张图片

 

3)h1连接添加数据

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第11张图片

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第12张图片

恭喜你创建成功!

 

OK,TKS!

欢迎大家关注小编(IT蓝)的微信公众平台:我的好帮手(MyGoodHelper),是您出行、生活、学习和娱乐的得力助手,值得拥有。我们一起进步。OK,TKS!

居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡_第13张图片

 

 

你可能感兴趣的:(居于Docker的PXC和Haproxy实现MySQL数据库的负载均衡)