1. 程式人生 > >基於LVS的負載均衡實現之NAT

基於LVS的負載均衡實現之NAT

ftp服務器 replicat 會話 集群 負載均衡技術 方式 conn 需要 執行

一 什麽是負載均衡

負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。

二 什麽是LVS

LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統。本項目在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。LVS是負載均衡最著名的實現之一。

三 LVS基本工作原理

技術分享

LVS集群采用IP負載均衡技術和基於內容請求分發技術。調度器具有很好的吞吐率,將請求均衡地轉移到不同的服務器上執行,且調度器自動屏蔽掉服務器的故障,從而將一組服務器構成一個高性能的、高可用的虛擬服務器。整個服務器集群的結構對客戶是透明的,而且無需修改客戶端和服務器端的程序。為此,在設計時需要考慮系統的透明性、可伸縮性、高可用性和易管理性。

1. 當用戶向負載均衡調度器(Director Server)發起請求,調度器將請求發往至內核空間
2. PREROUTING鏈首先會接收到用戶請求,判斷目標IP確定是本機IP,將數據包發往INPUT鏈
3. IPVS是工作在INPUT鏈上的,當用戶請求到達INPUT時,IPVS會將用戶請求和自己已定義好的集群服務進行比對,如果用戶請求的就是定義的集群服務,那麽此時IPVS會強行修改數據包裏的目標IP地址及端口,並將新的數據包發往POSTROUTING鏈
4. POSTROUTING鏈接收數據包後發現目標IP地址剛好是自己的後端服務器,那麽此時通過選路,將數據包最終發送給後端的服務器

四 LVS的組成部分

1. ipvs(ip virtual server):一段代碼工作在內核空間,叫ipvs,是真正生效實現調度的代碼。
2. ipvsadm:另外一段是工作在用戶空間,叫ipvsadm,負責為ipvs內核框架編寫規則,定義誰是集群服務,而誰是後端真實的服務器(Real Server)

五 IPVS的調度算法

ipvs scheduler:
根據其調度時是否考慮各RS當前的負載狀態,可分為靜態方法和動態方法兩種:
靜態方法:僅根據算法本身進行調度
RR:roundrobin,輪詢
WRR:Weighted RR,加權輪詢
SH:Source Hashing,實現session sticy,源IP地址hash;將來自於同一個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定
DH:Destination Hashing;目標地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡
動態方法:主要根據每個RS當前的負載狀態及調度算法進行調度
Overhead=
LC:least connections
Overhead=activeconns*256+inactiveconns
WLC:Weighted LC
Overhead=(activeconns*256+inactiveconns)/weight
SED:Shortest Expection Delay
Overhead=(activeconns+1)*256/weight
NQ:Never Queue
LBLC:Locality-Based LC,動態的DH算法;
LBLCR:LBLC with Replication,帶復制功能的LBLC

六 LVS相關術語

1. DS:Director Server。指的是前端負載均衡器節點。
2. RS:Real Server。後端真實的工作服務器。
3. VIP:向外部直接面向用戶請求,作為用戶請求的目標的IP地址。
4. DIP:Director Server IP,主要用於和內部主機通訊的IP地址。
5. RIP:Real Server IP,後端服務器的IP地址。
6. CIP:Client IP,訪問客戶端的IP地址。

LVS有四種類型的集群方式:
lvs-nat:修改請求報文的目標IP;多目標IP的DNAT
lvs-dr:操縱封裝新的MAC地址
lvs-tun:在原請求IP報文之外新加一個IP首部
lvs-fullnat:修改請求報文的源和目標IP

本文著重介紹lvs-nat方式的實現。同時搭建兩臺後端lamp服務器,以期實現負載均衡。

七 LVS-NAT原理和特點

技術分享

多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和PORT實現轉發

1. RIP和DIP必須在同一個IP網絡,且應該使用私網地址;RS的網關要指向DIP
2. 請求報文和響應報文都必須經由Director轉發;Director易於成為系統瓶頸
3. 支持端口映射,可修改請求報文的目標PORT
4. vs必須是Linux系統,rs可以是任意系統

八 後端服務器Real Server的LAMP簡單實現

# yum install -y httpd mysql-server php
# echo "RS1:192.168.86.135" > /var/www/html/index.html
# echo "RS2:192.168.86.136" > /var/www/html/index.html

九 實踐LVS-NAT類型

1.實驗環境
三臺服務器,一臺作為director,兩臺作為real server,director有一個外網網卡(172.18.67.11) 和一個內網ip(192.168.86.254),兩個real server上只有內網 ip (192.168.86.135)和(192.168.86.136),並且需要把兩個real server的內網網關設置為director的內網ip(192.168.86.254)


2.安裝和配置
Director上安裝ipvsadm並且配置規則

# yum install -y ipvsadm
# ipvsadm -A -t 172.18.67.11:80 -s rr
# ipvsadm -a -t 172.18.67.11 -r 192.168.86.135:80 -m -w 1
# ipvsadm -a -t 172.18.67.11 -r 192.168.86.136:80 -m -w 1


3.查看ipvsadm設置的規則

# ipvsadm -Ln


4.測試lvs的效果
另找一臺客戶端訪問

# curl http://172.18.67.11
RS1:192.168.86.135
# curl http://172.18.67.11
RS2:192.168.86.136

基於LVS的負載均衡實現之NAT