|
|
51CTO旗下网站
|
|
移动端

HAProxy负载均衡器的配置与算法

虽然我们看HAProxy的官方文档确实配置内容比较多,但其实我们用于线上环境,仅此几条就够用了,这也是大家说HAProxy简单的原因……

作者:抚琴煮酒来源:51CTO.com|2011-08-24 13:45

【51CTO.com 独家特稿】虽然我们看HAProxy的官方文档确实配置内容比较多,但其实我们用于线上环境,仅此几条就够用了,这也是大家说HAProxy简单的原因,HAProxy的对应配置文件如下所示:

  1. global  
  2.         log 127.0.0.1   local0  
  3.         maxconn 4096  
  4.         chroot /usr/local/haproxy  
  5.         uid 99   
  6.         gid 99  
  7.         daemon  
  8.         nbproc 1  
  9.         pidfile /usr/local/haproxy/logs/haproxy.pid  
  10.         debug  
  11.  
  12. defaults  
  13.         log     127.0.0.1       local3  
  14.         mode    http  
  15.         option httplog  
  16.         option httpclose  
  17.         option dontlognull  
  18.         option forwardfor  
  19.         option redispatch  
  20.         retries 2  
  21.         maxconn 2000  
  22.         balance source  
  23.         stats   uri     /haproxy-stats  
  24.         contimeout      5000  
  25.         clitimeout      50000  
  26.         srvtimeout      50000  
  27.  
  28.  listen 1paituan_proxy 203.93.236.149:80  
  29.         option httpchk HEAD /index.jsp HTTP/1.0  
  30.         server web1  203.93.236.147:80 cookie app1inst1 check inter 2000 rise 2 fall 1  
  31.      server web2  203.93.236.146:80 cookie app1inst2 check inter 2000 rise 2 fall 1 

加上日志支持,如下所示:

  1. #vim /etc/syslog.conf  
  2.  
  3. 添加:  
  4.  
  5. local3.*        /var/log/haproxy.log  
  6. local0.*        /var/log/haproxy.log  
  7.  
  8. #vim /etc/sysconfig/syslog  
  9.  
  10. 修改:  
  11.  
  12. SYSLOGD_OPTIONS="-r -m 0" 
  13. service syslog restart 

这里要注意的几个地方是:

一、HAProyx采用的是balance source机制,它跟LVS的persistent和Nginx的ip_hash一样,是让客户机访问时始终访问后端的某一台真实的web服务器;

二、203.93.236.149是我的网站通过Keepalived生成的VIP地址;

三、 option httpchk HEAD /index.jsp HTTP/1.0 是网页临近,如果HAProxy检测不到Web的根目录下没有index.jsp,就会产生503报错。

HAProxy+keepalived/Heartbeat是我网站的第二套方案,因为刚开始网站上的LVS+Keepalived高可用架构,后来几个朋友说用手机测试时,转发很慢,有时打不开,甚有的电脑也是这样,我尝试了以下确实如此;所以用了Nginx+Keepalived以后发现转发速度确实快多了,手机上一拍网也没有这个问题了,由于Nginx+Keepalived在东莞的客户那里已经部署得很成功了,所以后期我也考虑将此网站设计成HAProyx+Keepalived这种架构的。

HAProxy的算法有如下8种:

一、roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;

二、static-rr,表示根据权重,建议关注;

三、leastconn,表示最少连接者先处理,建议关注;

四、source,表示根据请求源IP,建议关注;

五、uri,表示根据请求的URI;

六、url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name

七、hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;

八、rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

其实这些算法各有各的用法,我们平时应用得比较多的应该是roundrobin、source和lestconn,大家可以重点关注下。这里我用HAProxy+Keepalived时没有考虑HAProxy进程级别的高HA,一来是因为淘宝也在用它作为负载均衡器,稳定性肯定不需要怀疑;二来在测试时发现确实相当的稳定,杀掉HAProxy进程还必须用kill -9,所以没有在这上面浪费时间了;在测试时也确实考虑过用HAProxy+Keepalived做双主架构,后来发现不是太好维护就算了。

有一点要提醒大家,HAProxy是支持虚拟主机的,我以前看过有些朋友说它是不支持的,这个其实很好验证,我们做个1+1的架构,后面随便放台Nginx或Aapceh的web服务器就可能验证这种说法了;另外,经过与Nginx的正则对比,我们也确实发现HAProxy的正则处理能力上不如Nginx的强大和灵活的,我们这里也可以采取一个折衷的方案,后面的web服务器我们都用Nginx来作,如果是jsp应用,可以用Nginx+tomat,如果是跑PHP的,可以用Nginx+FastCGI(PHP5)。

余洪春(抚琴煮酒),《构建高性能的Linux服务器》一书作者,一拍网系统架构师、资深项目管理工程师,ChinaUnix集群和高可用版版主。

【51CTO.com独家特稿,非经授权谢绝转载!合作媒体转载请注明原文出处及出处!】

【编辑推荐】

  1. DHCP Server负载均衡的思考
  2. web服务器负载均衡部署及实现
  3. 四种负载均衡技术大比拼
  4. 网络负载均衡配置十步完成
  5. Nginx负载均衡使用心得
  6. HAProxy负载均衡器的安装及配置
  7. 因地制宜 解读Linux集群负载均衡
  8. 软/硬件负载均衡产品 你知多少?
【责任编辑:佟媛微 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

Redis运维秘籍

Redis运维秘籍

运维标配技术
共15章 | one叶孤舟

57人订阅学习

活学活用 Ubuntu Server

活学活用 Ubuntu Server

实战直通车
共35章 | UbuntuServer

235人订阅学习

Java EE速成指南

Java EE速成指南

掌握Java核心
共30章 | 51CTO王波

89人订阅学习

读 书 +更多

网络工程师必读——接入网与交换网

本书是以一个典型的计算机广域网通信为背景进行编写的,详细、全面地介绍了通信网中最主要的两个部分:目前,国内外接入网与交换网的主要技...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客