天天看點

ipvsadm配置

LVS叢集有DR、TUN、NAT三種配置模式,可以對www服務、FTP服務、MAIL服務等做負載均衡,下面通過搭建www服務的負載均衡執行個體,講述基于DR模式的LVS叢集配置。

一、 Director Server的配置

在Director Server上配置LVS負載均衡叢集,有兩種方法:

 通過ipvsadm指令行進行配置

 通過Redhat提供的工具piranha來配置LVS

1、通過ipvsadm指令行方式配置LVS

安裝IPVS後,就可以配置LVS叢集了,首先在Director Server上綁定一個虛拟IP(也叫VIP),此IP用于對外提供服務,執行如下指令:

[root@localhost ~]#ifconfig eth0:0 192.168.60.200 broadcast 192.168.60.200 \

 >netmask 255.255.255.255 up

此處在eth0裝置上綁定了一個虛拟裝置eth0:0,同時設定了一個虛拟IP是192.168.60.200,也就是上面我們規劃的IP位址,然後指定廣播位址也為192.168.60.200,需要特别注意的是,這裡的子網路遮罩為255.255.255.255。

然後給裝置eth0:0指定一條路由,執行如下指令:

[root@localhost ~]#route add -host 192.168.60.200 dev eth0:0 

接着啟用系統的包轉發功能,進而使系統充當路由器,執行如下指令:

[root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward

指令中,參數值為1時啟用ip轉發,為0時禁止ip轉發。其實在DR模式中,開啟系統的包轉發功能不是必須的,而在NAT模式下此操作是必須的。

然後開始配置ipvs,執行如下操作:

[root@localhost ~]#ipvsadm -C

[root@localhost ~]#ipvsadm -A -t 192.168.60.200:80 -s rr -p 600

[root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.132:80 -g

[root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.144:80 -g

上面操作中,第一行是清除核心虛拟伺服器清單中的所有記錄,第二行是添加一條新的虛拟IP記錄。這個新的IP是192.168.60.200,同時指定持續服務時間為600秒。第三、四行是在新加虛拟IP記錄中添加兩條新的Real Server記錄,并且指定LVS 的工作模式為直接路由模式。

最後,啟動LVS服務,執行如下操作:

[root@localhost ~]#ipvsadm

這樣,LVS在Director Server上的配置就完成了。

為了管理和配置的友善,可以将上面的操作寫出一個腳本檔案,腳本内容如下:

#!/bin/bash

VIP=192.168.60.200

RIP1=192.168.60.132

RIP2=192.168.60.144

GW=192.168.60.1

# set the Virtual IP Address

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

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

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

#Clear IPVS table

/sbin/ipvsadm -C

#set LVS

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

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

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

#Run LVS

/sbin/ipvsadm

#end

也可以寫成可啟動與停止的服務腳本,腳本内容如下:

#!/bin/sh

# description: Start LVS of Director server

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

case "$1" in

    start)

        echo " start LVS of Director Server"

# set the Virtual  IP Address and sysctl parameter

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

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

       /sbin/ipvsadm -C

      /sbin/ipvsadm

       ;;

    stop)

        echo "close LVS Directorserver"

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

        /sbin/ipvsadm -C

        /sbin/ifconfig eth0:0 down

        ;;

    *)

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

        exit 1

esac

将此腳本命名為lvsDR檔案,然後把檔案放到/etc/init.d下,執行:

[root@localhost ~]#chomd 755 /etc/init.d/lvsDR

最後可以通過下面指令啟動或停止LVS服務:

service lvsDR {start|stop}

到此為止,指令行方式配置Director Server完畢。

二、Real server 的配置

在lvs的DR和TUn模式下,使用者的通路請求到達真實伺服器後,是直接傳回給使用者的,而不再經過前端的Director Server,是以,就需要在每個Real server節點上增加虛拟的VIP位址,這樣資料才能直接傳回給使用者,增加VIP位址的操作可以通過建立腳本的方式來實作,建立檔案/etc/init.d/lvsrs,腳本内容如下:

/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

此操作是在回環裝置上綁定了一個虛拟IP位址,并設定其子網路遮罩為255.255.255.255,與Director Server上的虛拟IP保持互通,然後禁止了本機的ARP請求。

上面腳本也可以寫成可啟動與停止的服務腳本,内容如下:

[root@localhost ~]#more /etc/init.d/lvsrs

#description : Start Real Server 

        echo " Start LVS  of  Real Server"

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

        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 

        /sbin/ifconfig lo:0 down

        echo "close LVS Director server"

        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

然後,修改lvsrs有可執行權限:

[root@localhost ~]#chomd 755 /etc/init.d/lvsrs

最後,可以通過下面指令啟動或關閉lvsrs

service lvsrs {start|stop}

由于虛拟ip,也就是上面的VIP位址,是Director Server和所有的Real server共享的,如果有ARP請求VIP位址時,Director Server與所有Real server都做應答的話,就出現問題了,是以,需要禁止Real server響應ARP請求。而lvsrs腳本的作用就是使Real Server不響應arp請求。

對于2.4以下低版本,在Real Server上要安裝ARP hidden核心更新檔,幸運的是,在2.6核心中通過調整核心參數即可忽略ARP廣播回應。

三、在Director上配置備援政策 Ldirectord

Ldirectord的作用是監測Real Server,當Real Server失效時,把它從虛拟伺服器清單中删除,恢複時重新添加到清單,在前面文章介紹heartbeat時預設已經安裝了Ldirectord,是以。這裡隻需進行配置即可。Ldirectord的配置檔案是/etc/ha.d/ldirectord.cf。

下面是需要配置的選項,注意,“#”号後面的内容為注釋:

# Global Directives

checktimeout=20           #判定real server出錯的時間間隔。

checkinterval=10          #指定ldirectord在兩次檢查之間的間隔時間。

fallback=127.0.0.1:80     #當所有的real server節點不能工作時,web服務重定向的位址。

autoreload=yes            #是否自動重載配置檔案,選yes時,配置檔案發生變化,自動載入配置資訊。

logfile="/var/log/ldirectord.log"   #設定ldirectord日志輸出檔案路徑。

quiescent=no              #當選擇no時,如果一個節點在checktimeout設定的時間周期内沒有響應,ldirectord将會從LVS的路由表中直接移除real server,此時,将中斷現有的用戶端連接配接,并使LVS丢掉所有的連接配接跟蹤記錄和持續連接配接模闆,如果選擇為yes,當某個real server失效時,ldirectord将失效節點的權值設定為0,新的連接配接将不能到達,但是并不從LVS路由表中清除此節點,同時,連接配接跟蹤記錄和程式連接配接模闆仍然保留在Director上。

注意:以上幾行為ldirectord.cf檔案的“全局”設定,它們可以應用到下面多個虛拟主機,下面是每個虛拟主機的配置。

# Sample for an http virtual service

virtual=192.168.60.200:80        #指定虛拟的IP位址和端口号,注意,在virtual行後面的行必

須縮進4個空格或以一個tab字元進行标記。

real=192.168.60.132:80 gate      #指定Real Server伺服器位址和端口,同時設定LVS工作模式,

用gate表示DR模式,ipip表示TUNL模式,masq表示NAT模式。

real=192.168.60.144:80 gate

fallback=127.0.0.1:80 gate       

service=http                     #指定服務的類型,這裡是對http服務做負載均衡。

request="index.html"             #ldirectord将根據指定的Real Server位址,結合該選項給出

的請求路徑,發送通路請求,檢查Real Server上的服務是否正

常運作,確定這裡給出的頁面位址是可通路的,不然ldirectord

會誤認為此節點已經失效,發生錯誤監控現象。

receive="Test Page"              #指定請求和應答字串。

scheduler=rr                     #指定排程算法,這裡是rr(輪叫)算法。

protocol=tcp                     #指定協定的類型,LVS支援TCP和UDP協定。

checktype=negotiate              #指定Ldirectord的檢測類型,預設為negotiate。

checkport=80                     #指定監控的端口号。

virtualhost=www.gaojf.com        #虛拟伺服器的名稱,随便指定。

配置完畢,就可以執行如下指令啟動或關閉ldirectord服務

/etc/init.d/ldirectord {start|stop}

Ldirectord的核心作用是監控Real Server節點狀态,同時,它還能調用ipvsadm自動建立LVS路由表,這點從ldirectord.cf中可以看出,

這裡需要說明的是,ldirectord和Piranha都具有監控Real Server的功能,如果要通過ldirectord監控節點狀态,隻需啟動ldirectord服務,整個叢集系統就可以運作起來,而無需執行上面我們配置的LVS腳本,因為ldirectord會自動調用ipvsadm建立LVS路由表,而我們上面講述的利用ipvsadm指令行方式配置LVS,是為了讓讀者能更深入的了解ipvsadm的實作細節和實作機制。

如果是通過Piranha工具配置LVS,就無需使用ldirectord,Piranha工具對應的系統程序是pluse,此程序也會自動調用ipvsadm建立LVS路由表,同時會利用自身的nanny守護程序監控real server的狀态!

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