如果mycat所在服务器出现宕机或mycat服务故障,需要有备机提供服务,需要考虑mycat集群。
高可用方案
使用HAProxy+Keepalived配合两台mycat搭起mycat集群,实现高可用。HAProxy实现了mycat多节点的集群高可用和负载均衡,而HAProxy自身的高可用则可以通过Keepalived来实现。
一、准备机器
编号 | 角色 | IP地址 | 机器名 |
---|---|---|---|
1 | Mycat1 | 192.168.157.133 | master131 |
2 | Mycat2 | 192.168.157.139 | master139 |
3 | HAProxy(master) | 192.168.157.138 | master138 |
4 | Keepalived(master) | 192.168.157.138 | master138 |
5 | HAProxy(backup) | 192.168.157.135 | master135 |
6 | Keepalived(backup) | 192.168.157.135 | master135 |
二、安装HAProxy 【master】
1、下载并解压。我是直接翻墙下到本地,然后传到虚拟机上的。
cd /opt
#上传文件
rz
#解压到/usr/local/src
tar -zxvf haproxy-2.3.1.tar.gz -C /usr/local/src
#查看内核版本
uname -r
2、编译
cd /usr/local/src/haproxy-2.3.1/
make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64
注:
TARGET=linux310,内核版本
ARCH=x86_64,系统位数
PREFIX=/usr/local/haproxy,haproxy安装路径
3、安装
make install PREFIX=/usr/local/haproxy
4、创建目录、配置文件
mkdir -p /usr/data/haproxy/
vim /usr/local/haproxy/haproxy.conf
5、写入配置信息并保存
#全局配置信息
global
log 127.0.0.1 local0
#log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /usr/local/haproxy #haproxy目录
pidfile /usr/data/haproxy/haproxy.pid #存进程id的文件
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.157.133:8066 check inter 10s #指定mycat服务机器
server mycat_2 192.168.157.139: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:123123 #用户名:密码
stats hide-version
stats admin if TRUE
6、启动mycat服务和HAProxy服务并验证
#启动mycat服务
mycat console
#启动HAProxy服务
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf
#查看HAProxy进程
ps -ef|grep haproxy
#打开浏览器访问
http://192.168.157.138:7777/admin
name:admin pwd:123123
#验证负载均衡,通过HAProxy访问mycat
mysql -umycat -p123456 -h 192.168.157.138 -P 48066
如果mycat主备机均已启动,则看到下图
如果mycat主机启动备机未启动,则如下图
如果mycat主备机均未启动,则看到下图
问题:
在浏览器里打不开http://192.168.157.138:7777/admin 这个地址,然后发现138机器上开着iptables服务了,关掉就可以了。
三、安装Keepalived 【master】
1、下载并安装 官网连接
#下载
wget https://www.keepalived.org/software/keepalived-2.1.0.tar.gz
#解压到/usr/local/src
tar -zxvf keepalived-2.1.0.tar.gz -C /usr/local/src
#安装依赖插件
yum install -y gcc openssl-devel popt-devel
#进入解压后的目录,进行配置
cd /usr/local/src/keepalived-2.1.0/
./configure --prefix=/usr/local/keepalived
#编译并安装
make
make install
2、运行前配置
cp /usr/local/src/keepalived-2.1.0/keepalived/etc/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/src/keepalived-2.1.0/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
3、修改配置文件
vim /etc/keepalived/keepalived.conf
#修改内容如下
! 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
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 ens33
virtual_router_id 51
#数值越大优先级越高
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#虚拟IP,保护HA
192.168.157.220
}
}
#以下可省略
virtual_server 192.168.157.220 48066 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.157.135 48066 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.157.138 48066 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
扩展
#清空文件内容
#显示行号
:set nu
#到最后一行
shift+G
#回到第一行
1+shift+G
#删除
:d158
#隐藏行号
set nonu
4、启动验证
#启动Keepalived
service keepalived start
#登录验证
mysql -umycat -p123456 -h 192.168.157.220 -P 48066
四、安装HAProxy 、Keepalived 【backup】
重复 二、安装HAProxy 【master】三、安装Keepalived 【master】
五、测试高可用
在Mycat2上通过虚拟ip查询数据,然后关闭Mycat1的mycat服务,再查询数据
mysql -umycat -p123456 -h 192.168.157.220 -P 48066