lvs基礎知識

來源:互聯網
上載者:User

標籤:

一、LVS概述
LVS是Linux Virtual Server的簡稱,也叫Linux虛擬伺服器,是一個由章文嵩教授主持開展的開源項目,官方網站為www.linuxvirtualserver.org。現在LVS已經是Linux核心的一部分,不需要編譯核心。但在Linux2.4之前,要使用LVS需要將ipvs編譯進核心才能使用。
LVS提供的負載平衡技術和Linux作業系統實現了一個高效能的伺服器叢集,有良好的擴充性、可靠性和可操作性,極大地減輕了後台伺服器的壓力。
LVS只要由三個部分組成:調度器、後台伺服器集區、共用資料庫
負載平衡調度器:主要負責將請求分發到背景伺服器上。
後台伺服器集區(RealServer):用於向客戶提供需要的服務,例如WWW服務、Cache服務、DNS服務、FTP服務、MAIL服務、視頻/音頻點播服務等等。
共用資料庫:提供資料存放區
二、LVS支援的四種模型
原生的LVS支援NAT,DR,TUN三種,但是近幾年又出現了FULL-NAT模型,對NAT模型進一步改善。
NAT:地址轉換
DR:直接路由模式
TUN:隧道模式
FULL-NAT:完全地址轉換

NAT模型:



NAT模型是在入站時做了一次DNAT將請求轉寄至後台主機,出站時做了一次SNAT,該方式主要用於結合F5防DDOS攻擊。
DR模型:


DR的效能是所有模式中最高的,它只需要修改目的MAC;但部署上必須要求LVS和後端伺服器在同一個VLAN中。
TUN模型:

TUN是在原來IP頭部再新增封裝一個IP。進來時通過調度器,出去時直接返回用戶端。
FULLNAT模型:


FULLNAT是在NAT模式上做了一次改進,加入了一個內網IP(lip)。cip-vip轉換為lip->rip,而 lip和rip均為IDC內網ip,可以跨vlan通訊。

NAT:
① director與叢集節點必須在同一個IP網路中;
② RIP通常是私人地址,僅用於各叢集節點通訊;
③ director位於client與real server之間,並負責處理進出的所有通訊;
④ real server必須將網關指向DIP;
⑤ 支援連接埠映射;
⑥ real server可使用任意作業系統;
⑦ 大規模應用中director可能易成為系統瓶頸。

DR:
① 叢集節點必須和director在同一個物理網路中;
② RIP可以使用公網地址,實現便捷的遠端管理和監控;
③ director僅負責處理入站請求,響應報文則由realserver直接發往用戶端;
④ realserver不能將網關指向DIP;
⑤ 不支援連接埠映射;

TUN:
① 叢集節點可以跨越互連網;
② RIP必須是公網地址;
③ director僅負責處理入站請求,響應報文則由realserver直接發往用戶端;
④ realserver網關不能指向director;
⑤ 只有支援隧道功能的os才能用於realserver;
⑥ 不支援連接埠映射。

FULLNAT:
① director與叢集節點可以跨VLAN通訊;
② director位於client與real server之間,並負責處理進出的所有通訊;
③ 通過在TCP Option中加入cip,將cip傳給realserver
三、LVS支援的十種調度演算法
調度演算法分為靜態和動態:
靜態:固定不變的轉寄請求,僅僅依據演算法本身。
rr:輪叫,輪詢,依次輪流的向後台主機轉寄請求。
wrr:加權輪詢,根據每台主機的權重依次輪流 。
sh:source hashing,源地址散列。主要實現會話綁定,能夠將此前建立的session資訊保留了,將源IP作為散列鍵
dh:destination hashing:目標地址散列。把同一個IP地址的請求,發送給同一個RealServer,將目標IP作為散列鍵

動態:依據後台伺服器的狀態動態轉寄請求
lc:最少串連
active*256+inactive挑小的
wlc:加權最少串連
(active*256+inactive)/weight挑小的
sed:最短期望延遲
(active+1*256)/weight
nq:never queue永不排隊(改進的sed)無需隊列,如果有台realserver的串連數=0就直接分配過去,不需要在進行sed運算。
LBLC:基於本地的最少串連
基於局部性的最少串連調度演算法根據請求的目標IP地址找出該目標IP地址最近使用的RealServer,若該Real Server是可用的且沒有超載,將請求發送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處於一半的工作負載,則用“最少連結”的原則選出一個可用的伺服器,將請求發送到該伺服器
LBLCR:帶複製的基於本地的最少串連
帶複製的基於局部性最少連結調度演算法也是針對目標IP地址的負載平衡,該演算法根據請求的目標IP地址找出該目標IP地址對應的伺服器組,按“最小串連”原則從伺服器組中選出一台伺服器,若伺服器沒有超載,將請求發送到該伺服器;若伺服器超載,則按“最小串連”原則從這個叢集中選出一台伺服器,將該伺服器加入到伺服器組中,將請求發送到該伺服器。同時,當該伺服器組有一段時間沒有被修改,將最忙的伺服器從伺服器組中刪除,以降低複製的程度。

四、LVS的相關配置
LVS的配置主要分為兩部分:
ipvs:核心模組,只對定義為叢集的服務進行轉寄
ipvsadm:使用者空間管理叢集服務的命令列工具
ipvsadm
管理叢集服務
添加: -A -t|u|f service-address [-s schedule] -p timeout
-t:TCP協議的叢集
-u:UDP協議的叢集
service-address: IP:PORT #連接埠映射
-f:防火牆標記
service-address:Mark Number
-p timeout:持久串連。這個選項的意思是來自同一個客戶的多次請求,將被同一台真實的伺服器處理。timeout 的預設值為300 秒。
修改:-E -t|u|f service-address [-s schedule]

刪除:-D -t|u|f service-address

#ipvsadm -A -t 172.16.100.2:80 -s rr

管理叢集服務中的RS
添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-t|u|f service-address 實現定義好的叢集服務
-r service-address:某RS的地址,在NAT模型中,可以使用IP:PORT連接埠映射
[g|i|m]
g:DR
i:TUN
m:NAT
[w weight]:定義權重
修改:-e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
刪除:-d -t|u|f service-address -r server-address
#ipvsadm -a -t 172.168.100.2:80 -r 192.168.193.1 -m
#ipvsadm -a -t 172.168.100.2:80 -r 192.168.193.2 -m

查看
-L|l
-n:數字格式顯示主機地址和連接埠
--stats:統計資料
--timeout:顯示tcp、tcpfin和udp的會話逾時時間長度
-c:顯示當前的ipvs串連狀況

刪除所有叢集服務:
-C:清空ipvs規則

儲存ipvs規則
-S
#ipvsadm -S > /path/to/somefile

匯入此前的規則
-R
#ipvsadm -R < /path/from/somefile

lvs基礎知識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.