目的
外界将读写请求发给Haproxy,Haproxy将请求分发给mycat可用节点,mycat服务器再根据读或写向mysql服务器进行数据操作。
前提
在之前mycat代理mysql读写分离的基础上进行配置
haproxy 119.23.237.241
mycat_01 118.25.178.145
mycat_02 106.12.203.18
步骤
- 每个mycat节点配置xinetd
- 安装haproxy
- 配置rsyslog
- 测试连接
操作
配置xinetd
安装
yum install xinetd
检查/etc/xinetd.conf的末尾是否有 includedir /etc/xinetd.d ,没有就加上
检查 /etc/xinetd.d 目录是否存在,不存在则创建
添加服务:检测mycat服务器状态
vim /etc/xinetd.d/mycat_status
service mycat_status
{
flags = REUSE
socket_type = stream
port = 48700
wait = no
user = root
server = /usr/local/bin/mycat_status
log_on_failure += USERID
disable = no
}
添加服务脚本
vim /usr/local/bin/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/local/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
给服务和脚本添加权限
chmod 755 /etc/xinetd.d/mycat_status
chmod 755 /usr/local/bin/mycat_status
service添加监听端口
vim /etc/service
mycat_status 48700/tcp #mycat_status
启动xinetd
service xinetd restart
查看是否配置成功
netstat -antup|grep 48700
开启服务器48700端口
测试脚本
/usr/local/bin/mycat_status
mycat服务未开启
开启mycat服务后
xinetd mycat检测服务脚本配置成功
安装haproxy
解压压缩包至/usr/local
添加依赖
yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
编译
make TARGET=linux2628 ARCH=x86_64 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy
## TARGET是指定内核版本,高于2.6.28的建议设置为linux2628,Linux操作系统内核版本查看命令# uname -r,
ARCH指定系统架构,openssl pcre zlib 这三个包需要安装不然不支持
创建目录
/usr/local/haproxy
执行安装
cd /usr/local/haproxy-1.6.14
make install PREFIX=/usr/local/haproxy
创建配置文件目录
mkdir -p /usr/local/haproxy/conf
mkdir -p /etc/haproxy/
创建配置文件haproxy.cfg
global
log 127.0.0.1 local0 info ##记日志的功能
maxconn 4096
chroot /usr/share/haproxy
group haproxy
user haproxy
nbproc 1
daemon
defaults
log global
mode http
option httplog
retries 3
option redispatch
maxconn 2000
timeout connect 5000
timeout client 50000
timeout server 50000
listen admin_status
bind :48800
stats uri /admin-status ##统计页面
stats auth admin:admin
mode http
option httplog
listen allmycat_service
bind :3307
mode tcp
option tcplog
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
balance roundrobin
server mycat_01 118.25.178.145:8066 check port 48700 inter 2s rise 2 fall 3 weight 10
server mycat_02 106.12.203.18:8066 check port 48700 inter 2s rise 2 fall 3 weight 10
timeout server 20000
添加配置文件软连接
ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg
复制开机启动文件,赋予权限
cp /usr/local/haproxy-1.6.14/examples/haproxy.init /etc/rc.d/init.d/haproxy
chmod +x /etc/rc.d/init.d/haproxy
为haproxy脚本建立软连接
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin
设置haproxy开机启动
chkconfig --add haproxy
chkconfig haproxy on
根据haproxy.cfg需要做以下操作:
添加用户和用户组
groupadd haproxy
useradd -g haproxy haproxy
创建haproxy运行路径
mkdir /usr/share/haproxy
开启3307(连接haproxy)和48800(监控)端口
配置rsyslog 的haproxy日志
查看是否已经安装rsyslog
yum list installed|grep rsyslog
否则
yum install rsyslog
修改rsyslog.conf,把这俩前的#号去掉
vim /etc/rsyslog.conf
配置中若没有$IncludeConfig /etc/rsyslog.d/*.conf,需要加上,否则不能加载haproxy.conf的配置
创建haproxy.conf让rsyslog.conf来加载此配置
vim /etc/rsyslog.d/haproxy.conf
local0.* /var/log/haproxy.log
&~
配置保存后,启动rsyslog服务
service rsyslog restart
配置系统ip包转发
vim /etc/sysctl.conf
#添加
net.ipv4.ip_forward = 1
使配置生效
sysctl -p
启动Haproxy服务
service haproxy start
测试连接
用navicat连接haproxy,用户信息为mycat配置的可访问用户信息
可用看到逻辑库基本信息
访问登录48800端口可以查看
成功配置。