一、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有三種工作類型:
1、Network address translation (LVS-NAT)網絡位址轉換
工件特征:
1、所有的叢集結點要在同一個網絡中
2、RIP是私有的,僅用于叢集結點間的通信
3、Director 要處理入站和出站
4、V_sever 的網關要指向DIP
5、可以實作端口映射
6、R-serverk 可以是任意作業系統
7、direct 很易成為系統瓶頸
2、Direct routing (LVS-DR)直接路由 簡稱為 DR
使用者的請求經過Director,伺服器的響應由伺服器直接傳回給使用者
工作特點:
1、叢集結點Real-server和Director的ip在同一個實體網絡,因為轉發是基于MAC位址的
2、RIP可以使用公網位址
這樣有個好處就是當Director不能工作時,使用者可以通過IP位址通路伺服器
3、director 僅處理入站請求
4、R-server 的網關一定不要指向director,出站請求不經過director
5、不支援端口映射
6、大多數作業系統都可以用于 R_SERVER 能配置多個IP位址并要支援隔離ARP廣播
7、DR當中 directot的性能比遠遠優于DNAT
3、IP tunneling (LVS-TUN) ip遂道
與DR模型相似,不同的是,Director與Realserver的ip可以不在同一個網絡中
1、R-server與director
2、rip一定不是私有位址
3、director 僅處理入站請求,不支援端口映射
4、僅有具有隧道功能的作業系統才能用于R-server
四、LVS 排程方法 Scheduling Methods
可分為兩大類:靜态排程、動态排程
靜态排程有四種:
1、Round-Round 輪詢 簡寫為RR
2、Weight Round-Round 權重輪詢 簡寫為 WRR
3、Destination hashing 簡寫為 DH 目标位址hash 用于緩存伺服器
4、Source hashing SH 源位址hash 也是用于緩存伺服器
動态排程有六種:
1、Least-connection(LC) 最少連接配接
檢測伺服器上的最少活動的連接配接數,同時也要檢測活動和非活動連接配接數用下面的的方法計算,誰的overhead小,誰就接受下次的連接配接請求。這種方式不能區分伺服器的響應能力。
計算方法:RS:active*256+inactive=overhead
把請求發給overhead值小的那個
2、 Weight Least-connetion(WLC) 權重最少連接配接
基于LC在每個伺服器上加上權重。計算方法:
RS:(active*256+inactive)/weight=overhead
在這些算法中WLC算法可以說是最公平的算法了。
3、SED Shortest Expected Delay對于WLC的改進
最短期望延遲,這種算法是對WLC的一種改進,不考慮非活動連接配接數,并且将正處于活動狀态的值加1。加1的主要目的,是盡可能的把權重大的伺服器盡可能的利用起來。這種機制如果在權重比值比較大情況下會使權重下的伺服器的處在空閑狀态。
計算方法:RS: (active+1)*256/weight=overhead
4、Nerver Queue (NQ)永不排隊。基于SED基礎的算法,将權重低的空閑伺服器配置設定進一個請求。
5、LBLC:DH Locality-Based Least-Connection 基于本地的最少連接配接。LBLC是從WLC的基礎上做出來的,支援權重。它跟DH算法幾乎相同,不過DH是靜态的,而LBLC是動态的。這種改進并不明顯
6、LBLCR 帶複制的基于本地的最少連接配接。是對LBLC的一種改進,能在LBLC的基礎上對負載均衡機制實作真正的負載均衡。
五、 實作 LVS的方法:ipvs
LVS的機制與Iptables有些類似,有一段是專門定義在使用者空間,指令叫ipvsadm,而工作在核心空間中的代碼叫ipvs,2.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的伺服器
-u:udp的服務
-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
說明:在這裡運用三台虛拟機,一台用作Director,别外兩台用于web伺服器,分别是web1和web2。
配置前的ip規化:
對于Director:
安裝兩個網卡:eth0、eth1。eth0用于橋接,eth1工作在僅主機。ip分别為:
eth0 :172.16.35.2/24
eth1 :192.168.35.10/24
對于web伺服器,分别有一個網卡,并都工作于僅主機模式。ip位址為:
web1:192.168.35.100/24
web2:192.168.35.101/24
在這裡還要開啟Director伺服器上的ip位址的轉發功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
下面來配置ipvsadm
在配置之前要安裝ipsadm。是以要配置好yum源。
要在Director伺服器上安裝ipvsadm.
用指令:
# yum install ipvsadm
來直接安裝。
安裝完成後就在Director 配置ipvsadm規則。
ipvsadm -A -t 172.16.35.2:80 -s rr(也可以是其他的排程方法)
ipvsadm -a -t 172.16.35.2:80 -r 192.168.35.100 -m
ipvsadm -a -t 172.16.35.2:80 -r 192.168.35.101 -m
好了。這樣一個基于LVS的NAT模型就配置完成了。
可以用指令:
ipvsadm -E -t 172.16.35.2:80 -s s後面要加上所要用的排程方法來驗證。如果要加上權重可以在
ipvsadm -Z 要先清空一下
ipvsadm -a -t 172.16.35.2:80 -r 192.168.35.100 -m -w 8(相對于web2的倍數)
下面在浏覽器中輸入:http://172.16.35.2 就可以測試了,是否能正常的在web1和web2上運用不同的排程方式。
本文轉自 ZhouLS 51CTO部落格,原文連結:http://blog.51cto.com/zhou123/832730