1. 下载安装 HAproxy
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.22.tar.gz
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 监控页面的访问地址
# 可通过 http://localhost: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
取消以下两行的注释
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 51
新增以下条目
local3.* /var/log/haproxy.log
local0.* /var/log/haproxy.log
重启 rsyslog服务
/etc/init.d/rsyslog restart
查看 haproxy.log
tail -f /var/log/haproxy.log
6. 查看 HAproxy的监控页面
http://192.168.148.100/haproxy-stats
参考资料
http://www.oschina.net/question/17_8785
http://johnsz.blog.运维网.com/525379/715922
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com