lvs的nat模型實現負載均衡

lvsnat模式實現負載均衡的方法

一、LVS的簡介
LVS : Linux Virtual Server 也就是Linux 虛擬服務器。
LVS是一臺主機,是將數據轉發給其他的真正的服務器主機的。LVS的應用只需要裝在調度節點上,它的工作原理基本類似於DNAT。其實虛擬服務器可以看做是一個四層交換。通過套接字來完成的轉發。
LVS的特點:高吞吐能力、高併發能力,冗餘能力,適用性。

二、在LVS中的命名機制:



CIP : 客戶端的IP 
VIP :(Virtual IP)虛擬地址,外網用戶看到的那個地址。 
DIP :(Director’s IP)用於轉發請求的轉發器上的那個地址,一般是跟RIP相連的。
RIP :(Real IP)後端真正提供節點的那些些IP地址
三、LVS有三種工作類型:
1Network address translation (LVS-NAT)網絡地址轉換


工件特徵:
   1、所有的集羣結點要在同一個網絡中
   2RIP是私有的,僅用於集羣結點間的通信
   3Director 要處理入站和出站
   4V_sever 的網關要指向DIP
   5、可以實現端口映射
   6R-serverk 可以是任意操作系統

   7direct 很易成爲系統瓶頸

2Direct routing LVS-DR)直接路由 簡稱爲 DR



用戶的請求經過Director,服務器的響應由服務器直接返回給用戶
工作特點:
   1、集羣結點Real-serverDirectorip在同一個物理網絡,因爲轉發是基於MAC地址的
   2RIP可以使用公網地址
 這樣有個好處就是當Director不能工作時,用戶可以通過IP地址訪問服務器
   3director 僅處理入站請求 
   4R-server 的網關一定不要指向director,出站請求不經過director
   5、不支持端口映射
   6、大多數操作系統都可以用於 R_SERVER 能配置多個IP地址並要支持隔離ARP廣播
   7DR當中 directot的性能比遠遠優於DNAT
3IP tunneling (LVS-TUN) ip遂道



DR模型相似,不同的是,DirectorRealserverip可以不在同一個網絡中
   1R-serverdirector
   2rip一定不是私有地址

   3director 僅處理入站請求,不支持端口映射

   4、僅有具有隧道功能的操作系統才能用於R-server

四、LVS 調度方法 Scheduling Methods

可分爲兩大類:靜態調度、動態調度
靜態調度有四種:
 1Round-Round 輪詢 簡寫爲RR
 2Weight Round-Round 加權輪詢 簡寫爲 WRR
 3Destination hashing 簡寫爲 DH 目標地址hash 用於緩存服務器
  4Source hashing SH 源地址hash 也是用於緩存服務器
動態調度有六種:
 1Least-connection(LC) 最少連接
檢測服務器上的最少活動的連接數,同時也要檢測活動和非活動連接數用下面的的方法計算,誰的overhead小,誰就接受下次的連接請求。這種方式不能區分服務器的響應能力。
計算方法:RS:active*256+inactive=overhead
把請求發給overhead值小的那個
 2、 Weight Least-connetion(WLC) 加權最少連接 
基於LC在每個服務器上加上權重。計算方法:
RS:(active*256+inactive)/weight=overhead
在這些算法中WLC算法可以說是最公平的算法了。
 3SED Shortest Expected Delay對於WLC的改進
最短期望延遲,這種算法是對WLC的一種改進,不考慮非活動連接數,並且將正處於活動狀態的值加1。加1的主要目的,是儘可能的把權重大的服務器儘可能的利用起來。這種機制如果在權重比值比較大情況下會使權重下的服務器的處在空閒狀態。
計算方法:RS: (active+1)*256/weight=overhead
4Nerver Queue (NQ)永不排隊。基於SED基礎的算法,將權重低的空閒服務器分配進一個請求。
5LBLC:DH Locality-Based Least-Connection 基於本地的最少連接。LBLC是從WLC的基礎上做出來的,支持權重。它跟DH算法幾乎相同,不過DH是靜態的,而LBLC是動態的。這種改進並不明顯
6LBLCR 帶複製的基於本地的最少連接。是對LBLC的一種改進,能在LBLC的基礎上對負載均衡機制實現真正的負載均衡。

五、 實現 LVS的方法:ipvs

LVS的機制與Iptables有些類似,有一段是專門定義在用戶空間,命令叫ipvsadm,而工作在內核空間中的代碼叫ipvs2.4內核之後,ipvsadm已經被做進內核中,只需要將相應的功能開啓即可。而我們就是通過用戶空間中的ipvsadm定義一些規則來實現對內核中ipvs的控制的。
ipvsadm 命令選項以及運用
ipvsadm
-A 定義一個新的集羣服務
-E 修改或者編輯已存在的集羣服務
-D 刪除一個集羣服務 
-a 添加
-e 編輯
-C 清空
-R == -restore
-S == -safe
-L|l 列出所有的相關ipvsadm規則
-Z :清空計數器
--stats 輸出統計信息,與-L一起用
--rate 也與-L一起用
-n 以數字形式輸出
定義一個集羣服務的完整語法:
ipvsadmin -A|E -t|u|f VIP:port -s 調度算法[默認WLC]
-t : tcp的服務器
-uudp的服務
-f:基於防火牆的服務
-s:指定調度算法
定義Realserver
ipvsadm -a|e -t|u VIP:port -r REALSERVER[:port] [-g|i|m] [-w weight]
ipvsadm -d -t|u VIP:port -r REALSERVER

六、一個實現lvs nat的案例

1、在director分發裝置上要做的(基本的網卡配置略)

[root@localhost ~]# uname -r (查看內核)

2.6.18-164.el5

[root@localhost ~]# grep -i ip_vs /boot/config-2.6.18-164.el5 (過濾內核文件中是否支持ipvsadm

[root@localhost ~]# vim /etc/sysctl.conf 

net.ipv4.ip_forward = 1 (在director上要)

[root@localhost ~]# sysctl -p(立即生效)

[root@localhost ~]# ipvsadm -A -t 192.168.145.100:80 -s rr(添加規則調度算法)

[root@localhost ~]# ipvsadm -a -t 192.168.145.100:80 -r 192.168.2.100 -m (指定要分發的real服務器)

[root@localhost ~]# ipvsadm -a -t 192.168.145.100:80 -r 192.168.2.200 -m

[root@localhost ~]# ipvsadm -ln (查看匹配的規則)

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.145.100:80 rr

  -> 192.168.2.200:80             Masq    1      0          0         

  -> 192.168.2.100:80             Masq    1      0          0      

2.其他兩臺real服務器做基本的配置就行了(需要配置網卡,安裝apache,實現web的發佈)

最重要的一點是:兩臺real服務器必須指定網關,指向連接服務器的那個director上的網卡,使返回時有路由。

這樣就行了。

3、實現加強的輪詢調度

[root@localhost Server]# ipvsadm -E -t 192.168.145.100:80 -s wrr (-E編輯原來的)

[root@localhost Server]# ipvsadm -e -t 192.168.145.100:80 -r 192.168.2.100 -m -w 4

[root@localhost Server]# ipvsadm -e -t 192.168.145.100:80 -r 192.168.2.200 -m -w 2

[root@localhost Server]# ipvsadm -ln

可以看到2.100的連接是2.200的二倍,實現了加強的輪詢。

 

 

 

做後的疑問:realserver服務器,在做lvs-nat模式時(rr)本來是可以用不同的操作系統實現,但在做的過程中如何用一臺windows 2003 server ,另一臺用linux,實現的效果是當開始訪問的是linuxweb服務,刷新後變成windows 的網頁,但以後再刷新一直是windows的網頁,如果等一段時間在刷新變成了linux的網頁,在刷新變成了windows,在刷還是變不過來,不知道是爲什麼,用兩臺linux正常。在查看ipvsadm規則表時,本來對於http訪問時無連接訪問,但windows顯得是處在連接中,不是inactive

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