tubaobaoya3 发表于 2015-9-4 13:41:01

haproxy部署笔记

  感谢本组同志秦小妹的协助,此篇文章源自于她的劳动成果,并非本人原创
  1、HAProxy安装及日志配置
  
#vim install-haproxy.sh   
#! /bin/bash   
   
dir=/usr/local   
ha_dir=${dir}/haproxy
  
#install   
if [ ! -e "$ha_dir" ]; then   
#下载源码到/tmp/haproxy-1.4.22.tar.gz   
wget -nc -P /tmp http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.22.tar.gz   
tar -zxvf /tmp/haproxy-1.4.22.tar.gz -C /tmp   
cd /tmp/haproxy-1.4.22
  
#编译、安装   
make TARGET=linux26 PREFIX=/usr/local/haproxy   
make install PREFIX=/usr/local/haproxy   
cd /usr/local/haproxy   
#   
if [ ! -e "$ha_dir" ]; then   
echo "error! can't install haproxy please check! Will now out of the scrip !"   
      exit 1   
else   
   #添加启动用户组   
   mkdir -p /var/haproxy   
   /usr/sbin/groupaddhaproxy   
   /usr/sbin/useradd -g haproxy -d /var/haproxy -s /sbin/nologinhaproxy   
   #创建日志目录   
   mkdir -p /data/haproxy/logs   
   chown -R haproxy:haproxy /data/haproxy/   
   chmod 775 -R /data/haproxy   
      ! grep 'haproxy' /etc/syslog.conf&& echo ' local0.*      /data/haproxy/logs/haproxy.log'>> /etc/syslog.conf   
   sed -ir 's/SYSLOGD_OPTIONS="-m 0"/SYSLOGD_OPTIONS="-r -m 0"/g'   /etc/sysconfig/syslog && /etc/init.d/syslog restart   
fi   
else   
echo "haproxy is already exists!"   
fi
  
2、添加/usr/local/haproxy/conf/haproxy.cfg配置文件
  
#HAProxy配置文件vim /usr/local/haproxy/conf/haproxy.cfg
  
global   
log 127.0.0.1 local0 info #   
maxconn 65535   
chroot /usr/local/haproxy   
user haproxy   
group haproxy   
daemon   
nbproc 1   
pidfile /usr/local/haproxy/haproxy.pid   
defaults   
maxconn 65535   
timeout connect 5s#连接超时   
timeout client 30s#客户端超时   
timeout server 30s#服务器超时   
listen stats   
bind 0.0.0.0:1080   
mode http   
log 127.0.0.1 local0 info   
option httplog   
option httpclose   
option dontlognull   
retries 3   
stats uri /admin?stats   
frontend varnish_front   
bind :80   
mode http   
log global   
option httplog   
option httpclose   
option forwardfor   
maxconn 65535
capture request header Host len 40   
capture request header Content-Length len 10   
capture request header Refererlen 200   
capture response header Server len 40   
capture response header Content-lenthlen 10   
capture response header Cache-Control len 10
default_backendvarnish_backend   
backend varnish_backend   
mode http   
balance uri   
hash-type consistent
  server varnish0 192.168.1.20:8089 cookie varnish0 weight 1 check inter 40000 maxconn 65535 rise 3 fall 3   
server varnish1 192.168.1.21:8089 cookie varnish1 weight 1 check inter 40000 maxconn 65535 rise 3 fall 3   
server varnish2 192.168.1.22:8089 cookie varnish2 weight 1 check inter 40000 maxconn 65535 rise 3 fall 3
  
  3、工作配置
  3.1、HAProxy开机启动脚本
  
# vim /etc/rc.d/init.d/haproxy内容如下:   
#! /bin/sh   
# chkconfig: - 90 10#chkconfig:行和 description:行一定要写,否则执行service –add时会出现:haproxy服务不支持chkconfig   
# description: HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments.
  
. /etc/init.d/functions   
# Source networking configuration.   
. /etc/sysconfig/network   
# Check that networking is up.
  
[ ${NETWORKING} = "no" ] && exit 0   
config="/usr/local/haproxy/conf/haproxy.cfg"   
exec="/usr/local/haproxy/sbin/haproxy"   
PID=/usr/local/haproxy/haproxy.pid   
prog="haproxy"   
[ -f $config ] || exit 1   
RETVAL=0   
start() {   
daemon $exec -c -f $config   
if [ $? -ne 0 ]; then   
echo "Errors found in configuration file."   
      return 1   
    fi   
echo -n "Starting HAproxy: "   
$exec -D -f $config   
RETVAL=$?   
echo   
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/haproxy   
return $RETVAL   
}   
stop() {   
echo -n "Shutting down HAproxy: "   
killproc -p $PID $prog   
RETVAL=$?   
echo   
[ $RETVAL -eq 0 ] &&rm -f /var/lock/subsys/haproxy   
return $RETVAL   
}   
restart() {   
$exec -c -q -f $config   
if [ $? -ne 0 ]; then   
echo "Errors found in configuration file, check it with 'haproxy check'."   
       return 1   
   fi   
stop   
start   
}   
rhstatus() {   
status -p $PID $prog   
}   
# See how we were called.   
case "$1" in   
start)   
      start   
      ;;   
stop)   
      stop   
      ;;   
restart)   
      restart   
      ;;   
status)   
rhstatus   
      ;;   
*)   
      echo $"Usage: haproxy {start|stop|restart|status}"   
      RETVAL=1   
esac   
      exit $RETVAL
  
#保存后给予可执行权限   
chmod +x /etc/rc.d/init.d/haproxy   
#就可以使用/sbin/service haproxystart|stop|restart|status来控制服务的启动、关闭和重启、查询状态   
#并可以通过以下命令加载到开机服务列表   
/sbin/chkconfig --add haproxy   
/sbin/chkconfig --level 2345haproxy on
  
3.2、HAProxy日志切分脚本
  
a)、添加/usr/local/haproxy/bin/cut_haproxy_log.sh脚本
  #! /bin/sh
  HOME_PATH=/data/haproxy   
LOG_FILE=${HOME_PATH}/logs/haproxy.log   
date=$(date -d "yesterday" +"%Y-%m-%d")
  cp ${LOG_FILE} ${HOME_PATH}/logs/haproxy-${date}.log   
echo > ${LOG_FILE}
  
b)、定时运行切分日志脚本
  echo "00 0 * * * /usr/local/haproxy/bin/cut_haproxy_log.sh" >> /etc/crontab
页: [1]
查看完整版本: haproxy部署笔记