<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="安装 HAProxy 配置负载均衡">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2009-12-07 10:31<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
安装 HAProxy 配置负载均衡


据说 HAProxy 可以做负载均衡，同时还可对服务器健康检测，有 down 机的自动停止分发，当服务器正常后，又自动均衡到刚死过的服务器。之前用 nginx ，现试用下 haproxy 。


下载：haProxy 1.3.15 http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.15.7.tar.gz


安装：





    cd /home/chenlb   

    wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.15.7.tar.gz   

    tar -zxvf haproxy-1.3.15.7.tar.gz   

    cd haproxy-1.3.15.7   

    make TARGET=linux26 PREFIX=/home   

    make install PREFIX=/home   

      

    cd /home/haproxy   

    vi haproxy.cfg  




cd /home/chenlb
wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.15.7.tar.gz
tar -zxvf haproxy-1.3.15.7.tar.gz
cd haproxy-1.3.15.7
make TARGET=linux26 PREFIX=/home
make install PREFIX=/home

cd /home/haproxy
vi haproxy.cfg


创建/修改配置haproxy.cfg：





    global   

            log 127.0.0.1   local0   

            #log 127.0.0.1  local1 notice   

            #log loghost    local0 info   

            maxconn 4096   

            chroot /home/haproxy   

            uid 99   

            gid 99   

            daemon   

            nbproc 1   

            pidfile /home/haproxy/logs/haproxy.pid   

            #debug   

            #quiet   

      

    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 0.0.0.0:1080   

            option  httpchk GET /ping.jsp   

      

            server  s1 192.168.0.101:8080 weight 3 check   

            #server s2 192.168.0.102:8080 weight 3 check   

            server  s3 192.168.0.103:8080 weight 3 check  




global
        log 127.0.0.1   local0
        #log 127.0.0.1  local1 notice
        #log loghost    local0 info
        maxconn 4096
        chroot /home/haproxy
        uid 99
        gid 99
        daemon
        nbproc 1
        pidfile /home/haproxy/logs/haproxy.pid
        #debug
        #quiet

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 0.0.0.0:1080
        option  httpchk GET /ping.jsp

        server  s1 192.168.0.101:8080 weight 3 check
        #server	s2 192.168.0.102:8080 weight 3 check
        server  s3 192.168.0.103:8080 weight 3 check


启动 haproxy：

sbin/haproxy -f haproxy.cfg

haproxy 192.168.0.100 分发到 192.168.0.101, 192.168.0.103 (故意down掉)。


可以打开 stats 看，http://192.168.0.100:1080/haproxy-stats，如：


haproxy balance stats, 点击放大




如果修改 haproxy.cfg 配置，想重启 haproxy 用 kill -HUP `cat logs/haproxy.pid` 是不行的。必须使用 -sf 或 -st 参数，如：

sbin/haproxy -f haproxy.cfg -st `cat logs/haproxy.pid `
#./haproxy &ndash;help //haproxy相关命令参数介绍.
haproxy  -f  &lt;配置文件&gt;  [-n 最大并发连接总数] [-N 每个侦听的最大并发数] [-d] [-D] [-q] [-V] [-c] [-p] [-s] [-l] [-dk] [-ds] [-de] [-dp] [-db] [-m &lt;内存限制M&gt;] [{-sf|-st} pidlist...]
        -d     前台，debug模式
        -D     daemon模式启动
        -q     安静模式,不输出信息
        -V     详细模式
        -c     对配置文件进行语法检查
        -s     显示统计数据
        -l     显示详细统计数据
        -dk    不使用kqueue
        -ds    不使用speculative epoll
        -de    不使用epoll
        -dp    不使用poll
        -db    禁用后台模式，程序跑在前台
        -sf    程序启动后向pidlist里的进程发送FINISH信号，这个参数放在命令行的最后
        -st    程序启动后向pidlist里的进程发送TERMINATE信号，这个参数放在命令行的最后

但配置后，死活不会输出日志，还没找到解决方法，网上有些，但行不通：

syslog.conf里加一行
local3.*         /var/log/haproxy.log

# killall -HUP syslogd 重启 syslogd

# touch /var/log/haproxy.log
# chmod 777 /var/log/haproxy.log

# tail &ndash;f /var/log/harpoxy.log 监控日志

# ./haproxy -f haproxy.cfg 启动服务.

haproxy 还可以用 nginx 的配置，请看：http://www.igvita.com/2008/05/13/load-balancing-qos-with-haproxy/



参考资料：http://cn.haproxy.org/，http://cn.haproxy.org/download/1.3/doc/configuration-cn.txt，http://bbs.ctocio.com.cn/thread-7854276-1-1.html，http://www.2tutu.com/post/193.html
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
