一、介绍
目前已经搭建好了2套PXC集群,使用了单台mycat进行数据路由,在数据库层实现了高可用,但若mycat宕机,后端数据库依然无法使用,故还需要搭建多一台mycat,结合HAProxy和Keepalived实现负载均衡、双机热备。
二、集群架构

三、搭建
服务器资源规划如下
| 名称 | IP | CPU | 内存 | 磁盘 | 服务 |
|---|---|---|---|---|---|
| pxc3 | 192.168.1.33 | 1 | 2G | 40G | mycat |
| pxc4 | 192.168.1.35 | 1 | 2G | 40G | haproxy、Keepalived |
| pxc5 | 192.168.1.36 | 1 | 2G | 40G | mycat |
| pxc6 | 192.168.1.37 | 1 | 2G | 40G | haproxy、Keepalived |
1. 安装mycat集群
用两个虚拟机实例,各自部署MyCat,采用相同配置
2. 安装Haproxy集群
用一个虚拟机实例部署Haproxy
-
安装Haproxy,需要开放两个端口,3306(TCP转发),4001(监控界面)
$ yum install -y haproxy -
编辑配置文件
$ vi /etc/haproxy/haproxy.cfg由于该节点同时也运行了PXC数据库,3306端口已经占用,故使用13306端口
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 listen admin_stats bind 0.0.0.0:4001 mode http stats uri /dbs stats realm Global\ statistics stats auth admin:Abc%6870 listen proxy_mysql bind 0.0.0.0:13306 mode tcp balance roundrobin option tcplog server mycat_1 192.168.1.33:8066 check port 8066 weight 1 maxconn 2000 server mycat_2 192.168.1.36:8066 check port 8066 weight 1 maxconn 2000 option tcpka -
启动Haproxy
$ service haproxy start -
访问Haproxy监控画面

用另外一个虚拟机同样按照上述操作安装
Haproxy
3. 安装Keepalived集群
在某个Haproxy虚拟机实例上部署Keepalived
-
开启防火墙的
VRRP协议#开启VRRP firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --protocol vrrp -j ACCEPT # iptable配置 iptables -I INPUT -p vrrp -j ACCEPT #应用设置 firewall-cmd --reload -
安装Keepalived
yum install -y keepalived -
编辑配置文件
vi /etc/keepalived/keepalived.confvrrp_instance VI_1 { state MASTER # 争抢虚拟IP,若不争抢,则设置为slave interface ens192 virtual_router_id 51 # 唯一ID,范围0-255 priority 100 # 抢占权重 advert_int 1 # 心跳检测间隔时间 authentication { # 心跳检测账户和密码 auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.9 # 新虚拟IP } } -
启动
Keepalived$ systemctl start keepalived -
在两台
Keepalived节点上ping虚拟IP,看是否已经创建并可以访问$ ping 192.168.1.9
-
在另外一个
Haproxy虚拟机上,按照上述方法部署Keepalived -
使用MySQL客户端连接
192.168.1.9,执行增删改查数据