LVS
一、集羣
- 一組相互獨立的,通過高速網絡互聯的計算機構成的一個組,並以單一系統的模式加以管理
- 將很多服務器集中起來一起進行同一種服務,在C端看來就像是隻有一個服務器
- 可以在較低成本的情況下獲得在
性能、可靠、靈活性
方面相對較高的收益 - 任務調度則是集羣系統中的核心技術
二、集羣分類 - 高性能計算集羣(HPC)
- 高可用集羣(HA)
- 負載均衡集羣(LB)
三、LVS集羣組成 - 前端:負載均衡層
-- 由一臺或多臺負載均衡調度器構成 - 中端:服務器羣組層
--由一組實際運行應用服務的服務器組成 - 後端:數據共享存儲層
-- 提供共享存儲空間的存儲區域
四、LVS術語 - Director Server:調度器,將負載分發到Real Server 的服務器
- Real Server:真實服務器,真正提供應用服務的服務器
- VIP:虛擬IP地址,公佈給Client訪問的IP地址
- RIP:真實IP地址,集羣節點使用的IP地址
- DIP:Director連接到Real Server 的IP地址
五、LVS負載均衡方式 - VS/NAT:通過網絡地址轉換實現的虛擬服務器
--Director 將用戶請求報文的目的地址改變成選的的Real Server地址後,將請求轉發給Real Server
--大併發訪問時,調度器性能成爲瓶頸 - VS/DR:直接使用路由技術實現虛擬服務器
--通過改寫請求報文的的MAC地址,將請求發至Real Server,Real Server直接響應給客戶端 - VS/TUN:通過隧道方式實現虛擬服務器
--Director採用隧道技術將請求發至Real Server後,Real Server 直接響應客戶端
六:負載均衡調度算法 - Director Server根據各臺服務器的負載情況,通過高度算法動態選擇一臺Real Server
- LVS目前實現了10種調度算法
- 常用調度算法有4種
--輪詢(Round Robin)
--加權輪詢(Weighted Round Robin)
--最少連接(Least Connections)
--加權最少連接(Weighted Least Connections) - 輪詢(rr)
--將用戶的請求平均的分配到Real Server - 加權輪詢(wrr)
--根據真實服務器的性能設置權重,再進行輪詢調度 - 最少連接(lc)
--動態的將請求分發到已建立的連接數最少的服務器上 - 加權最少連接(wlc)
--根據真實服務器的性能設置權重,再將網絡請求調度到以建立連接的最少服務器上 - 基於局部性的最少連接(lblc)
--根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工作負載,則用“最少鏈接” 的原則選出一個可用的服務器,將請求發送到該服務器 - 帶複製的基於局部性最少鏈接(Locality-Based Least Connections with Replication)
--維護從一個目標IP地址到一臺服務器的映射根據請求的目標IP地址找出該目標IP地址對應的服務器組,按“最小連接”原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按“最小連接”原則從這個集羣中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器
當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低複製的程度。 - 目標地址散列(Source Hashing)
--根據請求的源IP地址,作爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空 - 目標地址散列(Destination Hashing)
--根據請求的目標IP地址,作爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空 - 最短的期望的延遲(Shortest Expected Delay Scheduling SED)
--基於WLC算法,A、B、C三臺機器分別權重1、2、3 ,連接數也分別是1、2、3如果使用WLC算法的話一個新請求進入時它可能會分給ABC中的任意一個,使用sed算法後會進行這樣一個運算:A(1+1)/1,B(1+2)/2,C(1+3)/3,根據運算結果,把連接交給C -
最少隊列調度(Never Queue Scheduling NQ)
如果有臺Real Server的連接數爲0就直接分配過去,無需SED運算
七:LVS-NAT實現方式- 拓撲
-
配置 DIP 和RIP在一個網段 真實服務器網關指向DIP
ipvsadm
-A 添加虛擬服務器
-t 設置集羣地址
-s 指定調度算法ipvsadm -A -t 192.168.4.100:80 -s rr
-a 添加真實服務器
-d 刪出真實服務器
-r 指定真實服務器地址
-m 使用NAT 模式 -g DR模式 -i TUN模式
-w 爲節點服務器設置權重,默認1ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.1:80 -m
ipvsadm -d -r 192.168.4.1:80 -t 192.168.4.100:80
ipvsadm -Ln 查看lvs信息
ipvsadm -C 清空所有規則
環境4臺主機 1client 1director 2real server
客戶端ip 201.1.1.200
VIP 201.1.1.100
DIP 192.168.4.100
RIP 192.168.4.11/12
(1)director 開啓路由轉發echo "net.ipv4.ip_forward = 1" >> /etcsysctl.conf
sysctl -p 文件生效 查看 /proc/sys/net/ipv4/ip_forward 文件內容爲1yum -y install ipvsadm<br/>ipvsadm -A -t 192.168.4.100:80 -s rr<br/>ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.11:80 -m <br/>ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.12:80 -m
(2)真實服務器
配置ip,httpd 編寫測試頁面
保存配置:ipvsadm-save -n >>/etc/sysconfig/ipvsadm #重定向到配置文件 或 sevice ipvsadm save
(3)客戶端訪問201.1.1.100 就可以訪問到real server
(4) 修改算法
ipvsadm -E -t 192.168.4.100:80 -s wrr
八、LVS-DR DIP 必須設置在虛擬接口上
拓撲real配置
vim /etc/sysctl.conf<br/>net.ipv4.conf.all.arp_announce = 2<br/>net.ipv4.conf.lo.arp_announce = 2<br/>net.ipv4.conf.all.arp_ignore = 1<br/>net.ipv4.conf.lo.arp_ignore = 1
cd /etc/sysconfig/network-scripts/
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=202.1.1.200
NETMASK=255.255.255.255
BROADCAST=202.1.1.200
ONBOOT=yes
- 拓撲
內核參數說明
•arp_announce
–0 (默認):在任意網絡接口上的任何本地地址
–1:儘量避免不在該網絡接口子網段的本地地址做出arp迴應。當發起ARP請求的源IP地址是被設置應該經由路由達到此網絡接口的時候很有用。此時會檢查來訪IP是否爲所有接口上的子網段內ip之一。如果改來訪IP不屬於各個網絡接口上的子網段內,那麼將採用級別2的方式來進行處理
–2:對查詢目標使用最適當的本地地址。在此模式下將忽略這個IP數據包的源地址並嘗試選擇與能與該地址通信的本地地址。首要是選擇所有的網絡接口的子網中外出訪問子網中包含該目標IP地址的本地地址。如果沒有合適的地址被發現,將選擇當前的發送網絡接口或其他的有可能接受到該ARP迴應的網絡接口來進行發送
•arp_ignore
–0(默認值):迴應任何網絡接口上對任何本地IP地址的arp查詢請求
–1:只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求
–2:只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,且來訪IP必須在該網絡接口的子網段內
–3:不迴應該網絡接口的arp請求,而只對設置的唯一和連接地址做出迴應
–4-7:保留未使用
–8:不迴應所有(本地地址)的arp查詢
director 配置
cd /etc/sysconfig/network-scripts/
vim ifcfg-eth0:0
DEVICE=eth0:0
HWADDR=00:0C:29:B6:5E:A4
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=202.1.1.200
PREFIX=24ipvsadm -A -t 202.1.1.200:80 -s wlc<br/>ipvsadm -a -t 202.1.1.200:80 -r 202.1.1.10 -g -w 1<br/>ipvsadm -a -t 202.1.1.200:80 -r 202.1.1.20 -g -w 2<br/>
客戶端訪問
九、編寫腳本,監控real server是否出現故障,如果出現故障將其移除,如果故障恢復,再將它加入到LVS中