Linux Cluster:
Cluster:計算機集合,為解決某個特定問題組合起來形成的單個系統;
Linux Cluster類型:
-
LB:Load Balancing,負載均衡;主機來平均訪問的壓力。由負載均衡器和多個后端主機分擔主。
-
HA:High Availiablity,高可用,靠冗余節點實現;提高服務的可用性,有多個負載均衡器(和備份)來接收來自用戶的請求
A(可用性)=MTBF(平均無故障時間)/(MTBF+MTTR(故障修復時間))
(0,1):90%, 95%, 99%, 99.5%, 99.9%, 99.99%, 99.999%
-
HP:High Performance,高性能;提升系統性能的!分布式系統解決方案的初期。解決計算難題。
www.top500.org
系統擴展方式:
Scale UP:向上擴展,指的是計算機性能跟不上了以后就換個性能更好的 Scale Out:向外擴展 Cluster
負載均衡集群
負載均衡器(調度器)用來接收來自用戶的請求并按調度的算法發送到后端主機分擔處理的計算機。這些主機的集合就叫做負載均衡集群
LB Cluster 負載均衡集群:
LB Cluster的實現:
硬件:
F5 Big-IP Citrix Netscaler A10 A10
軟件:
lvs:Linux Virtual Server nginx haproxy ats:apache traffic server perlbal pound
基于工作的協議層次劃分:
傳輸層(通用):(DPORT端口分發)
lvs:傳輸層直接路由轉發 偽傳輸層調度 nginx:(stream),偽裝成一個后端程序做轉發通過套接字;并發能力有限! haproxy:(mode tcp)
應用層(專用):(自定義的請求模型分類)
proxy sferver:(某個協議的代理) http:nginx, httpd, haproxy(mode http), ... fastcgi:nginx, httpd, ... mysql:mysql-proxy, ... ...
站點指標:
-
PV:Page View,每次客戶端成功請求的頁面入口的瀏覽量(并不是對頁面的每個資源的請求量)
-
UV:Unique Vistor,每個獨立客戶端對服務器的訪問。每個訪問者就是一個UV(客戶端就是瀏覽器進程)
-
IP:獨立的地址訪問次數
注意:Cookie:用來追蹤用戶身份。服務器端用seession來保存客戶端的各種活動
會話保持: (1) session sticky(會話粘性)訪問綁定 Source IP基于源ip綁定 Cookie 基于cookie綁定 (2) session replication; 復制集群 session cluster:把后邊的主機的session做同步 (3) session server
lvs:Linux Virtual Server 虛擬服務器
VS: Virtual Server(負載均衡器就是vs)
RS: Real Server(后端服務器)
作者:章文嵩;alibaba –> didi
lvs:四層路由器,四層交換機;
VS:根據請求報文的目標IP和目標協議及端口將其調度轉發至某RealServer,根據調度算法來挑選RS;
iptables/netfilter:
iptables:用戶空間的管理工具; netfilter:內核空間上的框架; 流入:PREROUTING --> INPUT 流出:OUTPUT --> POSTROUTING 轉發:PREROUTING --> FORWARD --> POSTROUTING DNAT:目標地址轉換; PREROUTING;
和iptables類似 lvs: ipvsadm/ipvs
ipvsadm:用戶空間的命令行工具,規則管理器,用于管理集群服務及RealServer;
ipvs:工作于內核空間的netfilter的INPUT鉤子之上的框架;
lvs集群類型中的術語:
vs:Virtual Server, Director, Dispatcher, Balancer rs:Real Server, upstream server, backend server3 CIP:Client IP, VIP: Virtual serve IP, RIP: Real server IP, DIP: Director IP
通信方式:
CIP <–> VIP == DIP <–> RIP
lvs集群的類型:
-
lvs-nat:修改請求報文的目標IP
-
lvs-dr:操縱封裝新的MAC地址;
-
lvs-tun:在原請求IP報文之外新加一個IP首部;
-
lvs-fullnat:修改請求報文的源和目標IP;
1.lvs-nat:
多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和PORT實現轉發;
(1)RIP和DIP必須在同一個IP網絡,且應該使用私網地址;RS的網關要指向DIP; (2)請求報文和響應報文都必須經由Director轉發;Director易于成為系統瓶頸; (3)支持端口映射,可修改請求報文的目標PORT; (4)vs必須是Linux系統,rs可以是任意系統;
2.lvs-dr:
Direct Routing,直接路由;
通過為請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變;
Director和各RS都得配置使用VIP; Director將接受的請求進行重新封裝,添加MAC首部發向交換機,讓交換機發往后端主機。 RS的vip配置在lo上,接收到路由轉發過來的請求后,拆解報文送往lo上的vip后再處理。 發送信息也要先經過lo再通過外部網卡轉發發出去,這樣就保證了源ip為vip,目標ipione為Cip了! (1) 確保前端路由器將目標IP為VIP的請求報文發往Director: (a) 在前端網關做靜態綁定; (b) 在RS上使用arptables; (c) 在RS上修改內核參數以限制arp通告及應答級別 arp_announce arp_ignore (2) RS的RIP可以使用私網地址,也可以是公網地址;RIP與DIP在同一IP網絡;RIP的網關不能指向DIP,以確保響應報文不會經由Director; (3) RS跟Director要在同一個物理網絡; (4) 請求報文要經由Director,但響應不能經由Director,而是由RS直接發往Client; (5) 不支持端口映射;
3.lvs-tun:
轉發方式:不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而在原IP報文之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標RS;
(1) DIP, VIP, RIP都應該是公網地址; (2) RS的網關不能,也不可能指向DIP; (3) 請求報文要經由Director,但響應不能經由Director; (4) 不支持端口映射; (5) RS的OS得支持隧道功能; (6)可以跨越互聯網進行轉發。
4.lvs-fullnat:
通過同時修改請求報文的源IP地址和目標IP地址進行轉發;
CIP --> DIP VIP --> RIP (1) VIP是公網地址,RIP和DIP是私網地址,且通常不在同一IP網絡;因此,RIP的網關一般不會指向DIP; (2) RS收到的請求報文源地址是DIP,因此,只需響應給DIP;但Director還要將其發往Client; (3) 請求和響應報文都經由Director; (4) 支持端口映射; 注意:此類型默認不支持;
原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/56328