您好,登錄后才能下訂單哦!
? 在互聯網應用中,隨著站點對硬件性能、響應速度、服務穩定性、數據可靠性等要求越來越高,單臺服務器力不從心。所以我們需要通過一些方法來解決這樣的瓶頸。
? 最簡單的方法就是使用價格昂貴的大、小型的主機;但這樣在大多數企業中顯然是不可取或者說不現實的。那么我們就需要通過多個普通服務器構建服務器群集。
? LVS——Linux Virtual Server,即Linux虛擬服務器(虛擬主機、共享主機),虛擬主機在這里就不再贅述了,相信大家都明白。
? 而LVS是一個虛擬的服務器集群系統,其實現的是一個高性能、高可用的服務器。目前LVS已經被集成到Linux內核模塊中。
①從物理層面上講,LVS的主要組成:
如下圖所示:
補充:一般為了實現高可用會使用兩臺以上的調度服務器,作為備份,提高安全性。(后面的實驗部署DR模式+keepalive會使用兩臺負載調度服務器)
②從軟件層面上講,LVS 由2部分程序組成,包括 ipvs 和 ipvsadm。
1.ipvs(ip virtual server):工作在內核空間的一段代碼,叫ipvs,是真正生效實現調度的代碼。
2.ipvsadm:另外一段是工作在用戶空間,叫ipvsadm,負責為ipvs內核框架編寫規則,定義誰是集群服務,而誰是后端真實的服務器(Real Server),然后由內核代碼實現真正的調度算法及功能。
? 群集,或者說集群,英文是cluster,由多臺主機構成,但是對外只表現為一個整體(同一服務),客戶端是無法察覺到究竟有多少臺服務器,并且對自己訪問的是哪一臺真實服務器一無所知。
? 根據針對目標差異,可將群集分為負載均衡群集、高可用群集(HA)、高性能運算群集三類。下文會逐一介紹。
? 負載均衡——load balance,顧名思義,就服務器方面而言,可以理解為多個服務器上所承載的“壓力”相對平衡,這里的“壓力”指的是服務器上所需要響應的各種資源請求或者服務,并且是相對平衡的,畢竟服務器的性能等諸多方面都未必一致。
? 簡單舉個例子來說明一下負載均衡的含義,如果說你需要打一桶水,你可以選擇用一只手拎著,但是可能會比較累,如果你用雙手拎著兩個桶來裝與之等量且平均分配的水,就比較輕松了。
? 其實負載均衡本質上就是這樣的原理,將任務相對平均分配給多個服務器處理,這樣既可以減輕一臺服務器的壓力,也能提高響應與處理的速度。
? 負載均衡+群集,可以提高應用系統的響應能力、處理更多訪問請求、減少延遲,從而獲得高并發、高負載的整體性能。
? 當然,負載均衡的處理并不是簡單的平均分配,而是依賴于實際情況下的調度分流算法。而算法就涉及開發人員的思想和生產環境的實際情況了。
? 提高應用系統的可靠性、減少主斷時間,確保服務的連續性,達到高可用的容錯效果。
? HA(high availability)的工作方式包括雙工和主從兩種模式。這就涉及到“去中心化”和“中心化”思想,而上一篇文章所介紹的MHA就是典型的master高可用群集的架構模式,只不過我們使用的是MySQL數據庫,從而搭成該高可用的架構。
? 高性能運算群集——High Performance Computer Cluster,提高應用系統的CPU運算速度、擴展硬件資源和分析能力,獲得相當于大型、超級計算機的高性能運算能力。
? 高性能運算群集的高性能依賴于“分布式運算”、“并行計算”,通過專用硬件和軟件將多個服務器的CPU、內存等資源整合在一起,實現只有大型計算機具備的計算能力。
?
負載均衡群集是目前企業用的最多的群集類型,群集的負載調度技術有三種工作模式:地址轉換——NAT、IP隧道——ip Tunnel、直接路由——Directing Route。
?
下面我們來逐一介紹一下這三種模式。
地址轉換——Network Address Translation。我們結合下圖分析該模式:
? 根據上圖結構我們暫時不考慮共享存儲,(下篇文章會將該模式的架構流程以及配置過程詳細給出,使用NFS作為共享存儲)
? 我們首先來看實線部分,也就是client端請求服務的部分。
? 1.客戶端進行請求服務器,對于客戶而言,直接訪問的目標IP地址不可能是下面的三臺或多臺真實服務器(Real Server),而是LVS負載調度服務器(當然,該服務器也可以是一個真實服務器(相當于身兼數職),看自己的想法和需求)。一般而言我們在負載調度器上是將其充當為一個網關的功能,所以它有(至少有)兩個網卡,并且網段不同。在這臺服務器上我們需要進行NAT地址轉換,一般是通過ip地址映射的方法,來實現數據請求和數據響應的功能。當然這需要我們理解NAT的原理和設置方法。
? 2.請求到達負載調度服務器,進行相關處理將數據按照設置的調度算法進行任務分配;
? 3.響應該調度算法的真實服務器將開始執行自己的任務并且返回相關數據,而所有的真實服務器的網關都指向負載調度器,依據NAT原理進行ip地址映射,將數據從外網口發送給客戶端。
整個過程中客戶端對真實服務器的內部結構是不清楚的,事實上也無需了解。
該模式的最為典型的特點就是:
數據的請求和數據的返回都需要經過負載調度服務器(load balancer/Director)
那么這在高負載的應用場景中,該模式中的負載調度服務器就成為服務性能的瓶頸。出現這樣的情況則必然有對應解決的方法。下面我們將介紹其他兩種模式——TUN模式和DR模式。
? 該模式為IP Tunnel模式,簡稱TUN模式,采用開放式的網絡結構。負載調度器僅作為客戶機的訪問入口,各節點通過各自的Internet連接直接回應客戶機,而不再經過負載調度器。
? 服務器節點分散在互聯網中的不同位置,具有獨立的公網ip地址,通過專用IP隧道與負載調度器相互通信。
? 如下圖所示:
? IP隧道原理的核心思想就是:基于將一個IP報文封裝在另一個IP報文的技術,從而使得目標為一個IP地址的數據報文能被封裝和轉發到另一個IP地址。
? 因而,IP隧道技術亦稱為IP封裝技術(IP encapsulation)。IP隧道主要用于移動主機和虛擬私有網絡(Virtual Private Network),在其中隧道都是靜態建立的,隧道一端有一個IP地址,另一端也有唯一的IP地址。
? 調度器根據服務器的負載情況,動態地選擇一臺服務器,將請求報文封裝在另一個IP報文中,再將封裝后的IP報文轉發給選出的服務器;服務器收到報文后,先將報文解封獲得原來目標地址為 VIP 的報文,服務器發現VIP地址被配置在本地的IP隧道設備上,所以就處理這個請求,然后根據路由表將響應報文直接返回給客戶。
該模式的典型特點:
除了負載調度服務器是公網IP地址,后端服務器和其網關也都是公網IP地址
? 而這樣造成的結果就是,不論從安全性方面考慮,還是從購買地址和管理的成本方面考慮,這種模式都是非常不可取的。所以,DR模式就應運而生了。
? DR模式,直接路由模式。采用半開放式的網絡結構,與TUN不同點在于各節點服務器不是分散在各地,而是與調度器位于同一個物理網絡。這同樣也減輕了服務器的負擔。
如下圖所示:
? 該模式的優點在于:不僅解決了TUN模式存在的問題,而且由于負載調度器與各個節點服務器通過本地網絡連接,因此無需建立專用的IP隧道。
? 那么,我們可能產生一個問題:既然負載調度器和節點服務器在同一個物理網絡中,我們可以認為是一個局域網,那么這不是會導致廣播風暴嗎?
? 解答:這個問題非常好,其實在我們進行真正的配置過程中,對于DR模式,是需要關閉ARP功能的。如何關閉我們會在之后的文章中通過實際案例配置具體介紹和解釋。
? 本文主要對LVS負載均衡群集的三種工作模式進行原理上的講解,包括了一些可能對于初學者而言無法理解的名詞,如:群集;負載均衡等。我們只有理解了前輩們研發出來的方法從而實現相關功能的原理,我們在實際操作的時候才能融會貫通,加深理解。
? 之后會對上述的NAT模式和DR模式進行實際的案例模擬配置。謝謝閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。