生活资讯
Nginx集群+Haproxy集群使用以及数据库的负载均衡
2022-07-30 23:59  

简介;

关注+后台私信;资料;两个字可以免费领取 资料内容包括: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.111192.168.117.112192.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),等级infolog127.0.0.1local5info#守护进程运行daemondefaultslogglobalmodehttp#日志格式optionhttplog#日志中不记录负载均衡的心跳检测记录optiondontlognull#连接超时(毫秒)timeoutconnect5000#客户端超时(毫秒)timeoutclient50000#服务器超时(毫秒)timeoutserver50000#监控界面 listenadmin_stats#监控界面的访问的IP和端口bind0.0.0.0:6666#访问协议modehttp#URI相对地址statsuri/dbs#统计报告格式statsrealmGlobalstatistics#登陆帐户信息statsauthadmin:123456#数据库负载均衡listenproxy-mysql#访问的IP和端口bind0.0.0.0:3306#网络协议modetcp#负载均衡算法(轮询算法、后面的权重不会生效)#轮询算法:roundrobin#权重算法:static-rr#最少连接算法:leastconn#请求源IP算法:source balanceroundrobin#日志格式optiontcplog#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测optionmysql-checkuserhaproxyserverMySQL_1172.18.0.2:3306checkweight1maxconn2000serverMySQL_2172.18.0.3:3306checkweight1maxconn2000serverMySQL_3172.18.0.4:3306checkweight1maxconn2000serverMySQL_4172.18.0.5:3306checkweight1maxconn2000serverMySQL_5172.18.0.6:3306checkweight1maxconn2000#使用keepalive检测死链optiontcpka————————————————版权声明:本文为CSDN博主「诗水人间」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_41813208/article/details/105440372

创建haproxy容器

dockerrun-it-d-p4001:6666-p4002:3306-v/home/soft/haproxy:/usr/local/etc/haproxy–nameh1–privileged–net=net1–ip172.18.0.7–restart=alwayshaproxy

进入容器并将配置文件生效

docker exec-it h1 bash
haproxy -f /usr/local/etc/haproxy/haproxy.cfg

接着你需要在mysql数据库中 创建一个无密码的haproxy用户用来检测mysql集群状态

CREATEUSER`haproxy`@`%`IDENTIFIEDWITHmysql_native_password;

具体详情查看配置文件的注释说明

然后在浏览器输入宿主机的ip+端口/dbs 会要求输入用户名和密码

在配置文件中规定账号admin 密码123456,端口是在docker run命令指定的

总结;

输入用户名密码后即可查看后台管理中mysql的情况如图所示

发表评论
0评