lvs+keepalive 比較詳細的安裝配置文檔

lvs說明:目前有三種IP負載均衡技術(VS/NAT、VS/TUN和VS/DR);
八種調度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。
在 調度器的實現技術中,IP負載均衡技術是效率最高的。在已有的IP負載均衡技術中有經過網絡地址轉換(Network Address Translation)將一組服務器構成一個高性能的、高可用的虛擬服務器,咱們稱之爲VS/NAT技術(Virtual Server via Network Address Translation),大多數商品化的IP負載均衡調度器產品都是使用此方法,如Cisco的LocalDirector、F5的Big/IP和 Alteon的ACEDirector。在分析VS/NAT的缺點和網絡服務的非對稱性的基礎上,咱們提出經過IP隧道實現虛擬服務器的方法VS/TUN (Virtual Server via IP Tunneling),和經過直接路由實現虛擬服務器的方法VS/DR(Virtual Server via Direct Routing),它們能夠極大地提升系統的伸縮性。因此,IPVS軟件實現了這三種IP負載均衡技術,它們的大體原理以下(咱們將在其餘章節對其工做原 理進行詳細描述),node

Virtual Server via Network Address Translation(VS/NAT)
經過網絡地址轉換,調度器重寫請求報文的目標地址,根據預設的調度算法,將請求分派給後端的真實服務器;真實服務器的響應報文經過調度器時,報文的源地址被重寫,再返回給客戶,完成整個負載調度過程。linux

Virtual Server via IP Tunneling(VS/TUN)
採用NAT技術時,因爲請求和響應報文都必須通過調 度器地址重寫,當客戶請求愈來愈多時,調度器的處理能力將成爲瓶頸。爲了解決這個問題,調度器把請求報文經過IP隧道轉發至真實服務器,而真實服務器將響 應直接返回給客戶,因此調度器只處理請求報文。因爲通常網絡服務應答比請求報文大許多,採用 VS/TUN技術後,集羣系統的最大吞吐量能夠提升10倍。web

Virtual Server via Direct Routing(VS/DR)
VS/DR經過改寫請求報文的MAC地址,將請求 發送到真實服務器,而真實服務器將響應直接返回給客戶。同VS/TUN技術同樣,VS/DR技術可極大地提升集羣系統的伸縮性。這種方法沒有IP隧道的開 銷,對集羣中的真實服務器也沒有必須支持IP隧道協議的要求,可是要求調度器與真實服務器都有一塊網卡連在同一物理網段上。算法

針對不一樣的網絡服務需求和服務器配置,IPVS調度器實現了以下八種負載調度算法:使用比較多的是如下四種:後端

輪叫(Round Robin)
調度器經過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而無論服務器上實際的鏈接數和系統負載。bash

加權輪叫(Weighted Round Robin)
調度器經過"加權輪叫"調度算法根據真實服務器的不一樣處理能力來調度訪問請求。這樣能夠保證處理能力強的服務器處理更多的訪問流量。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。服務器

最少連接(Least Connections)
調度器經過"最少鏈接"調度算法動態地將網絡請求調度到已創建的連接數最少的服務器上。若是集羣系統的真實服務器具備相近的系統性能,採用"最小鏈接"調度算法能夠較好地均衡負載。網絡

加權最少連接(Weighted Least Connections)
在集羣系統中的服務器性能差別較大的狀況下,調度器採用"加權最少連接"調度算法優化負載均衡性能,具備較高權值的服務器將承受較大比例的活動鏈接負載。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。負載均衡


一、拓撲描述:(必定要理解這個拓撲關係)
       負載服務器master真實IP        192.168.1.252
       負載服務器backup真實IP  192.168.1.230
       負載服務器虛擬IP        192.168.1.229
       後端WEB服務器IP                192.168.1.220
       後端WEB服務器IP                192.168.1.231oop

二、升級內核
#yum install kernel

三、重啓服務器,使用新的內核

四、刪除舊版、升級新版內核
#rpm -e kernel-2.6.18-53.el5
#rpm -e kernel-devel-2.6.18-53.el5
#rpm -e kernel-headers-2.6.18-53.el5 --nodeps
#yum install kernel-headers
#yum install kernel-devel

五、下載軟件
#wget http://www.linuxvirtualser... ... ipvsadm-1.24.tar.gz
    #wget http://www.keepalived.org/...

六、安裝ipvsadm-1.24  //master和backup
#        rpm -ivh ipvsadm-1.24-6.src.rpm
#        cd /usr/src/redhat/SOURCES
#        tar -zxvf ipvsadm-1.24.tar.gz
#        cd ipvsadm
#       uname -r  //查詢版本
       2.6.18-53.el5xen
#        ln -s  /usr/src/kernels/2.6.18-53.el5xen-i686/  /usr/src/linux  //假如這裏的內核版本不同的話,make的時候會出現錯誤。
#        make;make install

7,安裝keepalived.

在負載均衡服務器上執行 master和backup
一、解壓
       #tar -zxvf keepalived-1.1.15.tar.gz
       #cd keepalived-1.1.15
       #./configure --prefix=/usr/local/keepalived
       #make;make install
       #cp /usr/local/keepalived/sbin/rc.d/init.d/keepalived /sbin/rc.d/init.d/
       #cp /usr/local/keepalived/sbin/sysconfig/keepalived /sbin/sysconfig/
       #mkdir /sbin/keepalived
       #cp /usr/local/keepalived/sbin/keepalived/keepalived.conf /sbin/keepalived/
       #cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
       #service keepalived start|stop 

八、開啓負載服務器路由機制  //master和backup
#        vi /sbin/sysctl.conf 保證有以下內容
       net.ipv4.ip_forward = 1
       執行
#        sysctl -p

九、創建負載服務器啓動腳本  //master和backup
#vi /sbin/lvsdr.sh
#!/bin/bash
VIP=192.168.1.229
RIP1=192.168.1.220
RIP2=192.168.1.231
/sbin/rc.d/init.d/functions
case "$1" in
start)
       echo "start LVS of DirectorServer"
       #Set the Virtual IP Address
       /sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
       /sbin/route add -host $VIP dev eth0:1
       #Clear IPVS Table
       /sbin/ipvsadm -C
       #Set Lvs
       /sbin/ipvsadm -A -t $VIP:80 -s wrr
       /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
       /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
       #Run Lvs
       /sbin/ipvsadm
;;
stop)
echo "Close LVS Directorserver"
/sbin/ifconfig eth0:1 down
/sbin/ipvsadm -C
;;
*)
echo "Usage0{start|stop}"
exit 1
esac

十、分配權限
#chmod 755 /sbin/lvsdr.sh

十一、執行測試
#        /sbin/lvsdr.sh start
       查看ifconfig是否有ifcfg-eth0:1   (有就對了)
       查看route -n 路由表是否多了eth0:1路由(有就對了)
#        /sbin/lvsdr.sh stop
       查看ifconfig是否有ifcfg-eth0:1   (無就對了)
       查看route -n 路由表是否多了eth0:1路由(無就對了)
#        /sbin/lvsdr.sh  adsa
       是否提示參數錯誤,只能使用{start|stop}。

十二、配置後端WEB服務器
       在192.168.1.231和192.168.1.220上分別創建以下腳本。
#        vi /sbin/realdr.sh
       #!/bin/bash
       VIP=192.168.1.229
       /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/default/arp_ignore
       echo "2">/proc/sys/net/ipv4/conf/default/arp_announce
       echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
       sysctl -p
1三、配置權限
#        chmod 755 /sbin/realdr.sh

1四、在兩臺web服務器上分別執行其指命。
/sbin/realdr.sh start

15.配置keepalived.conf配置文件 //master和backup

#vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
  notification_email {
    dalianlxw@139.com
  }
  notification_email_from xwluan@tsong.cn
  smtp_server 222.73.214.147
  smtp_connect_timeout 30
  router_id LVS_DEVEL
}

vrrp_instance VI_1 {
   state MASTER  //備份服務器設置爲backup
   interface eth0
   virtual_router_id 51
   priority 100  ////備份服務器設置小於100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       192.168.1.229
   }
}

virtual_server 192.168.1.229 80 {
   delay_loop 6  //隔6秒查詢
   lb_algo wrr   //lvs算法
   lb_kind DR    //(Direct Route)
   persistence_timeout 60  //同一IP的鏈接60秒內被分配到同一臺realserver
   inhibit_on_failure  //當web掛掉的時候,前面請求的用戶,能夠繼續打開網頁,可是後面的請求不會調度到掛掉的web上面。
   protocol TCP   //用TCP協議檢查realserver狀態

   real_server 192.168.1.220 80 {
       weight 3    //權重
       TCP_CHECK {
           connect_timeout 10   //10秒無響應超時
           nb_get_retry 3
           delay_before_retry 3
       }
   }

   real_server 192.168.1.231 80 {
       weight 1
       TCP_CHECK {
           connect_timeout 10
           nb_get_retry 3
           delay_before_retry 3
       }
   }
  
}

16,啓動keepalived
# /etc/rc.d/init.d/keepalived start

17:設置成自啓動
#vi /etc/rc.local //裏面添加

/etc/init.d/keepalived restart
/etc/lvsdr.sh start


測試算法:
  個人測試環境中,算法使用的是wrr,和wlc這兩種。


權重問題:當lvs配置文件lvs-dr.sh改變權重以及keepalived配置文件keepalived.conf修改權重後,哪一個文件從新啓動,哪一個文件的權重生效。同時權重在master和backup上面能夠設置不一樣。
當 算法是rr的時候,權重沒有做用,可是當算法是wlc和wrr的時候,必須設置權重,能夠根據服務器的性能和配置,來肯定權重的大小,當權重大的時 候,lvs調度的服務也就多,同時權重高的服務器先收到連接。當小的時候,lvs調度的比較少。當權重爲0的時候,表示服務器不可用,

測試lvs
1 當我把master的lvs服務關掉的時候,會將用戶請求自動切換到backup上面進行工做。
2 當我把web服務關掉的時候,lvs上面會顯示web消失,當啓用後,web會自動顯示
web關閉後:
[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddressort Scheduler Flags
 -> RemoteAddressort           Forward Weight ActiveConn InActConn
TCP  192.168.1.229:80 wlc
 -> 192.168.1.231:80             Route   10     0          0        
[root@localhost ~]# ipvsadm -ln
web啓用後:
root@localhost ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddressort Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn TCP  192.168.1.229:80 wlc  -> 192.168.1.231:80             Route   1      0          0          -> 192.168.1.220:80             Route   1      0          0     3 當master服務器down的時候,backup自動會接替服務,當master起來的時候,backup會自動斷掉。

相關文章
相關標籤/搜索