linux下負載均衡(LVS安裝與配置)

LVS的三種包轉發方式
      LVS提供了三種包轉發方式:NAT(網絡地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由)
     不同的轉發模式決定了不同的cluster的網絡結構,下面對三種轉發方式分別介始:
1、NAT(網絡地址映射):
     NAT方式可支持任何的操作系統,以及私有網絡,並且只需一個Internet IP地址,但是整個系統的性能受到限制。因爲執行NAT每次需要重寫包
     有一定的延遲;另外,大部分應用有80%的數據是從服務器流向客戶機,也就是用戶的請求非常短,而服務器的迴應非常大,對負載均衡器形成很大壓力,成爲了新的瓶頸。
2、IP Tunneling(IP隧道):
     director分配請求到不同的real server。real server處理請求後直接回應給用戶,這樣director負載均衡器僅處理客戶機與服務器的一半連接
    IP Tunneling技術極大地提高了director的調度處理能力,同時也極大地提高了系統能容納的最大節點數,可以超過100個節點
    real server可以在任何LAN或WAN上運行,這意味着允許地理上的分佈,這在災難恢復中有重要意義。服務器必須擁有正式的IP地址用於與客戶機直接通信
    並且所有服務器必須支持IP隧道協議。

3、Direct Routing(直接路由):
     與IP Tunneling類似,負載均衡器僅處理一半的連接,避免了新的性能瓶頸,同樣增加了系統的可伸縮性。Direct Routing與IP Tunneling相比
    沒有IP封裝的開銷,但由於採用物理層(修改MAC地址)技術,所有服務器都必須在一個物理網段。
二、LVS的八種調度算法:
     * rr   輪叫(Round Robin)
      調度器通過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而不管服務器上實際的連接數和系統負載。

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

    * lc   最少鏈接(Least Connections)
      調度器通過"最少連接"調度算法動態地將網絡請求調度到已建立的鏈接數最少的服務器上。如果集羣系統的真實服務器具有相近的系統性能,採用"最小連接"調度算法可以較好地均衡負載。

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

    * lblc   基於局部性的最少鏈接(Locality-Based Least Connections)
      "基於局部性的最少鏈接" 調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工作負載,則用"最少鏈接"的原則選出一個可用的服務器,將請求發送到該服務器。

    * lblcr   帶複製的基於局部性最少鏈接(Locality-Based Least Connections with Replication)
      " 帶複製的基於局部性最少鏈接"調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。它與LBLC算法的不同之處是它要維護從一個目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按"最小連接"原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器,若服務器超載;則按"最小連接"原則從這個集羣中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低複製的程度。

    * dh   目標地址散列(Destination Hashing)
      "目標地址散列"調度算法根據請求的目標IP地址,作爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。

    * sh   源地址散列(Source Hashing)
      "源地址散列"調度算法根據請求的源IP地址,作爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。 

 注:如果想了解關於以上幾點的技術細節,LVS的主頁查詢。LVS的主頁是:

  http://www.LinuxVirtualServer.org/
  http://www.linux-vs.org/

三、安裝ipvsadm服務
     1、 官網去下載安裝包http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz   
        ipvsadm 安裝:
          # tar zxvf ipvsadm-1.24.tar.gz -C /usr/src/
          # cd /usr/src/ipvsadm-1.24
          # make all
          # make install
          # ipvsadm --version 
      2、yum安裝(簡單且方便)
           #yum -y install ipvsadm
四、配置ipvsadm服務
      備註:以下步驟分別按照LVS的三種包轉發方式進行配置
     實驗環境如下:
     lvsserver            192.168.1.49(eht0)     vip: 192.168.1.40 8.8.8.8(nat模式下)
     serverA             192.168.1.46(eth0)
     serverB             192.168.1.47(eth0)
      
1、vs/nat模式下各服務器的配置
lvsserver配置如下:
ifconfig eht0 192.168.1.49 netmsk 255.255.255.0 
ifconfig eht1 8.8.8.8 netmask 255.255.255.0
(注:由於nat模式需要兩塊真實網卡,所以又額外加了一塊網卡  ,此網卡的IP地址同時也是VIP的地址)
vi ipvsadm.sh (創建腳本文件)
-------------------------------------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
echo 1 > /porc/sys/net/ipv4/ip_forward   (開啓路由功能)
ipvsadm -C      (清除之前的轉換表)
ipvsadm -At 8.8.8.8:80 -s rr   (指定帶有調度算法轉換的服務器)
ipvsadm -at 8.8.8.8:80 -r 192.168.1.46:80 -m  (增加一臺真實服務器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式)
ipvaadm -at 8.8.8.8:80 -r 192.168.1.47:80 -m

#chmod u+x ipvsadm.sh  (增加可執行權限)

------------------------------------------------------------------------------------------------------------------------------------------------------------------
serverA配置如下:
ifconfig eth0 192.168.1.46 netmask 255.255.255.0
route add default gw 192.168.1.49
(注:此網關是lvsserver的eth0的IP地址)
service httpd start    (開啓測試用的web服務)
echo '192.168.1.46' > /var/www/html/index.html     (製作測試用的html網頁)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
serverB配置如下:
ifconfig eth0 192.168.1.47 netmask 255.255.255.0
route add default gw 192.168.1.49
(注:此網關是lvsserver的eth0的IP地址)
service httpd start    (開啓測試用的web服務器
echo '192.168.1.47' > /var/www/html/index.html     (製作測試用的html網頁)


--------------------------------------------------------------------------------------------------------------------------------------------------------------------
2、vs/tun模式下各服務器的配置 
lvsserver配置如下:
ifconfig eht0 192.168.1.49 netmsk 255.255.255.0
(注:tun 模式下只需要一塊物理網卡,可將eth1網卡禁用)
ifconfig tunl0 192.168.1.40 netmask 255.255.255.255 up
(注:tunlo接口配置的地址爲vip地址)     
route add -host 192.168.1.40 dev tunlo    
vi ipvsadm.sh (創建腳本文件)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------         
#!/bin/bash
ipvsadm -C      (清除之前的轉換表)
ipvsadm -At 192.168.1.40:80 -s rr   (指定帶有調度算法轉換的服務器)
ipvsadm -at 192.168.1.40:80 -r 192.168.1.46:80 -i  (增加一臺真實服務器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式)
ipvaadm -at 192.168.1.40:80 -r 192.168.1.47:80 -i

#chmod u+x ipvsadm.sh  (增加可執行權限)    
#./ipvsadm.sh
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------                  
serverA配置如下:
ifconfig eth0 192.168.1.46 netmask 255.255.255.0
ifconfig tunl0 192.168.1.40 netmask 255.255.255.255 up  
route add -host 192.168.1.40 dev tunlo     
vi arp.sh (創建腳本文件)   

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
serverB配置同severA一樣
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
3、vs/dr模式下各服務器的配置 
lvsserver配置如下
ifconfig eth0 192.168.1.49 netmsk 255.255.255.0
(注:dr 模式下只需要一塊物理網卡,可將eth1網卡禁用)
ifconfig eth0:0 192.168.1.40 netmask 255.255.255.255 up
(注:eth0:0接口配置的地址爲vip地址)     
route add -host 192.168.1.40 dev eth0:0
vi ipvsadm.sh (創建腳本文件)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward   (開啓路由功能)
ipvsadm -C      (清除之前的轉換表)
ipvsadm -At 192.168.1.40:80 -s rr   (指定帶有調度算法轉換的服務器)
ipvsadm -at 192.168.1.40:80 -r 192.168.1.46:80 -g (增加一臺真實服務器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式)
ipvaadm -at 192.168.1.40:80 -r 192.168.1.47:80 -g

#chmod u+x ipvsadm.sh  (增加可執行權限) 
./ipvsadm.sh
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------  
serverA配置如下:
 ifconfig eth0 192.168.1.46 netmask 255.255.255.0
ifconfig lo:0 192.168.1.40 netmask 255.255.255.255 up  (在lo接口上增加vip地址)
 route add -host 192.168.1.40 dev lo:0 (增加到環回接口的路由)
 vi arp.sh (創建腳本文件)   

#!/bin/bash
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     
#chmod u+x arp.sh  (增加可執行權限) 
#./arp.sh 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------    
serverB配置和serverA一樣
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  測試:1、顯示LVS 目前的連接 
             如:ipvsadm -L -c    ipvsadm -L --stats   

          2、將46和47的WEB服務啓用。直接輸入vip的地址不停的刷新你將會看到不同頁面的切換 

本文來源:http://blog.chinaunix.net/uid-28417061-id-3761106.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章