Chinaunix首页 | 论坛 | 博客
  • 博客访问: 137982
  • 博文数量: 38
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 460
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-24 15:48
文章分类

全部博文(38)

文章存档

2011年(1)

2009年(11)

2008年(26)

我的朋友

分类: 系统运维

2008-04-29 16:21:24


Haproxy是一种负载均衡代理软件,其特点是简单高效,在一定范围内可以替代一些专门的负载均衡设备,用于中小型网站的负载均衡绰绰有余。
Haproxy在RH Linux的安装很简单,下载应用程序的压缩包解压出来,然后进入解压出来的目录运行make就可以了,由于其匹配规则中会用到正则表达式,所以为了让正则匹配的效率更高,我们可以使用静态的pcre库来编译haproxy(make的时候加上参数:USE_STATIC_PCRE=1 USE_POLL= ),如果编译找不到pcre库可以下载并安装pcre库后再编译。
Haproxy的配置主要有三个部分,一个是运行时候的参数,一个是配置文件中的全局配置,还有一个是配置文件里面的代理配置部分。
运行时候直接指定的参数比较少,而且其值基本可以在全局配置部分指定,可以用-h参数查看;
全局配置以global开始一段配置,我们日常需要配置的有几个选项,包括运行haproxy的用户组和用户名,haproxy的运行模式,比如安静模式,调试模式,守护模式等,还有haproxy运行后开启多少个进程,可以打开的文件数,全局最大连接数限制等,全局最大连接数不能设置过大,否则可能会导致haproxy运行不稳定,同时默认的最大连接数是比较小的,所以对于大中型网站的应用应该要修改此值;
在代理配置部分是我们实现负载均衡的主要配置部分,此部分可以选择四个模式:default,frontend,listen,backend,我们可选其中一个作为配置段的开头,四种模式的可配置项稍微有些不同,而其中listen模式的可配置项是最多的,其他三种模式的可配置项他都有。在这个部分普通使用我们需要配置的项也不需要很多,主要是本机监听的ip地址和端口,监听模式:TCP或HTTP,负载均衡方式,连接超时时间,访问控制列表和对应访问控制列表的后端等,下面为配置的一个例子,现在HAPROXY有BUG,URL的匹配规则都不能匹配上,但是我们可以不使用URL的访问控制规则,用hdr_dom和加上path的方法来实现;另外我们对path的匹配进行了一些测试,也发现了匹配方明的问题,所以估计haproxy在正则表达式匹配方面还不够完善,所以不推荐用于七层分派。但是haproxy强大的连接处理能力用在大量连接的四层分派还是不错的。如果你需要更详细的配置说明,请阅读作者的配置文档:
########conf file for haproxy#########
global
        group           haproxy
        user            haproxy
        pidfile         /usr/local/haproxy/haproxy.pid
        daemon
        nbproc          1
        maxconn         30000
frontend http_proxy
        mode            http
        bind             :80
        timeout client  3s
        acl test1    hdr_dom(host) -i
        acl test2    hdr_dom(host) -i
        acl test3    hdr_dom(host) -i
 
        use_backend test1svr if test1
        use_backend test2svr if test2
        use_backend test3svr if test3
        default_backend test3svr
 
backend test1svr
        balance         roundrobin
        mode    http
        timeout server  3s
        timeout connect 3s
      option httpchk GET /httpchk.jsp HTTP/1.1\r\nHost:
        server test1svr1 192.168.10.1:8001 check fall 5
        server test1svr2 192.168.20.1:8001 check fall 5
backend test2svr
        balance         roundrobin
        mode    http
        timeout server  3s
        timeout connect 3s
      option httpchk GET /httpchk.jsp HTTP/1.1\r\nHost:
        server test2svr1 192.168.10.1:8002 check fall 5
      server test2svr2 192.168.20.1:8002 check fall 5
backend test3svr
        balance         roundrobin
        mode    http
        timeout server  3s
        timeout connect 3s
      option httpchk GET /httpchk.jsp HTTP/1.1\r\nHost:
        server test3svr1 192.168.10.1:8003 check fall 5
      server test3svr2 192.168.20.1:8003 check fall 5
阅读(2649) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~