cluster
系統擴展的方式;
scale up:向上擴展
scale out;向外擴展
集羣類型;
LB:負載均衡集羣。load banlancing
HA:高可用集羣。high availability
HP:高性能集羣。high performancing
系統運維:可用--> 標準化-->自動化
構建高可擴展性系統的重要原則;在系統內部儘量避免串行化;
LB集羣的實現;
硬件:
F5 BIG-IP
Citrix NetScaler
A10
Array
Red
Redware
軟件:
lvs
haproxy
nginx
ats(apach traffic server)
perlbal
傳輸層:LVS,HAPROXY(MODE TCP)
應用層:haproxy,nginx,ats,perlbal
lvs:
章文嵩
lvs:linux virtual server
L4:四層交換,四層路由;
根據請求報文的目標ip和port將其轉發至後端主機集羣中的某一臺主機(根據算法);
lvs:ipvsadm/ipvs
ipvsadm:用戶空間的命令行工具,用於管理集羣服務
ipvs:工作內核中netfilter INPUT上;
grep -i -A 10 'IPVS' /boot/config-3.10.0-229.el7.x86_64
支持TCP,UDP,AH,EST,AH_EST,SCTP等協議
lvs arch:
調度器,director,dispatcher,balancer
RS:real server
cip
vip
dip
lvs type
lvs-nat
lvs-dr(direct routing)
lvs-tun(ip tuueling)
lvs-fullnat
lvs-nat
1.RS和DIP應該使用私網地址,且RS的網關要指向DIP;
2.請求和響應報文都要經由director轉發,極高負載的場景中,director會成爲瓶頸;
3.支持端口映射;
4.RS可以使用任意OS
5.RS的RIP和director的DIP必須在同一個網絡;
lvs-dr:direct routing
通過修改請求報文的目標MAC地址進行轉發;
director:VIP,DIP
RS:RIP,VIP
1.保證前段路由器將目標IP爲VIP的請求報文發送給director
解決辦法;靜態綁定
arptalbes
修改RS主機內核的參數
2.RS的RIP可以使用私有地址,也可以使用公網地址;
3.RS和director必須在同一個物理網絡中
4.請求報文經由Director調度,但響應報文一定不能經由director
5.不支持端口映射
6.RS可以大多數OS
7.RS的網關不能指向DIP
lvs-tun
1.RIP,DIP,VIP全是公網地址
2.RS的網關不能指向DIP
3.請求報文必須經由director,響應的必須不經過director
4.不支持端口映射
5.RS的OS必須支持隧道功能
lvs-fullnat;
director通過同時修改請求報文的目標地址和源地址進行轉發
1.VIP是公網地址:RIP和DIP是私網地址,二者無須在同一網絡中;
2.RS接收到的請求報文的源地址爲DIP,因此要響應給DIP
3.請求報文和響應報文都必須經由director
4.支持端口映射;
5.RS可以使用任意OS
session保持;
session綁定;
source ip hash
cookie
session集羣;rs之間複製session信息。
session服務器;單獨的session服務器。
lvs scheduler:調度算法
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
靜態方法:僅根據算法本身進行調度;
RR:round robin,輪調
WRR:weighted rr,加權輪調
SH:source hash,實現session保持的機制,來自同一個ip的請求調度到同一個RS
DH:destination hash,將對同一個目標的請求始終發往同一個RS
動態方法;根據算法及各RS的當前負載狀態進行調度;
LC:least connect
overhead=active*256+inactive
WLC:weighted LC
overhead=(active*256+inactive)/weight
SED:shortest expection delay 最短期望延遲
overhead=(active+1)*256/weight
NQ:never queue 永不排隊
SED算法的改進。
LBLC:locality-Based LC ,動態的DH算法
正向代理情形下的cache server
LBLCR:locality-based least-connection with replication,帶複製功能的LBLC算法;