keepalived+haproxy+mycat mycat集群搭建

来源:互联网 发布:linux windows传文件 编辑:程序博客网 时间:2024/05/21 07:58

一,总体架构:


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

原创粉丝点击