一、介绍

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

二、集群架构

image-20191227152159478

三、搭建

服务器资源规划如下

名称IPCPU内存磁盘服务
pxc3192.168.1.3312G40Gmycat
pxc4192.168.1.3512G40Ghaproxy、Keepalived
pxc5192.168.1.3612G40Gmycat
pxc6192.168.1.3712G40Ghaproxy、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监控画面

    http://192.168.1.35:4001/dbs

    image-20191227172147428

    用另外一个虚拟机同样按照上述操作安装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.conf
      vrrp_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
    1. 在另外一个Haproxy虚拟机上,按照上述方法部署Keepalived
    2. 使用MySQL客户端连接192.168.1.9,执行增删改查数据
    Last modification:December 30th, 2019 at 08:46 am
    如果觉得我的文章对你有用,请随意赞赏