一,总体架构:
241为虚拟IP,90和120为集群的IP
二,HaProxy安装
安装目录:/usr/local/haproxy
重要配置文件: haproxy.cfg
配置mycat是否存活脚本:/etc/xinetd.d/mycat_status
文本:
service mycat_status
{
flags = REUSE
socket_type = stream
port = 48700
wait = no
user = nobody
server =/usr/local/bin/mycat_status
log_on_failure += USERID
disable = no
/usr/local/bin/mycat_status
文本:
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
启动/停止脚本:
/usr/local/haproxy/sbin/start:
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg &
/usr/local/haproxy/sbin/stop:
ps -ef | grep sbin/haproxy | grep -v grep |awk '{print $2}'|xargs kill -s 9
三,keepalived安装信息:
安装目录: /usr/local/src
重要配置: /etc/keepalived/keepalived.conf
global_defs {
#notification_email {
# test@admin.com
#}
#notification_email_from admin@aidmin.com
#smtp_server 127.0.0.1
#smtp_connect_timeout 30
router_id MyCAT-ha
}
vrrp_script chk_http_port {
script"/etc/keepalived/scripts/check_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 241
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
#调用脚本check_haproxy.sh检查haproxy是否存活
}
virtual_ipaddress {
10.130.85.241 dev eth0 scope global
}
notify_master /etc/keepalived/scripts/haproxy_master.sh
notify_backup /etc/keepalived/scripts/haproxy_backup.sh
notify_fault /etc/keepalived/scripts/haproxy_fault.sh
notify_stop /etc/keepalived/scripts/haproxy_stop.sh
}
/etc/keepalived/scripts/haproxy_master.sh
STARTHAPROXY=`/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg`
STOPHAPROXY=`ps -ef | grep sbin/haproxy | grep -v grep | awk '{print $2}'| xargs kill -s 9`
LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "stop haproxy...." >> $LOGFILE 2>&1
$STOPHAPROXY >> $LOGFILE 2>&1
echo "start haproxy...." >> $LOGFILE 2>&1
$STARTHAPROXY >> $LOGFILE 2>&1
echo "haproxy stared ..." >> $LOGFILE
/etc/keepalived/scripts/haproxy_backup.sh
STARTHAPROXY=`/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg`
STOPHAPROXY=`ps -ef | grep sbin/haproxy | grep -v grep | awk '{print $2}'| xargs kill -s 9`
LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being backup...." >> $LOGFILE 2>&1
echo "stop haproxy...." >> $LOGFILE 2>&1
$STOPHAPROXY >> $LOGFILE 2>&1
echo "start haproxy...." >> $LOGFILE 2>&1
$STARTHAPROXY >> $LOGFILE 2>&1
echo "haproxy stared ..." >> $LOGFILE
/etc/keepalived/scripts/haproxy_fault.sh
LOGFILE=/usr/local/keepalived/var/log/keepalived-haproxy-state.log
echo "[fault]" >> $LOGFILE
date >> $LOGFILE
/etc/keepalived/scripts/haproxy_stop.sh
LOGFILE=/usr/local/keepalived/var/log/keepalived-haproxy-state.log
echo "[stop]" >> $LOGFILE
date >> $LOGFILE
/etc/keepalived/scripts/check_haproxy.sh
STARTHAPROXY="/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg"
STOPKEEPALIVED="/etc/init.d/keepalived stop"
LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"
echo "[check_haproxy status]" >> $LOGFILE
A=`ps -C haproxy --no-header |wc -l`
echo "[check_haproxy status]" >> $LOGFILE
date >> $LOGFILE
if [ $A -eq 0 ];then
echo $STARTHAPROXY >> $LOGFILE
$STARTHAPROXY >> $LOGFILE 2>&1
sleep 5
fi
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
exit 0
else
exit 1
fi
日志目录:/usr/local/keepalived/var/log
启动/停止:service keepalived start/stop
四,Mycat安装:
安装目录: /usr/local/mycat
重要配置: /usr/local/mycat/conf/schem.xml
/usr/local/mycat/conf/rule.xml
/usr/local/mycat/conf/server.xml
/usr/local/mycat/conf/autopartition-long.txt
安装比较简单,参考官方配置即可。
========================================================================
安装可能遇到的问题:
安装haproxy 注意:
(1)修改内核参数: /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind=1
保存结果,使结果生效
sysctl –p
(2)roor修改/etc/services没有权限
chattr -i /etc/services
修改后改回来
chattr +i /etc/services