细数下来,算是东莞的项目的 话,HAProxy+Keepalived我差不多也有三套在线上跑了,另外,这套Web方案也是我的一拍网的备份方案之一,目前也在测试,如果速度和稳 定性够强劲的话,我也考虑将LVS+Keepalived换成HAProxy+Keepalived,关于HAProxy的语法和安装步骤请参考我的专题 系列文章http://network.51cto.com/art/201101/241997.htm,另外,此篇文章跟刘天斯的不一样,我主要用其 作为Web级别的负载均衡(七层应用)。一、线上跑的HAProxy配置文件,代码如下:
123456789101112131415161718192021222324252627282930313233    global        log 127.0.0.1   local0        maxconn 65535        chroot /usr/local/haproxy        uid 99          gid 99        daemon        nbproc 8        pidfile /usr/local/haproxy/haproxy.pid        #debugdefaults         log     127.0.0.1       local3         mode   http         option httplog         option httpclose         option dontlognull         option forwardfor         option redispatch         retries 2         maxconn 2000         balance source         stats   uri     /web-status         contimeout      5000         clitimeout      50000         srvtimeout      50000listen  www.1paituan.com        bind *:80        mode http        option httplog        log global        option httpchk HEAD /index.jsp HTTP/1.0        server web1  203.93.236.147:80 weight 5  check inter 2000 rise 2 fall 3        server web2  203.93.236.146:80 weight 3  check inter 2000 rise 2 fall 3    
二、HAProxy的监控脚本我没有做,因为生产环境下HAProxy宕机的可能性微乎其乎,这个实施起来也简单,我们可以用如下命令来监控,判断是否返回了正常的200代码,命令下所示:
1    curl -s --head http://www.1paituan.com/index.jsp | awk '/HTTP/ {print $2}'    
三、加上日志支持,代码如下:
12345678    vim /etc/syslog.conf添加:local3.*        /var/log/haproxy.loglocal0.*        /var/log/haproxy.logvim /etc/sysconfig/syslog修改:SYSLOGD_OPTIONS="-r -m 0"service syslog restart    
四、大家需要注意的几个地方是:
1)HAProyx采用的是balance source机制,它跟Nginx的ip_hash机制原理类似,是让客户机访问时始终访问后端的某一台真实的web服务器,这样让session就固定下来了;2)option httpchk HEAD /index.jsp HTTP/1.0 是网页监控,如果HAProxy检测不到Web的根目录下没有index.jsp,就会产生503报错。3)有网友说HAProxy必须采用listen 203.93.236.141:80这样类似的格式,这样其实不好,做集群时会导致从机启动不了,我们可以用bind *:80的方式代替。4)HAProxy的并发监控和日志收集分析是下一步考虑的事情。
本文出自 “抚琴煮酒” 博客,请务必保留此出处http://yuhongchun.blog.51cto.com/1604432/669491