什么是Linux集群
當(dāng)單臺(tái)服務(wù)器滿(mǎn)足不了客戶(hù)流量時(shí),有兩種擴(kuò)展方式。一種向上升級(jí),買(mǎi)更好的服務(wù)器。另一種是向外升級(jí),當(dāng)業(yè)務(wù)是平等的,把它們分開(kāi)到各個(gè)不同的服務(wù)器中。這種不同服務(wù)器的集合,為解決某個(gè)特定問(wèn)題組合起來(lái)形成的單個(gè)系統(tǒng)叫做Linux集群。
Linux集群類(lèi)型
LB集群(Load Balancing,負(fù)載均衡)
當(dāng)我們把業(yè)務(wù)中一些關(guān)鍵服務(wù)分離出來(lái)放入一臺(tái)主機(jī)時(shí),這臺(tái)主機(jī)如果在高負(fù)載的情況下發(fā)生了故障會(huì)導(dǎo)致整個(gè)業(yè)務(wù)不可用,對(duì)這些單點(diǎn)服務(wù)器我們需要做冗余,需要把用戶(hù)的請(qǐng)求分散到多臺(tái)相同業(yè)務(wù)的主機(jī)上。而用來(lái)分散用戶(hù)請(qǐng)求的設(shè)備稱(chēng)之為負(fù)載均衡器,也稱(chēng)分發(fā)器、調(diào)度器。當(dāng)集群中存在負(fù)載均衡器就叫做LB集群。HA集群(High Availiablity,高可用)
比如當(dāng)集群中的調(diào)度器掛掉導(dǎo)致整個(gè)集群業(yè)務(wù)癱瘓時(shí),需要對(duì)調(diào)度器做冗余。在主調(diào)度器發(fā)生故障時(shí)會(huì)把它提供的服務(wù)轉(zhuǎn)移到其他調(diào)度器,當(dāng)主調(diào)度器修復(fù)上線(xiàn)后又能轉(zhuǎn)移回來(lái),這時(shí)我們稱(chēng)這個(gè)集群為HA集群。高可用集群是提供服務(wù)的可用性的,一個(gè)服務(wù)宕機(jī)了能夠用另外一個(gè)主機(jī)立即來(lái)取而代之,使得服務(wù)的中斷盡可能的短。
其中衡量系統(tǒng)可用性的方式是 A=MTBF/(MTBF+MTTR)
(0,1):90%, 95%, 99%, 99.5%, 99.9%, 99.99%, 99.999%, 99.9999%
MTBF稱(chēng)為平均無(wú)故障時(shí)間 / (平均無(wú)故障時(shí)間 + 平均修復(fù)時(shí)間)HP集群(High Performance,高性能)
人工智能中做大量計(jì)算的超級(jí)計(jì)算機(jī),超算集群,比如圍棋的阿爾法G,我們都稱(chēng)為HP集群。-
分布式集群
分布式集群分為兩種- 分布式存儲(chǔ)
當(dāng)存儲(chǔ)一個(gè)較大數(shù)據(jù)集,單臺(tái)主機(jī)的網(wǎng)絡(luò)IO和磁盤(pán)IO都無(wú)法承載,找一臺(tái)主機(jī)實(shí)現(xiàn)分發(fā)調(diào)度,再把數(shù)據(jù)分發(fā)到一堆服務(wù)器上來(lái)實(shí)現(xiàn)存儲(chǔ)。當(dāng)一堆人要存儲(chǔ)很多數(shù)據(jù)時(shí),這臺(tái)分發(fā)器把不同的人分散到不同的服務(wù)器上去進(jìn)行存儲(chǔ)。這臺(tái)分發(fā)服務(wù)器存儲(chǔ)了所有數(shù)據(jù)的索引,叫做元數(shù)據(jù)服務(wù)器namenode,存儲(chǔ)數(shù)據(jù)的服務(wù)器叫做數(shù)據(jù)節(jié)點(diǎn)datanode,這些稱(chēng)之為分布式存儲(chǔ)集群。 - 分布式計(jì)算
當(dāng)我們需要做一個(gè)大量的計(jì)算任務(wù)時(shí),對(duì)一個(gè)社交網(wǎng)站來(lái)說(shuō),日志訪(fǎng)問(wèn)有300億條,想要查出300億條中排名前100的有哪些。把大任務(wù)切成小任務(wù),把300億條數(shù)據(jù)分成每3億個(gè)一份,時(shí)間就可以縮短到1/100。第一臺(tái)服務(wù)器的結(jié)果,和所有其他服務(wù)器的結(jié)果在做第二次計(jì)算。如果還沒(méi)有解決問(wèn)題,就把大文件繼續(xù)分割下去,把一個(gè)大問(wèn)題分成中問(wèn)題,把一個(gè)中問(wèn)題分成小問(wèn)題。把大問(wèn)題分割成很多小問(wèn)題叫做分布式計(jì)算集群。
- 分布式存儲(chǔ)
Linux集群的調(diào)度方法
根據(jù)調(diào)度時(shí)是否考慮各RS當(dāng)前的負(fù)載狀態(tài),分為靜態(tài)方法和動(dòng)態(tài)方法兩種:
-
靜態(tài)方法:僅根據(jù)算法本身進(jìn)行調(diào)度;
- RR:roundrobin,輪詢(xún);
- WRR:Weighted RR,加權(quán)輪詢(xún);
- SH:Source Hashing,實(shí)現(xiàn)session sticky,源IP地址hash;將來(lái)自于同一個(gè)IP地址的請(qǐng)求始終發(fā)往第一次挑中的RS,從而實(shí)現(xiàn)會(huì)話(huà)綁定;
- DH:Destination Hashing;目標(biāo)地址哈希,將發(fā)往同一個(gè)目標(biāo)地址的請(qǐng)求始終轉(zhuǎn)發(fā)至第一次挑中的RS,典型使用場(chǎng)景是正向代理緩存場(chǎng)景中的負(fù)載均衡;
-
動(dòng)態(tài)方法:主要根據(jù)每RS當(dāng)前的負(fù)載狀態(tài)及調(diào)度算法進(jìn)行調(diào)度;
- 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,動(dòng)態(tài)的DH算法;
- LBLCR:LBLC with Replication,帶復(fù)制功能的LBLC;
- LC:least connections