注意:本文主要是對於LB中的lvs 做講解(centos6.5-x86_64系統)
一、集羣基本概念:
集羣是把一組相互獨立的、通過高速網絡互聯的計算機,把它們構成了一個組,並以單一系統的模式加以管理。一個客戶與集羣相互作用時,集羣像是一個獨立的服務器。集羣配置是用於提高可用性和可縮放性。
1.1.常見的服務器擴展方式:
Scale Up: 向上擴展 添加配置
Scale Out: 向外擴展 添加服務器
1.2.集羣分類
負載均衡集羣:Load Balancing Cluster,LB
高可用集羣:High Availiablity, HA
高性能集羣:High Perfomance: HP
高性能集羣一般常見於(並行處理系統:Hadoop)
1.3. LB:負載均衡
軟件:
tcp(內核空間): linux上的lvs
應用層(用戶空間):nginx, haproxy, apache, lighttpd, varnish, squid ...
硬件:BigIP(F5), Netscaler(Citrix), A10 ...
二、LVS(linux virtual server) linux虛擬服務器軟件
2.1.CIP<-->VIP<-->DIP<-->RIP
CIP 客戶端IP
VIP 外網訪問內部LB地址
DIP 集羣設備地址
RIP 內網服務器的IP地址
2.2.lvs類型
NAT、DR、TUN、FUllNAT
2.2.1.NAT
NAT: 實際場景中很少有企業使用NAT
1、RealServer應該使用私有IP地址;
2、RealServer的網關應該指向DIP;
3、RIP和DIP應該在同一個網段內;
4、進出的報文都得經過Directory,在高負載下,Directory會成爲系統性能瓶頸;
5、支持端口映射;
6、RealServer可以使用任意OS;
2.2.2.DR
DR: Direct Routing
1、RealServer可以使用私有地址;
2、RealServer的網關一定不能指向DIP;
3、RealServer和Director要在同一物理網絡內;DIP和RIP應該在同一網段;
4、入站報文經過Directory,出站則由RealServer直接響應Client;
5、不能做端口映射;
6、RealServer可以爲大多數常見OS;
2.2.3.TUN
TUN:Tunneling
1、RIP、DIP不能是私有地址;
2、RealServer的網關不能指向DIP;
3、入站報文經過Directory,出站則由RealServer直接響應Client;
4、不支持端口映射;
5、支持IP tunneling的OS才能用於RealServer;
2.2.4.FULLNAT
FULLNAT:在NAT基礎上做了目標地址與原地址轉換.
模型圖如下:
2.3.LVS調度方法
靜態(fixed method):
rr, wrr, sh, dh
rr:倫叫
wrr:加權輪叫
sh: Source Hashing 原地址哈希
dh: Destination Hashing 目標地址哈希 用於緩存
動態(Dynamic method):
lc, wlc, sed, nq, lblc, lblcr
lc: Least Connection 最小連接
算法:Overhead=Active*256+Inactive
wlc: Weighted Least Connection 加權最小連接
算法:Overhead=(Active*256+Inactive)/Weight
sed: Shortest Expect Delay 最少期望延遲
算法:Overhead=(Active+1)*256/Weight
nq: Never Queue 永不排隊
lblc: (dh+lc) Locality-based Least Connection 基於本地的最少連接
lblcr: Replicated and Locality-based Least Connection 基於本地的帶複製的最少連接
......