Mycat的高可用与负载均衡

Posted 软件工程师涨薪姿势

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mycat的高可用与负载均衡相关的知识,希望对你有一定的参考价值。

Mycat作为一个代理层中间件,Mycat系统的高可用涉及到Mycat本身的高可用以及后端mysql的高可用,前面章节所讲的MySQL高可用方案都可以在此用来确保Mycat所连接的后端MySQL服务的高可用性。在大多数情况下,建议采用标准的MySQL主从复制高可用性配置并交付给Mycat来完成后端MySQL节点的主从自动切换。

Mycat的高可用与负载均衡
主从复制

如图所示,MySQL节点开启主从复制的配置方案,并将主节点配置为Mycat的dataHost里的writeNode,从节点配置为readNode,同时Mycat内部定期对一个dataHost里的所有writeHost与readHost节点发起心跳检测,正常情况下,Mycat会将第一个writeHost作为写节点,所有的DML SQL会发送给此节点,若Mycat开启了读写分离,则查询节点会根据读写分离的策略发往readHost(+writeHost)执行,当一个dataHost里面配置了两个或多个writeHost的情况下,如果第一个writeHost宕机,则Mycat会在默认的3次心跳检查失败后,自动切换到下一个可用的writeHost执行DML SQL语句,并在conf/dnindex.properties文件里记录当前所用的writeHost的index(第一个为0,第二个为1,依次类推),注意,此文件不能删除和擅自改变。

当原来配置的MySQL写节点宕机恢复以后,怎么重新加入Mycat,要不要恢复为原来的写节点?

保持现有状态不变,改旗易帜,恢复后的MySQL节点作为从节点,跟随新的主节点,重新配置主从同步,原先跟随该节点做同步的其他节点也同样更换,重新配置同步源,这些节点的数据手工完成同步以后,
再加入Mycat里。

最终方案

软件级负载均衡haproxy + 具有浮动VIP功能的keepalived + mycat

集群图

集群部署图的理解:

1、    keepalived和haproxy必须装在同一台机器上(如172.17.210.210.83机器上,keepalived和haproxy都要安装),keepalived负责为该服务器抢占vip(虚拟ip),抢占到vip后,对该主机的访问可以通过原来的ip(172.17.210.210.83)访问,也可以直接通过vip(172.17.210.210.103)访问。

2、    172.17.210.64上的keepalived也会去抢占vip,抢占vip时有优先级,配置keepalived.conf中的(priority 150 #数值愈大,优先级越高,172.17.210.64上改为120,master和slave上该值配置不同)决 定。但是一般哪台主机上的keepalived服务先启动就会抢占到vip,即使是slave,只要先启动也能抢到

3、    haproxy负责将对vip的请求分发到mycat上。起到负载均衡的作用,同时haproxy也能检测到mycat是否存活,haproxy只会将请求转发到存活的mycat上。


4、    如果一台服务器(keepalived+haproxy服务器)宕机,另外一台上的keepalived会立刻抢占vip并接管服务。如果一台mycat服务器宕机,haporxy转发时不会转发到宕机的mycat上,所以mycat依然可用。



以上是关于Mycat的高可用与负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

基于Haproxy的高可用实战

基于Haproxy的高可用实战

mycat实现简单的mysql集群负载均衡

mycat实现简单的mysql集群负载均衡

mycat实现简单的mysql集群负载均衡

mycat实现简单的mysql集群负载均衡