• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

HAproxy+Keepalied做MySQL负载均衡

MySQL 彭东稳 8年前 (2017-01-10) 37507次浏览 已收录 0个评论

HAproxy介绍

HAProxy详细介绍(一)

HAProxy安装配置(二)

Keepalive介绍

高可用软件keepalived详解

应用服务器对只读的应用程序连接虚拟IP地址,连接到haproxy,然后通过haproxy将TCP协议转移到下面的2个MySQL SLAVE数据库服务器中。Haproxy在此做4层的TCP交换服务。keepalived为了防止haproxy单点故障。但是我这里使用两个VIP(虚拟IP)就可以做到haproxy代理服务器的高可用负载均衡。对于这两个VIP而言,可以添加两条DNS记录进行轮训,也可以在程序中直接分开使用,当任何一个haproxy节点有问题时这两个VIP都能转到同一个节点上继续提供服务。

实验架构如下图:

HAproxy+Keepalied做MySQL负载均衡

一、MySQL配置

这里安装两个MySQL实例,由于我是测试环境,我这里就在同一台机器上创建两个数据库实例进行测试(3306和3307)。数据库安装这里就不介绍了,但为了测试需要在两个实例中分别创建一个haproxy账号。

10.99.73.10:(3306,3307)

二、haproxy+keepalived配置

在配置之前,先将HA中个节点进行时间同步,主机名之间相互解析,以及配置双机互信,关闭防火墙和selinux。

haproxy-01

haproxy-02

安装haproxy和keepalived

配置(haproxy-01,haproxy-02)

对于global端的log配置,需要在/etc/rsyslog.conf配置文件中,添加’local2.* /var/log/haproxy.log’,并且启用$ModLoad imudp,$UDPServerRun 514,$ModLoad imtcp,$InputTCPServerRun 514此四项功能,最后重启rsyslog进程。

启动两个节点

配置keepalived:双主模型

haproxy-01

haproxy-02

PS:修改了优先级和角色。

重启keepalived

查看启动情况

查看这两个节点获取IP的情况

通过这两个节点的的IP可以看出,haproxy-01节点担任172.29.28.253的主,haproxy-02担任172.29.28.254的主,达到了负载均衡的效果。

三、测试

3.1 测试负载均衡

先来测试双VIP负载均衡效果,随便找个机器使用mysql客户端分别连接VIP地址,haproxy使用的调度算法是轮训,所以应该是每次分配到一个不同的real server服务器,效果如下:

然后,我们也可以测试另一个VIP。

3.2 测试故障转移

我们关闭掉haproxy-01节点。

然后去看haproxy-02节点漂移过来的VIP。

现在我们可以看出,两个IP都漂移到了haproxy-02节点上了,再把haproxy-01打开后,172.29.28.100又会飘回去。

并且在这期间我一直ping主节点的VIP,在切换过程中很快,只丢了两个包。

四、状态页面

在haproxy配置文件中提供了haproxy web,用来查看haproxy状态的。

访问:http://172.29.28.193:8080/haproxyadmin?stats

HAproxy+Keepalied做MySQL负载均衡

这个界面提供了很多信息,具体可以查询相关资料。

五、测试HAproxy对后端健康状态检查

在haproxy配置时,有这么两条记录。

将此server命名为mysql_01,每隔3000ms检测一个健康状态,如果检测3次都失败,将此server剔除,在离线的状态下,只要检测1次成功,就让其上线。

下面就来测试这些规则,首先找一台mysql客户端一直跑这个脚本,主要测试后端负载均衡。

然我们在后端(MySQL)主机上,添加一条iptables模拟3306端口故障。

查看状态页面,会发现haproxy已经剔除了3306端口,从状态页面可以看出Chk看到向后端检查了3次,Dwntme表示宕机的时间。

HAproxy+Keepalied做MySQL负载均衡

最后可以当一台后端MySQL故障后,看脚本执行情况。

六、为keepalived提供检测haproxy的脚本

通过前面的keepalived故障模拟可以看出,当keepalived挂掉之后,或者当主机宕机时,VIP是可以切换到备机工作。但是如果keepalived没有挂,并且主机也没有宕机,而是haproxy自身挂掉了呢?这个时候不会有任何切换动作,下面我们要做的就是为keepalived提供一个脚本用来检测haproxy是否正常工作,如果没有正常工作可以再次启动haproxy,或者关闭keepalived自身。这样一来,keepalived自身挂掉了,那么VIP就可以切换到备机上工作了。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (4)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!