Linux论坛's Archiver

宝马与通用选择MeeGo作为车机基础系统

NetSeek 发表于 2008-3-4 10:50

初尝利用HAProxy 实现负载均衡

先说一些无关的话题了!好久没有发贴了,多愿谅!最近一直忙工作,谢谢喜欢l[url=http://www.linuxpk.com]inuxpk[/url],和支持netseek的朋友们!(:loveliness: )。其实本人也是真真正正的菜鸟,写这些文章也主要是对自己学习的一个很好的总结,更重要的是帮助那些对新技术和喜欢linux的朋友,学习相关的知识起到辅助作用。虽然是菜鸟,但从学校到毕业工作一路走来,在网络上认识不少的朋友,无论是对工作和生活都帮助不少!收获不少!在此感谢他们!
    正如还在毕业之初,白金大哥在网络上和我说,我的前辈朋友都是我的金桶:)那时候傻的连金桶都不知道是什么意思(PS:别笑!)。人生最宝贵的是能遇到一些志同道合的朋友,一起努力为明天奋斗!
虽然有些人很久没有和他们联系了,但是每个人的帮助我会永记在心的!再次感谢他们!
    最高兴的是linuxpk推出了<<开源>>电子杂志[下载地址:[url=http://bbs.linuxpk.com/thread-12999-1-1.html]http://bbs.linuxpk.com/thread-12999-1-1.html[/url]],希望学习linux的朋友多多投稿!多写一些小笔记,帮助网络上对linux感兴趣的朋友,同时希望linuxpk(linux宝库)论坛能够真真正正的成为大家一个互动讨论学习和认识好朋友的一个交流平台!好了:lol 说这么多了,希望大家一起努力!(PS:年纪大了,话就多了:lol !)。


一,HAProxy 介绍
  反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。新的1.3引入了frontend,backend,frontend根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend.

二,利用HAPorxy实现负载均衡
  1. 利用HAProxy实现负载均衡
   192.168.169.137 (haproxy)---------负载均衡----------(192.168.169.117;192.168.169.118)
   安装配置HAproxy
cd /usr/local/
wget [url=http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.14.2.tar.gz]http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.14.2.tar.gz[/url]
tar zxvf haproxy-1.3.14.2.tar.gz
mv  haproxy-1.3.14.2  haproxy
cd haproxy
make TARGET=linux26

2. 创建配置文件
# vi haproxy.cfg[code]--------------------------------------------------------------------------------------------------------------------
global
        maxconn 5120
        chroot /usr/local/haproxy
        uid 99
        gid 99
        daemon
       quiet
        nbproc  2  #通过nbproc多设置几个haproxy并发进程,这样每个进程的task_queue相对就会短很多,性能自然就能提高不少
        #pidfile /var/run/haproxy-private.pid

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        log 127.0.0.1 local3
        retries 3
        option redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen webfarm 0.0.0.0:80
       mode http
       stats uri /haproxy-stats     #监控haproxy状态
       stats realm Haproxy\ statistics
       stats auth netseek:52netseek  #设置状态监控的用户名为netseek密码为52netseek
       balance roundrobin     #负载均衡算法
       cookie SERVERID insert indirect
      option httpclose   #
       option forwardfor  #apache日志转发功能
       option httpchk HEAD /check.txt HTTP/1.0  #健康检测
server app_bbs1 192.168.169.117:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server app_bbs2 192.168.169.118:80 cookie app1inst2 check inter 2000 rise 2 fall 5[/code]syslog.conf里加一行
local3.*         /var/log/haproxy.log
  
# touch /var/log/haproxy.log
# chown haproxy:haproxy /var/log/haproxy.log
# chmod u+x /var/log/haproxy.log
  
# tail –f /var/log/harpoxy.log 监控日志

# ./haproxy -f haproxy.cfg 启动服务.


   监控状态图示[url=http://192.168.169.137/haproxy-stats]http://192.168.169.137/haproxy-stats[/url] ,输入用户名密码查看状态。
   [attach]3095[/attach]
后端apache日志处理
配置httpd.conf
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b " combined
        CustomLog /var/log/httpd/access_log combined

虚拟主机不记录检测日志:
SetEnvIf Request_URI "^/check\.txt$" dontlog
    LogLevel warn
    ErrorLog /var/log/httpd/vhost_error.log
    CustomLog /var/log/httpd/vhost_access.log combined env=!dontlog


三.相关介绍
   #./haproxy –help //haproxy相关命令参数介绍.
   haproxy  -f  <配置文件>  [-n 最大并发连接总数] [-N 每个侦听的最大并发数] [-d] [-D] [-q] [-V] [-c] [-p <pid文件>] [-s] [-l] [-dk]
       [-ds] [-de] [-dp] [-db] [-m <内存限制M>] [{-sf|-st} pidlist...]
       -d     前台,debug模式
       -D     daemon模式启动
       -q     安静模式,不输出信息
       -V     详细模式
       -c     对配置文件进行语法检查
       -s     显示统计数据
       -l     显示详细统计数据
       -dk    不使用kqueue
       -ds    不使用speculative epoll
       -de    不使用epoll
       -dp    不使用poll
       -db    禁用后台模式,程序跑在前台
       -sf <pidlist>
       程序启动后向pidlist里的进程发送FINISH信号,这个参数放在命令行的最后
       -st <pidlist>
       程序启动后向pidlist里的进程发送TERMINATE信号,这个参数放在命令行的最后
四,更高级的应用参考相关文档
  官方参考手册: [url]http://haproxy.1wt.eu/download/1.3/doc/haproxy-en.txt[/url]
  [url]http://www.howtoforge.com/high-availability-load-balancer-haproxy-heartbeat-debian-etch[/url]

[[i] 本帖最后由 NetSeek 于 2008-3-4 13:13 编辑 [/i]]

fandy 发表于 2008-3-4 13:50

好东西,一定要支持!

zhangpan_1983 发表于 2008-5-6 14:03

有没有更详细的使用.测试.等等的东西...

NetSeek 发表于 2008-5-6 15:29

:) 已经用在生站线上了!
赞!负载均衡器haproxy可以跑满10GBPS
News, March 30th, 2008

I finally assembled my new machines and installed the donated 10-Gig Myricom NICs. I ran a few benchmarks. Result: new bandwidth records set for HAPoxy: 9.897 Gbps and 35128 hits/s! It's possibly the highest bitrate achieved to date with an opensource load-balancer! BTW, even most commercial ones are commonly limited to 4 Gbps by hardware design. What's a bit frustrating for a precision-tweaker like me is that those NICs work out-of-the box on dirt cheap hardware, there's almost no joy passing beyond the first 4 Gbps :-)

作者Willy TARREAU是linux 内核的2.4主要维护者之一。

具体的请看:
[url]http://haproxy.1wt.eu/10g.html[/url]

techson 发表于 2008-5-7 14:17

好东西,抽时间研究研究

jack 发表于 2008-5-27 09:57

请教:haproxy对它下边的机器是怎么做健康监测的?还有所有的流量都要haproxy提供吗?还是和lvs dr模式一样?

NetSeek 发表于 2008-5-27 12:06

option httpchk HEAD /check.txt HTTP/1.0  #健康检测 已经说了!
并不是,流量应该大部分还是能转发出去,上面所说的10G是表明haproxy有样的处理能力!
和LVS-DR模式基本一样。但是LVS基于内核的,HAPoxy是基于应用的,小型的集群负载均衡用haproxy方便,而且性能也不差!

jack 发表于 2008-5-27 12:16

:loveliness: 谢谢!

yahoon 发表于 2008-7-11 16:55

赞一下 很不错啊

水鬼 发表于 2008-7-13 12:19

只支持http吗?能不能支持telnet的?

doctormm 发表于 2008-8-7 11:15

telnet 没问题  使用tcp协议的基本都能支持

killer 发表于 2008-9-5 15:44

很不错. . .  大善下/  /

lfnian 发表于 2008-10-23 13:40

太好了哈。正需要哈

yyrjw 发表于 2008-11-3 11:26

不错 顶下

qiekong 发表于 2008-12-6 09:46

好好东东

clonepig 发表于 2009-3-8 01:14

TRY................

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.