前言* 随着负载均衡器的成熟,人们熟知的软件负载均衡如LVS、HAProxy,各方面性能不亚于硬件负载均衡,HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。
我们平时用的负载均衡LVS是基于四层,新型的大型互联网公司也在采用HAProxy,了解了haproxy大并发、七层应用等特点,那今天我们来研究一下HAProxy+Keepalived基于七层负载高可用负载均衡的配置。
一、系统环境:
系统版本:CentOS6.0 x86_64
HAProxy版本:1.4.21  
Keepalived版本:1.2.1 
 
Nginx版本:1.2.2
MASTER_IP:192.168.0.130  
BACKUP_IP:192.168.0.131 
 
VIP:192.168.0.133  
WEB_1:192.168.0.134  
WEB_2:192.168.0.135
二、HAProxy安装:
1)首先安装192.168.0.130上安装:
下载最新稳定版本:1.4.21
cd /usr/src  ;wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.21.tar.gz
tar
 xzf haproxy-1.4.21.tar.gz &&cd haproxy-1.4.21 &&make 
TARGET=linux26 PREFIX=/usr/local/haproxy &&make install 
PREFIX=/usr/local/haproxy
安装完毕,在/usr/local/haproxy/目录下会看到三个目录:doc、sbin、share
2) 接下来配置HAProxy。
cd /usr/local/haproxy ;mkdir -p etc/
然后在/usr/local/haproxy/etc/下新建haproxy.cfg文件,这里拷贝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  
  
 
defaults   
 
         log     127.0.0.1       local3   
 
         mode   http   
 
         option httplog   
 
         option httpclose   
 
         option dontlognull   
 
         option forwardfor   
 
         option redispatch   
 
         retries 2   
 
         maxconn 65535   
 
         balance source   
 
         stats   uri     /web-status   
 
         contimeout      5000   
 
         clitimeout      50000   
 
         srvtimeout      50000   
 
listen  chinaapp.sinaapp.com  
 
        bind *:80  
 
        mode http  
 
        option httplog  
 
        log global  
 
        option httpchk HEAD /index.html HTTP/1.0  
 
        server web1  192.168.0.134:80 weight 5  check inter 2000 rise 2 fall 3  
 
        server web2  192.168.0.135:80 weight 5  check inter 2000 rise 2 fall 3
然后启动haproxy,如下执行启动命令:
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg 
 
[WARNING]
 217/202150 (2857) : Proxy 'chinaapp.sinaapp.com': in multi-process 
mode, stats will be limited to process assigned to the current request.
会提示如上信息,nbproc进程如果设置为1则不会提示,如果想去掉这个提示可以修改编译文件即可。 在源码配置src/cfgparse.c找到如下行
if (nbproc > 1) {
                 if (curproxy->uri_auth) {
-  
                  Warning("Proxy '%s': in multi-process mode, stats will
 be limited to process assigned to the current request.\n",

+   
                 Warning("Proxy '%s': in multi-process mode, stats will 
be limited to the process assigned to the current request.\n",
调整nbproc > 1数值即可。
三、安装Keepalived:
cd /usr/src ; 
wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz 
 
tar xzf keepalived-1.2.1.tar.gz 
 
cd keepalived-1.2.1 && 
 
./configure –with-kernel-dir=/usr/src/kernels/2.6.32-71.el6.x86_64/  &&make &&make install 
 
DIR=/usr/local/
 ;cp $DIR/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/ && cp 
$DIR/etc/sysconfig/keepalived /etc/sysconfig/ && mkdir -p 
/etc/keepalived  && cp $DIR/sbin/keepalived /usr/sbin/
四、配置keepalived:
! Configuration File for keepalived 
 
global_defs { 
 
 notification_email { 
 
     wgkgood@139.com 
 
} 
 
   notification_email_from wgkgood@139.com 
 
   smtp_server 127.0.0.1 
 
   smtp_connect_timeout 30 
 
   router_id LVS_DEVEL 
 
} 
 
vrrp_script chk_haproxy { 
 
   script "/data/sh/check_haproxy.sh" 
 
   interval 2 
 
   weight 2 
 
} 
 
# VIP1 
 
vrrp_instance VI_1 { 
 
    state BACKUP 
 
    interface eth0 
 
    lvs_sync_daemon_inteface eth0 
 
    virtual_router_id 151 
 
    priority 100 
 
    advert_int 5 
 
    nopreempt 
 
    authentication { 
 
        auth_typePASS 
 
        auth_pass 2222 
 
    } 
 
    virtual_ipaddress { 
 
        192.168.0.133 
 
    } 
 
    track_script { 
 
    chk_haproxy 
 
   } 
 
}
五、创建haproxy脚本:
设置可执行权限chmod +x check_haproxy.sh,内容如下:
#!/bin/bash 
 
#auto check haprox process 
 
#2012-8-12 wugk 
 
killall -0 haproxy 
 
  if 
 
  [[ $? -ne 0 ]];then 
 
  /etc/init.d/keepalived stop 
 
  fi
BACKUP同样如上配置haproxy、keepalived,配置完修改优先级为90即可,然后启动。


六、测试haproxy+keepalived


如图当手动kill 131haproxy进程后,130keepalived后台日志显示如下,并且访问VIP 192.168.0.133 正常访问:

访问haproxy status如下图:

本文参考煮酒兄http://andrewyu.blog.51cto.com/1604432/669491 HAProxy+Keepalived高可用负载均衡配置