现在的位置: 首页 > 综合 > 正文

HAProxy负载均衡器的安装及配置

2012年05月30日 综合 ⁄ 共 1973字 ⁄ 字号 暂无评论

HAProxy IP:192.168.240.132 Centos5.5-32bit
Web1 IP:192.168.240.128 Centos5.5-32bit
Web2 IP:192.168.240.130 Centos5.5-32bit
具体安装及配置文档如下:
一、HAProxy的下载及安装过程:
wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz
# tar zcvf haproxy-1.3.20.tar.gz
# cd haproxy-1.3.20
# make TARGET=linux26 PREFIX=/usr/local/haprpxy
# make install PREFIX=/usr/local/haproxy
cd /usr/local/haproxy
mkdir conf
cd conf
vim haproxy.cfg
内容 如下:

global
log 127.0.0.1 local0
maxconn 4096
chroot /usr/local/haproxy
uid 99
gid 99
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
debug
defaults
log 127.0.0.1 local3
mode http
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 2000
balance roundrobin
stats uri /haproxy-stats
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen web_proxy 192.168.240.132:80
#option httpchk HEAD /index.php HTTP/1.0
server web1 192.168.240.128:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server web2 192.168.240.130:80 cookie app1inst2 check inter 2000 rise 2 fall 5
配置文件刚从服务器上copy下来的,保证可用。这里有个事情说明一下,有时候我们进入页面http://192.168.4.192/就会报如下错误:

503 Service UnavailableNo server is available to handle this request.
option httpchk HEAD /check.txt HTTP/1.0

此问题出在这句话上面,它的意思是Haproxy会判断你的后端web的根上存在check.txt没有,以此作为haproxy-status的监控状态依据,将它#掉即可;如果是生产环境,你可将check.txt改为index.jsp或index.php即可;
另外,建议配置一个HAProxy的启动、关闭、重启脚本,放在/etc/init.d下,我们在平时的工作中应该养成一个习惯,服务器的启动或重启应该是最简单的,万一到了生产环境下出错时,我们可以以最快的方式启动,如果不用脚本的话,我们就要尝试以如下方式启动:
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

以下脚本生成后,我们直接可以用/etc/init.d/haproxy start来启动HAProxy服务了。

#!/bin/bash
BASE_DIR="/usr/local/haproxy"
ARGV="$@"
start()
{
echo "START HAPoxy SERVERS"
$BASE_DIR/sbin/haproxy -f $BASE_DIR/conf/haproxy.cfg
}
stop()
{
echo "STOP HAPoxy Listen"
kill -TTOU $(cat $BASE_DIR/logs/haproxy.pid)
echo "STOP HAPoxy process"
kill -USR1 $(cat $BASE_DIR/logs/haproxy.pid)
}
case $ARGV in
start)
start
ERROR=$?
;;
stop)
stop
ERROR=$?
;;
restart)
stop
start
ERROR=$?
;;
*)
echo "hactl.sh [start|restart|stop]"
esac
exit $ERROR

我们在Firefox或IE上输入http://192.168.240.132 就可以轮询的看到后端的web的页面了,另外我们可以随时监控页面http://192.168.240.132/haproxy-status/

给我留言

留言无头像?