天天看點

高可用雙機lvs(heartbeat+ipvsadm+ldirectord)

高可用雙機lvs 

1、機器ip

192.168.2.245 虛拟ip

192.168.2.119 lvsmaster lvs主

192.168.2.205 lvsbackup lvs從

192.168.2.120 realserver1 web伺服器

192.168.2.127 realserver2 web伺服器

2、lvs安裝

yum -y install ipvsadm

yum -y install libnet

yum -y install e2fsprogs

yum -y install heartbeat heartbeat-ldirectord

cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/

cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/

cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/

cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf /etc/ha.d/

3、配置步驟

主lvs配置

(1)lvsdr-basic腳本配置

cat >/etc/init.d/lvsdr-basic<<EOF

#!/bin/sh

VIP=192.168.2.245

RIP1=192.168.2.120

RIP2=192.168.2.127

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

case "$1" in

start)

echo "start [OK]"

/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up

/sbin/route add -host $VIP dev eth0:1

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

/sbin/ipvsadm -C

/sbin/ipvsadm -A -t$VIP:80 -s rr

/sbin/ipvsadm -a -t$VIP:80 -r $RIP1:80 -g

/sbin/ipvsadm -a -t$VIP:80 -r $RIP2:80 -g

/sbin/ipvsadm

;;

stop)

echo "stop [OK]"

*)

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

exit 1

esac

EOF

chmod u+x /etc/init.d/lvsdr-basic

(2)ha.cf配置

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility     local0

deadtime 20

initdead 20

#bcast   eth1

ucast eth0 192.168.2.205

auto_failback on

node    master     主節點

node    lvsbackup

ping_group hacluster 192.168.2.119 192.168.2.205

respawn root /usr/lib64/heartbeat/ipfail

apiauth ipfail gid=root uid=root

(3)authkeys認證檔案的配置

auth 1

1 crc

chmod u+x 600 authkeys

(4)ldirectord.cf檔案配置

checktimeout=3

checkinterval=1

autoreload=no

logfile="/var/log/ldirectord.log"

quiescent=no

virtual=192.168.2.245:80

        real=192.168.2.120:80 gate

        real=192.168.2.127:80 gate

        service=http

        request="test.html"

        receive="Test"

        scheduler=sh

        protocol=tcp

(5)haresources檔案配置

加入

memcache.dev-innet-shopex.cn IPaddr::192.168.2.245 lvsdr-basic ldirectord

(5)關閉ldirectord服務開啟heartbeat服務。

# chkconfig --del ldirectord

# chkconfig --level 2345 ldirectord off

# chkconfig --level 2345 heartbeat on

備份lvs配置

(1)switchdr配置

cat > /etc/init.d/switchdr << EOF

# description: close lo0 and arp_ignore

    start)

        echo "************* start director server and close tunl ***********"

        ifconfig lo:0 down

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

        ;;

    stop)

        echo "start Real Server"

        ifconfig eth0:0 down

        ifconfig lo:0  $VIP netmask 255.255.255.255 broadcast $VIP 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

    *)

        echo "Usage: switchdr {start|stop}"

        exit 1

chmod u+x /etc/init.d/switchdr

cat > ha.cf << EOF

ucast eth0 192.168.2.119

node    memcache.dev-innet-shopex.cn

(3)authkeys 配置

cat > authkeys << EOF

chmod 600 authkeys

(4) ldirectord.cf配置

cat > ldirectord.cf << EOF

(5) 配置haresources

memcache.dev-innet-shopex.cn switchdr IPaddr::192.168.2.245 ldirectord

(6)關閉ldirectord服務開啟heartbeat服務。

3、用戶端配置

ip 192.168.2.127 192.168.2.120

cat > /etc/init.d/realserver << EOF

#!/bin/bash

#description : start realserver

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 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

chmod u+x /etc/init.d/realservert

執行# /etc/init.d/realserver

4、啟動服務

lvs主

/etc/ini.d/heartbeat start

lvs備份

/etc/ini.d/switchdr stop

5、測試

(1)停掉主備份會接替主,當主恢複時備份自動轉為備份狀态。 

(2)停止一台nginx真實伺服器。ipvsadm将會自動把這一台機器剔除。

    本文轉自yuangang_love 51CTO部落格,原文連結:http://blog.51cto.com/linux008/538369,如需轉載請自行聯系原作者

繼續閱讀