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掉网络接口查看结果

分别停掉两台负载服务器,查看相关日志,看是否能自动接管