企业级高可用Web架构之HAProxy+Keepalived

本文分享了作者在东莞项目中使用的HAProxy+Keepalived配置经验,包括线上运行的配置文件详解,如使用balancesource机制确保session固定,以及通过HTTP监控确保服务正常运行等。此外还介绍了如何设置日志支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

细数下来,算是东莞的项目的话,HAProxy+Keepalived我差不多也有三套在线上跑了,另外,这套Web方案也是我的一拍网的备份方案之一,目前也在测试,如果速度和稳定性够强劲的话,我也考虑将LVS+Keepalived换成HAProxy+Keepalived,关于HAProxy的语法和安装步骤请参考我的专题系列文章http://network.51cto.com/art/201101/241997.htm,另外,此篇文章跟刘天斯的不一样,我主要用其作为Web级别的负载均衡(七层应用)。
一、线上跑的HAProxy配置文件,代码如下:

    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 
            #debug 
     
    defaults  
             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      50000  
     
    listen  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宕机的可能性微乎其乎,这个实施起来也简单,我们可以用curl -s --head http://www.1paituan.com/index.jsp | awk '/HTTP/ {print $2}'的方法,判断是否返回了正常的200代码。

三、加上日志支持,代码如下:

  
  1. #vim /etc/syslog.conf 
  2. 添加: 
  3. local3.*        /var/log/haproxy.log 
  4. local0.*        /var/log/haproxy.log 
  5. #vim /etc/sysconfig/syslog 
  6. 修改: 
  7. SYSLOGD_OPTIONS="-r -m 0" 
  8. 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://andrewyu.blog.51cto.com/1604432/669491

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值