高并发项目中我们时长会进行读写分离,多主多从的数据库架构设计,通过mycat中间件进行分库分表的操作,那么在生产环境中为了避免mycat服务的单点故障,所以mycat也需要进行高可用的集群搭建。

一、mycat高可用架构拓扑图

客户端请求keepalived对外暴露出的虚拟ip地址,两个haproxy负载均衡组件,哪一个抢占到了虚拟ip就会把请求转发到对应的haproxy中,进而再将请求转发到后续的mycat中间件,该架构模式同事确保了haproxy负载均衡组件的高可用和mycat的高可用。

当其中一台haproxy宕机,keepalived 通过 vrrp 进行通信,后续的请求通过vip(虚拟ip)会被转发到正常的haproxy中。

 二、服务器准备

 

 三、mysql主从复制配置

1. 在主库master数据库的配置文件 /usr/my.cnf 中,配置如下内容

 2.在slave节点mysql数据库的my.cnf 配置如下

 

3、分别重启master、slave节点mysql数据库

service  mysql restart

4、在master主节点创建同步数据的账户,并且进行授权操作

登录mysql , mysql -u root -p 123456

5.查看master节点mysql数据的状态

 此处需要记住File 字段和 Position字段的值,后面执行主从复制命令时需要用到

6、在slave节点mysql服务器上执行如下命令

 如果报以下错误,需要先停止主从复制关系,再次执行上面的主从复制的命令。

 7、slave节点开启同步操作

start  slave

show slave status

可以看到  slave io running 和 slave sql running 都是 yes 则说明主从复制配置成功。 

8、测试验证主从配置是否成功

在主节点创建数据库和表,并向表中插入一些数据。

 四、mycat的配置

修改schema.xml 中的配置,根据实际情况配置分库分表规则以及数据库读写分离项。 

 两台mycat 配置 一模一样,配置好了之后,分别启动两个mycat。

启动完成之后,分别连接两个mycat,验证mycat是否启动成功

mysql  -h 192.168.192.157 -P 8066 -u root -p 

五、HAProxy的安装及配置

1.上传haproxy包分别到192...159 服务器和 192...160服务器

 2.解压,编译,安装haproxy包

 使用 uname -r 查看系统内核版本及系统位数

 编译完成,之后进行安装

 安装完成之后,需要创建一个haproxy的数据存放目录

 3.以第一台159服务器为例子,配置haproxy,创建haproxy 的配置文件

 haproxy.conf  配置文件的内容如下:

 

第一台159服务器的haproxy配置完成之后,在第二台160 服务器进行同样的haproxy安装及配置操作,haproxy.conf 文件中只需要修改 global 下的 node属性和description 属性接口,例如改为

mysql-haproxy-02 

备注:haproxy.conf 配置文件解析如下:

 

 

 haproxy 的负载均衡策略:

 4.启动159服务器和160服务器上的haproxy

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf

 查看haproxy是否启动成功

 最后根据配置文件访问haproxy的管理界面

 192.168.192.159:8888/admin 

输入用户名密码:

admin/123

登录成功,看到如下界面: 

 5.此时可以通过 haproxy 访问 mycat 了

可以连接第一个haproxy来访问haproxy代理的两个mycat

mysql -h 192.168.192.159 -P 48066  -u root -p

或者也可以连接第二个haproxy来访问haproxy代理的两个mycat

mysql -h 192.168.192.159 -P 48066  -u root -p

当其中一个mycat挂掉了之后,haproxy会把所有的请求都转发到正常的mycat节点上。

六、keepalived 安装及配置 

每个keepalived会一直check自己服务器上面的haproxy,当发现自己服务器上的haproxy挂掉了之后,就也会把自身给杀掉,这样第二台机器上面的keepalived就无法收到第一台机器上的keepalived发送过来的心跳包,那么之后的虚拟ip都会只绑定第二台服务器。这样就利用keepalived确保了haproxy的高可用。

1.keepalived 的安装,配置

 

 

 修改配置文件   /etc/keepalived/keepalived.conf

Master  keepalived配置:

 

 

 还需要加上这个这个配置,用来检查haproxy服务是否存活

 

 编写检测haproxy是否存活的haproxy_check.sh校验脚本 

 判断haproxy 进程是否存活,进程存在是 wc -l 返回1 ,如果返回0,则重启haproxy,再判断haproxy 的进程 wc -l 的值是否是1,如果还是0,则停止keepalived 服务。

 最后 赋予 haproxy_check.sh脚本文件777权限

chmod 777  haproxy_check.sh

slave keepalived 的配置和master keepalived配置类似:

需要修改以下几个地方:

分别修改标识,以及state,以及优先级

 

 3.分别启动两台机器的keepalived 

 最终通过访问 vip(虚拟ip)来访问mycat。

此处的192.168.192.200就是上面keepalived暴露出来的虚拟ip地址

 可以通过 

 arp -a host 的命令查看当前虚拟ip 192.168.192.200的mac地址和哪个真是host地址的mac一样,图中可以看出虚拟ip地址绑定的是159服务器。 

 至此全部搭建完成,我们再项目里面就可以直接将keepalived暴露出来的虚拟地址作为数据库连接地址进行连接使用了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐