一,环境准备
* MyCat
* Haproxy
* Keepalived
* xinetd
二,安装
1, Haproxy安装参考rabbitmq
2, Keepalived安装参考nginx
3,MyCat安装
// 安装包解压
[root@slave_2 ~]# tar /usr/myapp/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/develop/
// 服务启动
[root@slave_2 mycat]# ./bin/mycat start
// 客户端连接, -P表示mycat默认端口
[root@slave_2 mycat]# ../mysql/bin/mysql -uroot -p123456 -P8066 -h192.168.91.130
4,xinetd安装
* 可以直接通过yum命令安装,如果yum可以安装成功,可以只关心配置文件部分
yum install -y xinetd
* 服务安装
// 解压
[root@slave_1 myapp]# tar -zxvf xinetd-2.3.15.tar.gz -C /usr/develop/xinetd/
// 编译
[root@slave_1 xinetd-2.3.15]# ./configure --prefix=/usr/develop/xinetd/
// 安装
[root@slave_1 xinetd-2.3.15]# make && make install
* 复制配置文件到/etc下
[root@slave_1 xinetd-2.3.15]# cp contrib/xinetd.conf /etc/
* 在配置属性includedir /etc/xinetd.d路径下增加mycat存活状态检测配置
[root@slave_1 xinetd.d]# vim mycat_status
service mycat_status
{
flags = REUSE
# socket连接方式
socket_type = stream
# 服务监听的端口
port = 48700
# 是否并发
wait = no
# 以什么用户进行启动
user = root
# 被托管服务的启动脚本
server =/usr/develop/xinetd/sbin/mycat_status
# 设置失败时,UID添加到系统登记表
log_on_failure += USERID
#是否禁用托管服务,no表示开启托管服务
disable = no
}
* 在server标注路径下添加服务脚本
[root@slave_1 sbin]# vim mycat_status
#!/bin/bash
#/usr/local/bin/mycat_status.sh
# This script checks if a Mycat server is healthy running on localhost.
# It will return:
# "HTTP/1.x 200 OK\r" (if Mycat is running smoothly)
# "HTTP/1.x 503 Internal Server Error\r" (else)
Mycat=`/usr/develop/mycat/bin/mycat status | grep 'not running' | wc -l`
if [ "$Mycat" = "0" ]; then
/bin/echo -e "HTTP/1.1 200 OK\r\n"
else
/bin/echo -e "HTTP/1.1 503 Service Unavailable\r\n"
fi
* 通过sh执行脚本,确保脚本正确
* 以上两个脚本都要添加权限
chmod +x /etc/xinetd.d/mycat_status
chmod +x /usr/develop/xinetd/sbin/mycat_satus
* 修改/etc/services文件,末尾加入信息
mycat_status 48700/tcp # mycat_status
* 修改xinetd启动文件,修改启动路径
[root@slave_1 contrib]# cd /usr/develop/xinetd/xinetd-2.3.15/contrib/
[root@slave_1 contrib]# vim xinetd
* 创建软连接,方便后续service启动
[root@slave_1 contrib]# ln -s /usr/develop/xinetd/xinetd-2.3.15/contrib/xinetd /usr/sbin/xinetd
[root@slave_1 contrib]# cp xinetd /etc/init.d/
* 添加开机启动
[root@slave_1 contrib]# chkconfig --add xinetd
* 检测48700端口是否正常启动
netstat -antup|grep 48700
三,Haproxy配置
1,三台机器上分别添加mycat服务和管理信息配置
listen mycat_cluster
bind 192.168.91.128:8096 ##转发到 mycat 的 8066 端口,即 mycat 的服务端口
mode tcp
option tcplog
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
balance roundrobin
server master 192.168.91.128:8066 check port 48700 inter 5s rise 2 fall 3
server slave_1 192.168.91.129:8066 check port 48700 inter 5s rise 2 fall 3
server slave_2 192.168.91.130:8066 check port 48700 inter 5s rise 2 fall 3
timeout server 20000
listen mycat_admin
bind 192.168.91.128:8097 ##转发到 mycat 的 9066 端口,即 mycat 的管理控制台端口
mode tcp
option tcplog
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
balance roundrobin
server master 192.168.91.128:9066 check port 48700 inter 5s rise 2 fall 3
server slave_1 192.168.91.129:9066 check port 48700 inter 5s rise 2 fall 3
server slave_2 192.168.91.130:9066 check port 48700 inter 5s rise 2 fall 3
timeout server 20000
四,Keepalived配置
* keepalived只对haproxy进行配置,与rabbitmq一致!
五,通过VIP连接mycat