lvs+keepalived實現web服務高可用

lvs+keepalived實現web服務高可用
linux

1.系統環境:
web

RHEL6:安裝base;developmenttools(全部可選包)。
服務器

四臺服務器:兩臺負載服務器,兩臺真實web服務器。
網絡

vip:192.168.50.179
session

master:192.168.50.170  (主負載)
app

backup:192.168.50.171  (備用負載)
ide

rs1:192.168.50.172      (真實web服務器1)
oop

rs2:192.168.50.173      (真實web服務器2)
測試

2.負載節點安裝配置:
spa

 (1)安裝ipvsadm

  #ln -s/usr/src/kernels/`uname -r` /usr/src/linux

  #tar zxvfipvsadm-1.24.tar.gz

  #cdipvsadm-1.24

  #make;make install

  ipvsadm不須要作任何配置。只需肯定正確安裝便可。

 (2)安裝配置keepalived

  個人系統環境在安裝過程當中提示以下信息:

  須要安裝openssl-devel包,這個包也有幾個依賴包,按提示安裝便可。

  此外在安裝過程當中還缺乏 popt-devel,libnl-devel包。直接安裝。

  #tar zxvf keepalived-1.2.2.tar.gz

  #cd keepalived-1.2.2

  #./configure --prefix=/usr/local/keepalived

  #make;make install

  安裝完成後看到以下提示信息說明安裝正確:

編輯配置文件keepalived.conf文件,下面是個人配置文件內容:

# sed -e /^#/d /usr/local/keepalived/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
     router_id LVS_DEVEL_1  #此處在備用負載上改爲其餘值,如:LVS_DEVEL_2
}

vrrp_instance VI_1 {
    state MASTER         #此處在備用負載上改爲 BACKUP
    interface eth0
    virtual_router_id 51
    priority 200         #此處在備用負載上的值改小一點,值越大有點權越大
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.50.179    #虛擬IP
    }
}

virtual_server 192.168.50.179 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50  #session保持時間
    protocol TCP

    real_server 192.168.50.172 80 {
        weight 100
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            check_port 80
        }
    }
    real_server 192.168.50.173 80 {
        weight 100
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            check_port 80
        }
    }
}

注:按照以上配置在主負載從失效狀態再次上線時,會接管備用負載資源,在負載量大的應用環境不太可取,若是不想搶奪備用負載的資源,可把主負載也設置成「BACKUP」,並設置「nopreempt」。優先級要保持比備用負載高。

#ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin

#ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc

#keepalived -f /etc/keepalived.conf

echo "keepalived -f /etc/keepalived.conf" >> /etc/rc.local

---------------------------------------------------------------------------

3.真實web節點配置

(1)在真實節點安裝安裝好web應用環境。並分別創建兩個測試頁面。

(2)在真實節點創建腳本文件

#vi /etc/init.d/real_server.sh

#!/bin/sh

# chkconfig: 234572 08

# description:Config realserver lo:0 port and apply arp patch

VIP=192.168.50.179

./etc/rc.d/init.d/functions

case $1 in

            start)

            echo "lo:0 port starting"

            echo "0">/proc/sys/net/ipv4/ip_forward

            /sbin/ifconfig lo:0 $VIP broadcast $VIPnetmask 255.255.255.255 up

            /sbin/route add -host $VIP dev lo:0

            echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

            echo"2" > /proc/sys/net/ipv4/conf/lo/arp_announce

            echo"1" > /proc/sys/net/ipv4/conf/all/arp_ignore

            echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

            sysctl -p

            ;;

            stop)

            echo "lo:0 port closing"

            ifconfig lo:0 down

            echo "1" > /proc/sys/net/ipv4/ip_forward

            echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

            ;;

            *)

            echo "Usage: $0 {start|stop}"

            exit 1

esac

#chkconfig --add real_server.sh

#chkconfig --level 235  real_server.sh on

----------------------------------------------------------------------------------

4.測試

分別停掉兩臺web服務器的http服務,或者down掉網絡接口查看結果

分別停掉兩臺負載服務器,查看相關日誌,看是否能自動接管

相關文章
相關標籤/搜索