LVS+Keepalived

----------------------------WebServer------------------------------------
mkdir /usr/local/keep/
touch /usr/local/keep/r-ser.sh
vi /usr/local/keep/r-ser.sh

#!/bin/bash
SNS_VIP=192.168.1.8
case "$1" in
    start)
    ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
    /sbin/route add -host $SNS_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 >/dev/null 2>&1
    echo "RealServer Start OK"

    ;;
    stop)
    ifconfig lo:0 down
    /sbin/route del $SNS_VIP >/dev/null 2>&1
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
    echo "RealServer Stoped"

    ;;
    *)
    echo "Usage: $0 {start|stop}"
        exit 1
    esac

    exit 0

------------------LVS-------------------

mkdir /usr/local/keep/
touch /usr/local/keep/lvs-dr.sh
vi /usr/local/keep/lvs-dr.sh

#!/bin/bash
GW=192.168.1.1
########### website director vip
SNS_VIP=192.168.1.8
SNS_RIP1=192.168.1.9
SNS_RIP2=192.168.1.10
#logger $0 called with $1
case "$1" in
    start)
    ######## set VIP ########
#    /sbin/ipvsadm --set 30 5 60   
    /sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up
    /sbin/route add -host $SNS_VIP dev eth0:0
#    /sbin/ipvsadm -A -t $SNS_VIP:80 -s wrr -p 3
    /sbin/ipvsadm -A -t $SNS_VIP:80 -s rr
    /sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g -w 1
    /sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g -w 1
    touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
    echo "ipvsadm starting-------------------------[OK]"
    ;;
    stop)
    /sbin/ipvsadm -C
    /sbin/ifconfig eth0:0 down
    /sbin/route del $SNS_VIP
    rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
    echo "ipvsadm stoped"

    ;;
    status)
    if [ ! -e /var/lock/subsys/ipvsadm ];then
        echo "ipvsadm stoped--------------------"
        exit 1
    else
        echo "ipvsadm running-----------------[OK]"
    fi
    ;;
    *)
        echo "Usage: $0 {start|stop|status}"
        exit 1
    esac
        exit 0

------------------安装keepalived-------------------
# ln -s /usr/src/kernels/2.6.18-238.el5-i686/ /usr/src/linux  (非常重要,注意用uname来查看linux的内核参数:ln -sv /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux)
# tar zxvf  /usr/software/keepalived-1.2.1.tar.gz
# cd /usr/software/keepalived-1.2.1/
# ./configure

(注意这个步骤要看到以下字样才是正常的)

Keepalived configuration
------------------------
Keepalived version       : 1.2.1
Compiler                 : gcc
Compiler flags           : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib                : -lpopt -lssl -lcrypto
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
Use VRRP Framework       : Yes
Use Debug flags          : No

# make
# make install

------------------配置keepalived-------------------
# echo 1 /proc/sys/net/ipv4/ip_forward
# vi /etc/sysctl.conf
# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
# mkdir /etc/keepalived
# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
# cp /usr/local/sbin/keepalived /usr/sbin/
# chkconfig --add keepalived
# chkconfig --level 2345 keepalived on
# vi /etc/keepalived/keepalived.conf

----------------------------------------------------------------------------------------------
! Configuration File for keepalived

global_defs {
#   notification_email {
#     acassen
#   }
#   notification_email_from Alexandre.Cassen@firewall.loc
#   smtp_server 192.168.200.1
#   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1
{
    state MASTER
    interface eth0
    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {
        192.168.1.8

    }

}

virtual_server 192.168.1.8 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 60
    protocol TCP

    real_server 192.168.1.9 80 {
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
        connect_port 80
        }
    }

    real_server 192.168.1.10 80 {
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
        connect_port 80
        }
    }
}

--------------------------------------------------------
# service keepalived start
# ipvsadm
# ip add
# ps aux | grep keepalived

posted @ 2011-09-01 00:31  ParamousGIS  阅读(114)  评论(0)    收藏  举报