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 #[err warning info debug] 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