天天看點

HAProxy+Keepalived高可用負載均衡配置

 前言* 随着負載均衡器的成熟,人們熟知的軟體負載均衡如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 { 

     [email protected] 

   notification_email_from [email protected] 

   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 掉131的haproxy程序後,130的keepalived背景日志顯示如下,并且通路VIP 192.168.0.133 正常通路:

<a target="_blank" href="http://blog.51cto.com/attachment/201208/180520314.png"></a>

通路haproxy status如下圖:

<a target="_blank" href="http://blog.51cto.com/attachment/201208/181453164.png"></a>

本文轉自 wgkgood 51CTO部落格,原文連結:http://blog.51cto.com/wgkgood/961544

繼續閱讀