1. 下载安装HAproxy
wget
tar zxvf haproxy-1.4.22.tar.gz
cd haproxy-1.4.22
make TARGET=linux2628 PREFIX=/usr/local/haprpxy ##根据内核版本选择TARGET
make install PREFIX=/usr/local/haproxy
2. 设定HAproxy配置文件
cd /usr/local/haproxy
vi haproxy.cfg
global
log 127.0.0.1 local0
#log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /usr/local/haproxy
uid 99 #所属运行的用户uid
gid 99 #所属运行的用户组
daemon #以后台形式运行haproxy
nbproc 1 #启动1个haproxy实例
pidfile /usr/local/haproxy/haproxy.pid #将所有进程写入pid文件
#debug
#quiet
defaults
log global
log 127.0.0.1 local3 #日志文件的输出定向
mode http #所处理的类别,默认采用http模式,可配置成tcp作4层消息转发
option httplog #日志类别
option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
option dontlognull
option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
option redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康服务器
retries 2 #2次连接失败就认为服务器不可用,主要通过后面的check检查
maxconn 2000
balance roundrobin #负载均衡算法
stats uri /haproxy-stats #haproxy 监控页面的访问地址
# 可通过 :80/haproxy-stats 访问
contimeout 5000 #连接超时时间
clitimeout 50000 #客户端连接超时时间
srvtimeout 50000 #服务器端连接超时时间
listen localhost 0.0.0.0:80 #运行的端口及主机名
mode http
option httpchk GET /index.html #健康检测
server s1 192.168.148.110:80 weight 3 check #后端的主机 IP &权衡
server s2 192.168.148.110:8080 weight 3 check #后端的主机 IP &权衡
server s3 192.168.148.110:8081 weight 3 check #后端的主机 IP &权衡
也可采用前后台的配置模式
frontend web_vs #前台
bind 192.168.148.100:80
mode http
option httplog
log global
default_backend web_pool #静态服务器池
backend web_pool #后台
balance leastconn #负载均衡算法
option httpchk HEAD /index.html HTTP/1.0 #健康检查
server s1 192.168.148.110:80 cookie 1 weight 1 check inter 5s rise 2 fall 3
server s2 192.168.148.110:8080 cookie 1 weight 1 check inter 5s rise 2 fall 3
server s3 192.168.148.110:8081 cookie 1 weight 1 check inter 5s rise 2 fall 3
#cookie 1表示serverid为1,check inter 5s 是检测心跳频率
#rise 2是成功2次认为服务器可用,fall 3是失败3次认为服务器不可用,weight代表权重
3. 启动和停止服务
##启动
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
##重启
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/run/haproxy.pid`
##停止
Killall haproxy
4. 设定haproxy启动文件
vi /etc/rc.d/init.d/haproxy
#! /bin/sh
set -e
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin
PROGDIR=/usr/local/haproxy
PROGNAME=haproxy
DAEMON=$PROGDIR/sbin/$PROGNAME
CONFIG=$PROGDIR/haproxy.cfg
PIDFILE=$PROGDIR/run/$PROGNAME.pid
DESC="HAProxy daemon"
SCRIPTNAME=/etc/init.d/$PROGNAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
start()
{
echo -n "Starting $DESC: $PROGNAME"
$DAEMON -f $CONFIG
echo "."
}
stop()
{
echo -n "Stopping $DESC: $PROGNAME"
haproxy_pid=$(cat $PIDFILE)
kill -15 $haproxy_pid
echo "."
}
restart()
{
echo -n "Restarting $DESC: $PROGNAME"
$DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)
echo "."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
chmod u+x /etc/init.d/haproxy
5. 在rsyslog.conf中开启udp 514的日志收集
vi /etc/rsyslog.conf