Mycat高可用
在对mycat 进行读写分离,双主双倍,实现HA后,
在实际项目中, Mycat 服务也需要考虑高可用性,如果 Mycat 所在服务器出现宕机,或 Mycat 服务故障,需要有备机提供服务,需要考虑 Mycat 集群。
高可用方案
我们可以在多台机器上安装Mycat 搭起 Mycat 集群,配合 HAProxy
实现负载均衡,实现高可用性。
服务器规划
编号 | 角色 | IP 地址 |
---|---|---|
1 | Mycat1 | vm1:8066 |
2 | Mycat2 | vm2:8066 |
3 | HAProxy | vm3:48066 |
安装配置 HAProxy
1. 安装HAProxy
#1. 下载 haproxy-1.7.12 至 /opt
[root@vm3 opt]# wget http://www.haproxy.org/download/1.7/src/haproxy-1.7.12.tar.gz
#2. 解压到/usr/local/src
[root@vm3 opt]# tar -zxvf haproxy-1.7.12.tar.gz -C /usr/local/src
#3进入解压后的目录,查看内核版本, 进行编译
[root@vm3 src]# cd haproxy-1.7.12/
[root@vm3 haproxy-1.7.12]# uname -r
3.10.0-1062.el7.x86_64
# ARGET=linux310,内核版本,使用uname -r查看内核,如: 3.10.0-514.el7,此时该参数就为linux310;
#ARCH=x86_64,系统位数;
#PREFIX=/usr/local/haprpxy #/usr/local/haprpxy,为haprpxy安装路径。
[root@vm3 haproxy-1.7.12]# make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64
#4编译完成后,进行安装
[root@vm3 haproxy-1.7.12]# make install PREFIX=/usr/local/haproxy
2配置
#安装完成后, 创建目录、 创建HAProxy配置文件
[root@vm3 haproxy-1.7.12]# mkdir -p /usr/data/haproxy/
[root@vm3 haproxy-1.7.12]# 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 vm1:8066 check inter 10s
server mycat_2 vm2:8066 check inter 10s
# 绑定多个ip
# bind :43306
# mode tcp
# balance roundrobin
# server mysql_1 vm1:3306 check inter 10s
# server mysql_2 vm2:3306 check inter 10s
## haproxy管理页面 端口,contextpath, 用户名/密码
frontend admin_stats
bind :7777
mode http
stats enable
option httplog
maxconn 10
stats refresh 30s
stats uri /admin
## 用户名&密码
stats auth admin:123123
stats hide-version
stats admin if TRUE
3.启动
#1. 启动
[root@vm3 haproxy]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf
#2. 查看haproxy进程
[root@vm3 haproxy]# ps -ef|grep haproxy
4.验证
通过frontend访问
通过HAProxy访问Mycat
[root@vm1 jhs]# mysql -umycat -p123456 -P 48066 -h vm3
配置 Keepalived
HAProxy实现了 MyCat 多节点的集群高可用和负载均衡, 而 HAProxy 自身
的高可用则可以通过 Keepalived 来实现高可用。
服务器规划
编号 | 角色 | IP 地址 |
---|---|---|
1 | Mycat1 | vm1 |
2 | Mycat2 | vm2 |
3 | HAProxy(master) | vm3 |
4 | Keepalived(master) | vm3 |
5 | HAProxy(backup) | vm4 |
6 | Keepalived(backup) | vm4 |
架构图
0.在vm4上安装haproxy(略)
1. 安装KeepAlived
#1准备好Keepalived安装包,传到/opt目录下
#2解压到/usr/local/src
[root@vm3 opt]# tar -zxvf keepalived-1.4.2.tar.gz -C /usr/local/src
#3安装依赖插件
[root@vm3 opt]# yum install -y gcc openssl-devel popt-devel
#3进入解压后的目录, 进行配置, 进行编译
[root@vm3 opt]# cd /usr/local/src/keepalived-1.4.2
[root@vm3 keepalived-1.4.2]# ./configure --prefix=/usr/local/keepalived
#4进行编译, 完成后进行安装
[root@vm3 keepalived-1.4.2]# make && make install
#5运行前配置
[root@vm3 keepalived-1.4.2]# cp keepalived/etc/init.d/keepalived /etc/init.d/
[root@vm3 keepalived-1.4.2]# mkdir /etc/keepalived
[root@vm3 keepalived-1.4.2]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@vm3 keepalived-1.4.2]# cp keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@vm3 keepalived-1.4.2]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
2.修改keepalived配置
! Configuration File for keepalived
global_defs {
notification_email {
xlcocoon@foxmail.com
}
notification_email_from keepalived@showjoy.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
#是Keepalived服务器的路由标识在一个局域网内,这个标识(router_id)是唯一的
router_id 1
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
#主机配MASTER,备机配BACKUP
state MASTER
#所在机器网卡
interface ens33
#虚拟路由ID标识,这个标识最好是一个数字,在一个keepalived.conf配置中是唯一的, MASTER和BACKUP配置中相同实例的virtual_router_id必须是一致的.
virtual_router_id 51
#数值越大优先级越高
priority 100
#为同步通知间隔。MASTER与BACKUP之间通信检查的时间间隔,单位为秒,默认为1.
advert_int 1
#authentication为权限认证配置不要改动,同一vrrp实例的MASTER与BACKUP使用相同的密码才能正常通信。
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#虚拟IP
192.1.217.200
}
}
### 通过虚拟IP 暴露的端口
virtual_server 192.1.217.200 48066 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server vm3 48066 { #RS节点1
weight 1 #权重
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server vm4 48066 { #RS节点2
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
3.启动验证
#1启动Keepalived
service keepalived start
#2登录验证 --- 使用虚拟IP(vip)+端口 访问mycat --- 成功
mysql -umycat -p123456 -h 192.1.217.200 -P 48066
4. keepalived主备–配置
只列出同master不同部分的配置:
global_defs {
router_id 2 #此参数和MASTER不同
}
vrrp_instance VI_1 { # MASTER相同
state BACKUP # 设置为BACKUP,与MASTER不同
virtual_router_id 51 # MASTER相同
priority 99 # 此参数和MASTER不同, 略低于master
virtual_ipaddress {
#虚拟IP ---相同
192.1.217.200
}
}