集羣(Cluster)
指一組計算機系統構成一個鬆耦合的多處理器系統,它們之間經過網絡實現進程間的通訊,實現分佈式計算。在客戶端看來就像是隻有一個服務器。集羣能夠利用多個計算機進行並行計算從而得到很高的計算速度,也能夠用多個計算機作備份,從而使得任何一個機器壞了整個系統仍是能正常運行。前端
集羣技術的分類
- 高可用集羣(High Availability,HA):高可用的含義是最大限度地可使用。從集羣的名字上能夠看出,此類集羣實現的功能是保障用戶的應用程序持久、不間斷地提供服務。
- 負載均衡集羣:分爲前端負載調度和後端服務兩個部分。負載調度部分負責把客戶端的請求按照不一樣的策略分配給後端服務節點,然後端節點是真正提供應用程序服務的部分。與高可用集羣不一樣的是,負載均衡集羣中,全部的後端節點都處於活動動態,它們都對外提供服務,分攤系統的工做負載。
- 科學計算集羣(High Performance Computing,HPC):高性能計算集羣。這類集羣致力於提供單個計算機所不能提供的強大計算能力,包括數值計算和數據處理,而且傾向於追求綜合性能。HPC 與超級計算相似,可是又有不一樣,計算速度是超級計算追求的第一目標。最快的速度、最大的存儲、最龐大的體積、最昂貴的價格表明瞭超級計算的特色。
負載均衡(Load Balance)
負載均衡創建在現有網絡結構之上,它提供了一種廉價、有效、透明的方法擴展網絡設備和服務器的帶寬、增長吞吐量、增強網絡數據處理能力、提升網絡的靈活性和可用性。node
主要的負載均衡的技術有以下這些:後端
- DNS 負載均衡:它是最先的負載均衡技術,經過 DNS 來實現,在 DNS 中爲多個地址配置同一個名字,於是查詢這個名字的客戶機將獲得其中某一個地址,從而使得不一樣的客戶訪問不一樣的服務器,達到負載均衡的目的。DNS 負載均衡是一種簡單而有效的方法,可是它不能區分服務器的差別,也不能反映服務器的當前運行狀態。
- 代理服務器負載均衡:使用代理服務器,能夠將請求轉發給內部的服務器,使用這種加速模式顯然能夠提高靜態網頁的訪問速度。然而,也能夠考慮這樣一種技術,使用代理服務器將請求均勻轉發給多臺服務器,從而達到負載均衡的目的。
- 地址轉換網關負載均衡:支持負載均衡的地址轉換網關,能夠將一個外部 IP 地址映射爲多個內部 IP 地址,對每次 TCP 鏈接請求動態使用其中一個內部地址,達到負載均衡的目的。
- 協議內部支持負載均衡:除了這三種負載均衡方式以外,有的協議內部支持與負載均衡相關的功能,例如 HTTP 協議中的重定向能力等,HTTP 運行於 TCP 鏈接的最高層。
- 反向代理負載均衡:普通代理方式是代理內部網絡用戶訪問 internet 上服務器的鏈接請求,客戶端必須指定代理服務器,並將原本要直接發送到 internet 上服務器的鏈接請求發送給代理服務器處理。反向代理(Reverse Proxy)方式是指以代理服務器來接受 internet 上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給 internet 上請求鏈接的客戶端,此時代理服務器對外就表現爲一個服務器。
- 混合型負載均衡:在有些大型網絡,因爲多個服務器羣內硬件設備、各自的規模、提供的服務等的差別,能夠考慮給每一個服務器羣採用最合適的負載均衡方式,而後又在這多個服務器羣間再一次負載均衡或羣集起來以一個總體向外界提供服務(即把這多個服務器羣當作一個新的服務器羣),從而達到最佳的性能。此種方式有時也用於單臺均衡設備的性能不能知足大量鏈接請求的狀況下。
負載均衡從應用的地理結構上又分爲本地負載均衡(Local Load Balance)和全局負載均衡(Global Load Balance)。服務器
- 本地負載均衡:能有效地解決數據流量過大、網絡負荷太重的問題,而且不需花費昂貴開支購置性能卓越的服務器,充分利用現有設備,避免服務器單點故障形成數據流量的損失。其有靈活多樣的均衡策略把數據流量合理地分配給集羣內的服務器共同負擔。即便是再給現有服務器擴充升級,也只是簡單地增長一個新的服務器到集羣中,而不需改變現有網絡結構、中止現有的服務。 它關注一個地理位置上的設備羣,是微觀的。
- 全局負載均衡:主要用於在一個多區域擁有本身服務器的站點,爲了使全球用戶只以一個 IP 地址或域名就能訪問到離本身最近的服務器,從而得到最快的訪問速度。它關注的是一個網絡的總體,是對放在不一樣位置、爲完成同一個任務的設備羣體作負載均衡,是宏觀的。全局負載均衡有如下的特色:
- 實現地理位置無關性,可以遠距離爲用戶提供徹底的透明服務
- 除了能避免服務器、數據中心等的單點失效,也能避免因爲 ISP 專線故障引發的單點失效
- 解決網絡擁塞問題,提升服務器響應速度,服務就近提供,達到更好的訪問質量
負載均衡又分爲硬件均衡服務器和軟件均衡服務器:網絡
- 硬件服務器:就是直接購買獨立的服務器做爲負載均衡服務器,硬件負載均衡效率高,可是價格貴,例如,阿里雲已經提供。
- 軟件服務器:使用具備代理功能的軟件做爲轉發服務器,好比 Nginx,HAProxy,LVS 等等,軟件負載均衡系統價格較低或者免費,效率較硬件負載均衡系統低。
負載均衡的應用(以 IPTV 業務爲例)
華燈初上的時候,打開電視機,點播一個你愛看的電影,電影頃刻間就開演了!你能否想過,和你同樣點播電視節目的有千家萬戶,爲何每家每戶想看的節目都能及時送到眼前呢?這是怎麼作到的呢? 架構
在電視上點播節目是一種 IPTV 業務,被點播的電影、電視劇等節目咱們稱爲內容。向衆多用戶提供內容是由一個專門的網絡完成的,這個網絡咱們叫它內容分發網絡(CDN),咱們將這個分發網絡上負責給電視傳送內容的服務器叫作 CDN 節點(CDN node)。 負載均衡
在網絡建設之初、IPTV 用戶還較少的時候,這個網絡並不龐大,可能一臺設備就能輕鬆處理徹底部用戶的要求。然而隨着業務的發展,用戶量和業務量與日俱增,一臺設備已經招架不住了。這時咱們就須要給這臺設備找些幫手。因而咱們爲這臺設備「克隆」一些兄弟,而後將用戶的要求分攤給全部兄弟,你們一塊兒共同面對。對於這個網絡來講,你們要完成的任務便是負載,如此多隊員的合做以及團隊運做,便是負載均衡。 分佈式
你們合做,處理業務的能力是夠了,可是任務來了後究竟由誰來處理呢?隊員們會不會都不知道應該作什麼?會不會都搶着作而打起來?所以必需要有一個領隊(CDN Manager)來管理他們,指揮他們誰應該作什麼、要達到什麼樣的目的。在向各隊員發出指示以前,領隊須要首先統一接收任務,而後分析並分解任務、挑選合適的隊員(CDN node)來執行任務,再將任務安排下去由合適的隊員具體來執行。在領隊的合理安排下,隊員們都有條不紊地執行任務,不會出現有的太閒而有的過忙的現象,「CDN 團隊」融洽高效地完成了任務。 性能
那麼領隊如何決定把某個任務或子任務分給哪一個隊員呢?領隊的決定可不是隨意作出的,而是至關謹慎且科學的。領隊是依據一些策略來作出決定的。這些策略包括用戶的網絡地址、用戶的分組、先到先得規則等。根據這些策略,領隊能夠把一個大任務分解成多個子任務,讓每一個隊員執行其中一個小任務,你們完成後由領隊彙總,達到完成大任務的目的,這樣這個任務就會執行得很快(如分佈式計算);領隊也能夠把一批任務中的每個任務分散到每一個隊員去分頭執行,由隊員直接完成這些任務,這樣這批任務也會執行得很快。大規模的 CDN 網絡一般是一級一級、一層一層的,咱們叫它分佈式網絡,相鄰的層級之間造成依賴和備份關係。而你點播的節目最終一般由最靠近你的CDN 節點送達你的電視機,這就是爲何節目老是那麼及時地開演。當最靠近你的 CDN 節點出現故障或者服務能力沒法提供服務時,領隊可以根據依賴和備份策略選取其餘合適的節點提供服務。 阿里雲
說到這裏,你們應該明白了,負載均衡就是團隊運做。爲了一個共同的團隊目標,位於不一樣位置上「隊員」們在領隊的統一調度下,協同工做,將大的任務相對平均地分擔起來,把任務完成的更快、更好!在整個網絡這個大範圍內的負載均衡是全局負載均衡,局部的小範圍內的負載均衡是本地負載均衡。
單兵做戰到團隊做戰:
全局負載均衡分佈式架構(網絡規模大):
大規模網絡中,局部的本地負載均衡: