F嘉阳 - Keepalived
type: channel
link: https://blog.fjy8018.top/index.php/tag/Keepalived/
items: PXC系列学习笔记（四）——搭建双机热备的MyCat集群

PXC系列学习笔记（四）——搭建双机热备的MyCat集群
type: item
date: 2019-12-30T08:46:37+08:00
description: 一、介绍 目前已经搭建好了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监控画面 http://192.168.1.35:4001/dbs 用另外一个虚拟机同样按照上述操作安装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 }…