MyCat高可用集群
第五章 基于HAProxy的MyCat高可用集群
文章目录
前言
前面搭建了双主双从服务的读写分离,实现了MySQL的高可用,但MyCat本身存在单点故障的可能。
因此我们可以使用HAProxy+Keepalived配合两台Mycat搭起Mycat集群,实现高可用性。HAProxy 实现了MyCat 多节点的集群高可用和负载均衡,而HAProxy 自身的高可用则可以通过Keepalived 来实现。
一、环境准备
六台CentOS7虚拟机
两台HAProxy:H1(主)、H2(备)
两台MyCat:MC1、MC2
两台mysql数据库:MS1、MS2
名称 | 主机名 | IP |
---|---|---|
MyCat1 | centos7_1 | 192.168.80.70 |
MyCat2 | centos7_6 | 192.168.80.60 |
HAProxy1 | centos7_4 | 192.168.80.40 |
HAProxy2 | centos7_5 | 192.168.80.50 |
MySql1 | centos7_2 | 192.168.80.20 |
MSql2 | centos7_3 | 192.168.80.30 |
二、安装HAProxy
1、下载安装包
HAProxy下载地址:http://download.openpkg.org/components/cache/haproxy/
Keepalived下载地址:https://www.keepalived.org/download.html
2、安装HAProxy
#将下载好的HAProxy安装包传到服务器
#安装依赖
yum install -y gcc openssl-devel popt-devel
#解压
tar -zxvf haproxy-2.1.2.tar.gz
#进入解压后的目录
cd haproxy-2.1.2
#查看内核版本
uname -r
#编译
make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64
#ARGET=linux310,内核版本,使用uname -r查看内核,如:3.10.0-514.el7,此时该参数就为linux310;
#ARCH=x86_64,系统位数;#PREFIX=/usr/local/haprpxy
#/usr/local/haprpxy,为haprpxy安装路径。
#安装
make install PREFIX=/usr/local/haproxy
可以echo $? 命令查看上一条命令执行情况,0表示正常执行
#安装完成后,创建目录
mkdir -p /usr/data/haproxy/
#创建HAProxy配置文件,向配置文件中插入以下配置信息
vim /usr/local/haproxy/haproxy.conf
global
log 127.0.0.1 local0
#log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /usr/local/haproxy
pidfile /usr/data/haproxy/haproxy.pid
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode tcp
option abortonclose
option redispatch
retries 3
maxconn 2000
timeout connect 5000
timeout client 50000
timeout server 50000
listen proxy_status
bind :48066
mode tcp
balance roundrobin
server mycat_1 192.168.80.70:8066 check inter 10s
server mycat_2 192.168.80.60:8066 check inter 10s
frontend admin_stats
bind :7777
mode http
stats enable
option httplog
maxconn 10
stats refresh 30s
stats uri /admin
stats auth admin:123456
stats hide-version
stats admin if TRUE
3、验证HAProxy
#启动HAProxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf
#查看HAProxy进程
ps -ef|grep haproxy
#通过48066端口登录mycat
mysql -umycat -p123456 -P48066 -h 192.168.80.40
#打开浏览器访问,账号:admin,密码:123456
http://192.168.80.40:7777/admin
#这里可以看到我的两台mycat都是在线的(红色即为不在线)
#同样的步骤在H2也做一遍
三、安装Keepalived
1、安装keepalived
#将下载好的Keepalived安装包传到服务器
#解压
tar -zxvf keepalived-2.1.2.tar.gz
#进入解压后的目录
cd keepalived-2.1.2
#编译安装
./configure --prefix=/usr/local/keepalived
make && make install
#复制配置文件
cp ./keepalived/etc/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp ./keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
#修改配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
#主机配MASTER,备机配BACKUP
state MASTER
#所在机器网卡
interface ens32
virtual_router_id 51
#数值越大优先级越高
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#虚拟IP
192.168.80.200
}
}
virtual_server 192.168.80.200 48066 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server192.168.80.70 48066 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.80.60 48600 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
注意修改网卡名称和mycat服务器地址
#同样的步骤在H2也做一遍,注意修改BACKUP和优先级
2、验证keepalived
#启动Keepalived
systemctl start keepalived
#登录验证
mysql -umycat -p123456 -h 192.168.80.200 -P 48066
#查看orders表信息
use TESTDB;
select * from orders;
四、测试高可用
1、关闭Mycat
#关闭mycat1,查看运行状态
./mycat stop
./mycat status
#查询orders表,数据库仍正常运行
2、关闭HAProxy
#关闭H1的网络连接,模拟服务器宕机
#重新连接数据库
mysql -umycat -p123456 -h 192.168.80.200 -P 48066
#通过虚拟IP数据库仍可正常访问
#通过IP访问H1
mysql -umycat -p123456 -h 192.168.80.40 -P 48066
至此利用HAProxy实现MyCat高可用集群。