天天看點

負載均衡叢集-LVS應用

說明:本篇結合上一篇"linux-叢集介紹"而寫,當看完上一篇叢集介紹後做這個實驗思路将會很清晰!!!

負載均衡:LVS-NAT實作:

實驗環境:

1 三台RHEL5.4虛拟機,二台作安裝好web作為後端Realserver,另一台作為Director,Realserver的網關都指向Director,

2 Director上需要二個網卡,一個公網位址向外提供服務,一個内網位址可以是私有位址與Realserver通信。Director上開啟路由轉發功能。

3 Realserver ip 192.168.0.55/192.168.0.56,網關192.168.0.100 

  Director ip 外網卡:10.0.0.10,内網卡192.168.0.100 

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

配置好Realserver上的ip和網關,開啟web服務,主要在Director上配置

ipvsadm -A -t 10.0.0.10:80 -s wlc

    ipvsadm -a -t 10.0.0.10:80 -r 192.168.0.55 -m -w 2   

    ipvsadm -a -t 10.0.0.10:80 -r 192.168.0.56 -m -w 5

vim /etc/sysctl

net.ipv4.ip_forward = 1 #開啟路由轉發

LVM-nat的腳本

#!/bin/bash

# case “$1”in

start)

    ipvsadm -A -t 192.168.0.83:80 -s wlc

    ipvsadm -a -t 192.168.0.83:80 -r 192.168.10.6 -m -w 2   

    ipvsadm -a -t 192.168.0.83:80 -r 192.168.10.7 -m -w 5 ;;

stop)

    ipvsadm –C ;;

status)

    ipvadm -Ln ;;

esac

ipvsadm –Ln 檢視所有連接配接 ipvsadm –E 192.168.0.83::80 –s wrr (基于權重,權重大的連接配接将多)

負載均衡 LVS-DR server

1 三台RHEL5.4虛拟機,二台作安裝好web作為後端Realserver,另一台作為Director

2 Director上需要一個網卡,位址都為公網位址,VIP必須是公網位址,RIP可以是私網位址但要與Director通信時要進行解析。是以這裡全部使用公網位址,不需要指定網關

Director上開啟路由轉發功能。

3 Realserver ip 192.168.0.55/192.168.0.56,

  Director ip 192.168.0.100 VIP 192.168.0.200

當用戶端送出請求時reserver都會響應,為避免realserver都響應可以:

1 通過防火牆不讓arp資料包進來

2 linux核心有二個參數,配置完後避免arp請求

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

配置過程:

在兩個Rserver上各配置vip

 ifconfig lo:0 192.168.0.200 broadcast 192.168.0.200 netmask 255.255.255.255 up

在二個Rserver上配置路由資訊通過lo:0接口才出去

route add -host 192.168.0.200 dev lo:0

在二個web伺服器上做位址隐藏 vim /etc/sysctl.conf

vim /etc/sysctl.conf 位址隐藏

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

sysctl -p 重新讀取配置檔案

 Directory上配置

ifconfig eth0:0 192.168.0.100 broadcast 192.168.0.100 netmask 255.255.255.255 up

ipvsadm -A -t 192.168.0.200:80 -s wlc

ipvsadm -a -t 192.0.200:80 -r 192.168.0.55 -g -w 5

ipvsadm -a -t 192.0.200:80 -r 192.168.0.56 -g -w 8

server ipvsadm save

二個Realserver可以通過一個nfs伺服器共享網站資源,是二個Realserver的網站内容同步提供同樣的網站内容

Director腳本:

# LVS script for VS/DR

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

VIP=192.168.0.200

RIP1=192.168.0.55

RIP2=192.168.0.56

PORT=80

case "$1" in

start)          

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

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

# Since this is the Director we must be able to forward packets

 echo 1 &gt; /proc/sys/net/ipv4/ip_forward

# Clear all iptables rules.

 /sbin/iptables -F

# Reset iptables counters.

 /sbin/iptables -Z

# Clear all ipvsadm rules/services.

 /sbin/ipvsadm -C

# Add an IP virtual service for VIP 192.168.0.200 port 80

# In this recipe, we will use the round-robin scheduling method.

# In production, however, you should use a weighted, dynamic scheduling method.

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

# Now direct packets for this VIP to

# the real server IP (RIP) inside the cluster

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

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

 /bin/touch /var/lock/subsys/ipvsadm &amp;&gt; /dev/null

;;

# Stop forwarding packets

 echo 0 &gt; /proc/sys/net/ipv4/ip_forward

# Reset ipvsadm

# Bring down the VIP interface

 /sbin/ifconfig eth0:1 down

 /sbin/route del $VIP

 /bin/rm -f /var/lock/subsys/ipvsadm

 echo "ipvs is stopped..."

 if [ ! -e /var/lock/subsys/ipvsadm ]; then

    echo "ipvsadm is stopped ..."

 else

    echo "ipvs is running ..."

    ipvsadm -L -n

 fi

*)

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

RealServer腳本:

# Script to start LVS DR real server.

# description: LVS DR real server

host=`/bin/hostname`

       # Start LVS-DR real server on this machine.

        /sbin/ifconfig lo down

        /sbin/ifconfig lo up

        echo 1 &gt; /proc/sys/net/ipv4/conf/lo/arp_ignore

        echo 2 &gt; /proc/sys/net/ipv4/conf/lo/arp_announce

        echo 1 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore

        echo 2 &gt; /proc/sys/net/ipv4/conf/all/arp_announce

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

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

        # Stop LVS-DR real server loopback device(s).

        /sbin/ifconfig lo:0 down

        echo 0 &gt; /proc/sys/net/ipv4/conf/lo/arp_ignore

        echo 0 &gt; /proc/sys/net/ipv4/conf/lo/arp_announce

        echo 0 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore

        echo 0 &gt; /proc/sys/net/ipv4/conf/all/arp_announce

        # Status of LVS-DR real server.

        islothere=`/sbin/ifconfig lo:0 | grep $VIP`

        isrothere=`netstat -rn | grep "lo:0" | grep $VIP`

        if [ ! "$islothere" -o ! "isrothere" ];then

            # Either the route or the lo:0 device

            # not found.

            echo "LVS-DR real server Stopped."

        else

            echo "LVS-DR real server Running."

        fi

            # Invalid entry.

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

            exit 1

本文轉自 張玉坡 51CTO部落格,原文連結:http://blog.51cto.com/fighter/499181