简介;
关注+后台私信;资料;两个字可以免费领取 资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。。。
我们得到了3台实现了PXC集群的MySQL服务器 他们的IP分别是
192.168.117.111
192.168.117.112
192.168.117.113
以及利用Haproxy实现MySQL的负载均衡
我们可以利用VMware克隆一台一模一样的Haproxy负载均衡服务器,得到两台Haproxy+Keepalived服务器
他们的IP 分别是
192.168.117.120
192.168.117.121
这两台服务器上都安装了Keepalived 和Haproxy
如果想实现生产环境上搭建 你可以利用scp、rsync、以及自己写的xsync脚本命令实现分发服务器。这样你就不用再成百上千台服务器上一个一个安装和一个一个配置服务器。重复而且无聊工作量还大的事情我们尽量选择偷懒
如果你是利用VMware虚拟机创建的,比如博主 并没有资金去购买那么多台服务器,而且只是学习为目的,并不是用来生产的。
在创建好一台服务器后我们进行克隆,我们以Haproxy为例,因为我在上篇博客中只创建了一台Haproxy服务器,而且也没有讲清楚Keepalived的具体作用在这台Haproxy服务器上体现了什么作用。
我们进行克隆,都Haproxy服务器右键(需要选中才行,并且需要关机状态,我们先进行关机然后才可以克隆)
选中虚拟机当前状态
这里我们选择链接克隆 这种方式如果删除了原来的,则链接就会无法使用
如果你选择完整克隆则互不影响。
链接克隆会很快完成点完后即可创建成功立马响应,而且占用磁盘空间很小。但是完整克隆则会对文件进行复制这很慢,因为虚拟机Ubuntu本身也挺大。占有磁盘空间大
基于上面的优缺点我这里选择 链接克隆,只要不删除原先的虚拟机即可
这样我们就完成了一台服务器的复制,然后你需要 修改ip
原本我们需要修改一下Keepalived和Haproxy的配置文件但鉴于之前已经修改好了,两台服务器所以可以不用修改,直接使用即可
Haproxy实现负载均衡
负载均衡服务器有很多有大名鼎鼎的Nginx、Apache和LVS
但此次选择的是老牌的数据库中间件Haproxy
之所以选择Haproxy原因是Haproxy经过了时间考验,得到了大量用户的肯定。
先拉取Haproxy镜像
创建一个网络,将mysql集群放在这个环境下
接着创建配置文件(镜像中是没有配置文件的,所以先不要启动容器)
配置文件内容
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:6666
#访问协议
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
————————————————
版权声明:本文为CSDN博主「诗水人间」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41813208/article/details/105440372
创建haproxy容器
docker run -it -d -p 4001:6666 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 --restart=always haproxy
进入容器并将配置文件生效
docker exec -it h1 bash
haproxy -f /usr/local/etc/haproxy/haproxy.cfg
接着你需要在mysql数据库中 创建一个无密码的haproxy用户用来检测mysql集群状态
CREATE USER `haproxy`@`%` IDENTIFIED WITH mysql_native_password;
具体详情查看配置文件的注释说明
然后在浏览器输入宿主机的ip+端口/dbs 会要求输入用户名和密码
在配置文件中规定账号admin 密码123456,端口是在docker run命令指定的
总结;
输入用户名密码后即可查看后台管理中mysql的情况如图所示
本文暂时没有评论,来添加一个吧(●'◡'●)