Linux服務(wù)器集群概念辨識

Linux服務(wù)器集群系統(tǒng)各概念辨析

計(jì)算機(jī)集群

WEB的負(fù)載均衡、集群、高可用解決方案



計(jì)算機(jī)集群

計(jì)算機(jī)集群簡稱集群(Clusters),是一種計(jì)算機(jī)系統(tǒng)。它通過一組散列集成的 軟件或硬件 連接起來高度緊密地協(xié)作完成計(jì)算工作。在莫種意義上,他們可以被看做是一臺計(jì)算機(jī)。

集群系統(tǒng)中的單個(gè)計(jì)算機(jī)通常稱為節(jié)點(diǎn),通常通過內(nèi)網(wǎng)連接,但也有其它的可能連接方式。集群計(jì)算機(jī)通常用來改進(jìn)單個(gè)計(jì)算機(jī)的計(jì)算速度和可靠性。

集群分類

集群分為同構(gòu)和異構(gòu),他們區(qū)別在于 “組成集群系統(tǒng)的計(jì)算機(jī)之間的體系結(jié)構(gòu)是否相同”。

集群計(jì)算機(jī)按功能和結(jié)構(gòu)可以分為以下幾類:

高可用性集群 HA(High-Availability clusters);

負(fù)載均衡集群(Load Balancing clusters);

高性能計(jì)算集群(High Performance clusters);

網(wǎng)格計(jì)算(Grid Computing);

集群技術(shù)特點(diǎn)

通過多臺計(jì)算機(jī)完成同一工作,達(dá)到更高的效率;

多臺主機(jī)內(nèi)容、工作過程等完全一樣,其中一臺宕機(jī)不會影響全局;



Linux服務(wù)器集群概念

集群、冗余、負(fù)載均衡、主從復(fù)制、讀寫分離、分布式、分布式計(jì)算、分布式計(jì)算平臺、并行計(jì)算......

實(shí)際生產(chǎn)環(huán)境中常有的問題:

1,當(dāng)數(shù)據(jù)庫性能遇到問題時(shí),是否能夠橫向擴(kuò)展,通過添加服務(wù)器的方式達(dá)到更高的吞吐量,從而充分利用現(xiàn)有的硬件實(shí)現(xiàn)更好的投資回報(bào)率;

2,是否擁有實(shí)時(shí)同步的副本,當(dāng)數(shù)據(jù)庫面臨災(zāi)難時(shí),可以短時(shí)間內(nèi)通過故障轉(zhuǎn)移的方式保證數(shù)據(jù)庫的可用性。此外,當(dāng)數(shù)據(jù)丟失或損壞時(shí),能否通過所謂的實(shí)時(shí)副本(熱備)實(shí)現(xiàn)數(shù)據(jù)的零損失;

3,數(shù)據(jù)庫的橫向擴(kuò)展是都對應(yīng)用程序透明,如果數(shù)據(jù)庫的橫向擴(kuò)展需要應(yīng)用程序端進(jìn)行大量修改,則所帶來的后果不僅僅是高昂的開發(fā)成本,同時(shí)也會帶來很多潛在和非潛在的風(fēng)險(xiǎn);


集群和冗余

集群和冗余并不對立,多臺服務(wù)器做集群(不是主從),本身就有冗余和負(fù)載均衡的效果。

狹義上來說,集群就是把多臺服務(wù)器虛擬成一臺服務(wù)器,而冗余的每臺服務(wù)器都是獨(dú)立的。

集群的側(cè)重點(diǎn)在于協(xié)同,多臺服務(wù)器系統(tǒng)分擔(dān)工作,提升效率;

冗余的側(cè)重點(diǎn)在于防止單點(diǎn)故障,一主多備的架構(gòu),也就是主從復(fù)制;

數(shù)據(jù)冗余==高可用性==主從;

主從一定程度上起到了負(fù)載均衡的作用,但主要目的還是為了保證數(shù)據(jù)冗余和高可用性;

主從只提供一種成本較低的數(shù)據(jù)備份方案加上不完美的災(zāi)難和負(fù)載均衡,由于復(fù)制存在時(shí)間差,不能同步讀,所以只是不完善的負(fù)載均衡和有損災(zāi)備;

主從顯然達(dá)不到集群的嚴(yán)格度,不論是 HA 還是 AA(多活并行集群),主從都達(dá)不到數(shù)據(jù)一致性的集群要求;

主從很難嚴(yán)格界定是哪種模式,可以歸類為:

有一定冗余度的非一致性異步副本(不可靠不同步);

對于沒有嚴(yán)格一致性要求的系統(tǒng),可以定制為 分擔(dān)負(fù)載、查詢過時(shí)報(bào)表;


負(fù)載均衡、高可用、高性能是什么

集群有負(fù)載均衡集群、高可用集群、高性能集群,分別側(cè)重于抗并發(fā),避免單點(diǎn)故障和大數(shù)據(jù)下的并行處理。三者也有不同的實(shí)現(xiàn)方法,但同時(shí)這三者又是相輔相成的。

負(fù)載均衡集群(Load Balance clusters)

負(fù)載均衡著重在于提供服務(wù)并發(fā)處理能力的集群。是為了消除性能瓶頸,當(dāng)然也可以起到備份工作。把負(fù)載壓力根據(jù)某種算法合理分配到集群中的每一臺計(jì)算機(jī)上,以減輕主服務(wù)器的壓力,降低對主服務(wù)器的硬件和軟件要求

負(fù)載均衡運(yùn)行時(shí),一般通過一個(gè)或者多個(gè)前端負(fù)載均衡器,將工作負(fù)載分發(fā)到后端的一組服務(wù)器上,從而達(dá)到整個(gè)系統(tǒng)的高性能和高可用性。這樣的計(jì)算機(jī)集群有時(shí)也被稱為服務(wù)器群(Server Farm);

實(shí)現(xiàn)原理,一個(gè)負(fù)載均衡器加上一個(gè)集群實(shí)現(xiàn)的。負(fù)載均衡集群中有一個(gè) 分發(fā)器(調(diào)度器),我們稱之為Director,它處在多臺服務(wù)器上面,分發(fā)器根據(jù)內(nèi)部鎖定義的規(guī)則或調(diào)度方式從下面的服務(wù)器群中選擇一個(gè)以此來響應(yīng)客戶端發(fā)送的請求。分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,例如Web服務(wù)器,F(xiàn)TP服務(wù)器,企業(yè)關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù);

一般高可用性集群和負(fù)載均衡集群會使用類似的技術(shù),或同時(shí)具有高可用性和負(fù)載均衡的特點(diǎn);

Linux虛擬服務(wù)器(LVS)項(xiàng)目 在Linux操作系統(tǒng)上提供最常用的負(fù)載均衡軟件;


高可用性集群(High Availability clusters)

一般是指當(dāng)集群中有某個(gè)節(jié)點(diǎn)失效的情況下,其上的任務(wù)會自動轉(zhuǎn)移到其他正常的節(jié)點(diǎn)上.還指可以將集群中的某節(jié)點(diǎn)進(jìn)行離線維護(hù)再上線,該過程并不影響整個(gè)集群的運(yùn)行;

高可用 以提升服務(wù)在線的能力的集群;

高可用集群主要是為了避免單點(diǎn)故障存在的,備機(jī)平時(shí)不參與工作。高可用集群是可用性比較高,當(dāng)我們某臺服務(wù)器死機(jī)后不會造成我們的服務(wù)不可用。其工作模式則是將一個(gè)具有故障的服務(wù)轉(zhuǎn)交給一個(gè)正常工作的服務(wù)器,從而達(dá)到服務(wù)不會中斷。一般來說我們集群中工作在前端(分發(fā)器)的服務(wù)器都會對我們的后端服務(wù)器做一個(gè)健康檢查,如果發(fā)現(xiàn)我們服務(wù)器宕機(jī)就不會對其再做轉(zhuǎn)發(fā);

衡量標(biāo)準(zhǔn):可用性=在線時(shí)間(在線時(shí)間+故障處理時(shí)間);

高可用性集群,是保證業(yè)務(wù)連續(xù)性的有效解決方案,一般有兩個(gè)或兩個(gè)以上的節(jié)點(diǎn),且分為活動節(jié)點(diǎn)及備用節(jié)點(diǎn)。通常把正在執(zhí)行業(yè)務(wù)的稱為活動節(jié)點(diǎn),而作為活動節(jié)點(diǎn)的一個(gè)備份則稱為備份節(jié)點(diǎn)。當(dāng)活動節(jié)點(diǎn)出現(xiàn)問題,導(dǎo)致正在運(yùn)行的業(yè)務(wù)不能正常運(yùn)行時(shí),備用結(jié)點(diǎn)此時(shí)就會偵測到,并立即接續(xù)活動節(jié)點(diǎn)來執(zhí)行業(yè)務(wù),從而實(shí)現(xiàn)業(yè)務(wù)的不中斷或短暫中斷;

實(shí)現(xiàn)原理:利用集群管理軟件,當(dāng)主機(jī)故障時(shí),備機(jī)能夠自動接管主機(jī)的工作,并及時(shí)切換過去,以實(shí)現(xiàn)對用戶的不間斷服務(wù);


高性能集群(High Performance clusters)

高性能著重用于處理一個(gè)海量任務(wù);

高性能集群是當(dāng)某一個(gè)任務(wù)量非常大的時(shí)候,我們做一個(gè)集群共同來完成這一任務(wù),所以又被稱為 “并行處理集群”;

充分利用集群中每一臺計(jì)算機(jī)的資源,實(shí)現(xiàn)復(fù)雜運(yùn)算的并行處理,通常用于科學(xué)計(jì)算領(lǐng)域,如化學(xué)分析等;

實(shí)現(xiàn)原理:并行處理集群試講大人物劃分為小任務(wù),分別進(jìn)行處理的機(jī)制。一般這樣的集群用來科學(xué)研究與大數(shù)據(jù)運(yùn)算等方面的工作。現(xiàn)在比較火的Hadoop就是使用并行處理集群;


高可用與負(fù)載均衡有什么區(qū)別

HA 和 LB 確實(shí)不是一個(gè)概念,解決方案的側(cè)重點(diǎn)完全不同。

HA偏重于備用資源,切機(jī)時(shí)會有業(yè)務(wù)的斷開的,保證了數(shù)據(jù)的安全,但造成資源的浪費(fèi);

LB側(cè)重于資源的充分應(yīng)用,沒有主備的概念,只有資源的最大限度的加權(quán)平均應(yīng)用,基本不會業(yè)務(wù)的中斷;

從目的上來說:

HA的目的是不中斷服務(wù),LB的目的是為了提高接入能力。雖然經(jīng)常放一起用,但確實(shí)是兩個(gè)不同的領(lǐng)域;

從功能上來說:

HA在一條路不通的時(shí)候提供另一條路可走,而 LB 就類似于是春運(yùn)時(shí)的多個(gè)窗口;

HA 和 LB是兩個(gè)概念的問題,一般來說沒有誰優(yōu)誰劣的標(biāo)準(zhǔn),只有在特定的環(huán)境下,誰更適合的問題。


向上擴(kuò)展和向外擴(kuò)展(單機(jī)和多機(jī))

向上擴(kuò)展:升級當(dāng)臺服務(wù)器的硬件;

缺點(diǎn)是在一定的范圍之內(nèi)它的性能是上升的趨勢,但是超出范圍之后就是下降的趨勢,隨著CPU個(gè)數(shù)的增加資源競爭性越大;

向外擴(kuò)展:增加新的服務(wù)器;

優(yōu)勢是增減服務(wù)器很方便,而且沒有向上擴(kuò)展隨著增加性能下降;


集群管理工具

Swarm - Docker;

Fleet – Core OS;

Kubernetes –谷歌;

Mesos – Apache;


負(fù)載均衡

所謂負(fù)載均衡,就是把大訪問量分發(fā)給不同的服務(wù)器,也就是分流請求。

實(shí)現(xiàn)負(fù)載均衡的六種方法

1,HTTP重定向協(xié)議實(shí)現(xiàn)負(fù)載均衡

HTTP 重定向就是應(yīng)用層的請求轉(zhuǎn)發(fā),用戶的請求其實(shí)已經(jīng)到了HTTP重定向負(fù)載均衡服務(wù)器,服務(wù)器根據(jù)算法要求用戶重定向,用戶收到重定向請求后,再次請求真正的集群;

優(yōu)點(diǎn):簡單;

缺點(diǎn):性能較差;

2,DNS域名解析負(fù)載均衡

DNS域名解析負(fù)載均衡就是在用戶請求DNS服務(wù)器,獲取域名對應(yīng)的IP地址時(shí),DNS服務(wù)器直接給出負(fù)載均衡后的服務(wù)器IP;

優(yōu)點(diǎn):交給DNS,不用我們?nèi)ゾS護(hù)負(fù)載均衡服務(wù)器;

缺點(diǎn):當(dāng)一個(gè)應(yīng)用服務(wù)器掛了,不能及時(shí)通知DNS,而且DNS負(fù)載均衡的控制權(quán)在域名服務(wù)商那里,網(wǎng)站無法做更多的改善和更強(qiáng)大的管理;

3,反向代理負(fù)載均衡

在用戶的請求到達(dá)方向代理服務(wù)器時(shí)(已到達(dá)網(wǎng)站機(jī)房),由于反向代理服務(wù)器根據(jù)算法轉(zhuǎn)發(fā)到具體的服務(wù)器,常用的Apache,Nginx都可以充當(dāng)反向代理服務(wù)器;

優(yōu)點(diǎn):部署簡單;

缺點(diǎn):代理服務(wù)器可能成為性能的瓶頸,特別是一次上傳大文件;

LVS集群中實(shí)現(xiàn)的三種IP負(fù)載均衡技術(shù)

4,IP負(fù)載均衡

LVS-NAT,在請求到達(dá)負(fù)載均衡器后,負(fù)載均衡器通過修改請求的目的IP地址,從而實(shí)現(xiàn)請求的轉(zhuǎn)發(fā),做到負(fù)載均衡;

優(yōu)點(diǎn):性能更好;

缺點(diǎn):負(fù)載均衡器的帶寬稱為瓶頸;

5,直接路由負(fù)載均衡

LVS-DR,數(shù)據(jù)鏈路層負(fù)載均衡,在請求到達(dá)負(fù)載均衡器后,負(fù)載均衡器通過修改請求的Mac地址,從而做到負(fù)載均衡,與IP負(fù)載均衡不一樣的是,當(dāng)請求訪問完服務(wù)器之后,直接返回客戶,而無需在經(jīng)過負(fù)載均衡器;

6,IP隧道負(fù)載均衡(LVS-TUN)


負(fù)載均衡和反向代理有什么區(qū)別

做了反向代理才能實(shí)現(xiàn)負(fù)載均衡,負(fù)載均衡是做反向代理的目的之一。


Nginx負(fù)載均衡分發(fā)請求的幾種方式

1,輪詢;

2,權(quán)重;

3,IP-hsah

#1,2,3是Nginx自帶方法;4,5是第三方方法

4,fair;

5,url_hash;




主從復(fù)制

主從復(fù)制的作用

主從是一種用于數(shù)據(jù)容錯(cuò)和災(zāi)備的高可用解決方案,而不是一種處理高并發(fā)壓力的解決方案(負(fù)載均衡是用來抗并發(fā)的)

1,主機(jī)負(fù)責(zé)查詢,從機(jī)負(fù)責(zé)增刪改;

2,可以在從機(jī)上執(zhí)行備份,以避免備份期間影響主機(jī)的服務(wù);

3,主從復(fù)制后,也可以在從機(jī)上查詢,以降低主機(jī)的訪問壓力。但是,只有更新不頻繁的數(shù)據(jù)或者對實(shí)時(shí)性要求不高的數(shù)據(jù)可以通過從服務(wù)器查詢,實(shí)時(shí)性要求高的數(shù)據(jù)仍需在主服務(wù)器查詢(因?yàn)橹鲝膹?fù)制有同步延遲,所以不能保證強(qiáng)數(shù)據(jù)一致性);


主從復(fù)制和讀寫分離的區(qū)別

主從復(fù)制是實(shí)現(xiàn)讀寫分離的技術(shù)之一,也是實(shí)現(xiàn)讀寫分離的前提條件。

做讀寫分離時(shí)最重要的就是確保 讀庫 寫庫 的數(shù)據(jù)統(tǒng)一,而主從復(fù)制是實(shí)現(xiàn)數(shù)據(jù)統(tǒng)一最簡單的方法(并不能夠保證強(qiáng)數(shù)據(jù)的一致性);

讀寫分離,顧名思義,就是一個(gè)表只負(fù)責(zé)向前臺頁面展示數(shù)據(jù),而后臺管理人員對表的增刪改在另一個(gè)表中,把兩個(gè)表分開,就是讀寫分離;

主從復(fù)制則是一個(gè)表數(shù)據(jù) 增刪改 之后會及時(shí)更新到另一個(gè)表中,保證兩個(gè)表的數(shù)據(jù)一致;


實(shí)現(xiàn)主從復(fù)制的方法

MySQL主從復(fù)制;

MongoDB主從復(fù)制;


如何減少主從復(fù)制的同步延遲

MySQL主從數(shù)據(jù)庫同步延遲問題;

MongoDB主從數(shù)據(jù)庫同步延遲問題;


主從復(fù)制側(cè)重點(diǎn)不同的幾種類型

雙機(jī)熱備=主機(jī)+備機(jī);

主要應(yīng)用運(yùn)行在主機(jī),備機(jī)即備用機(jī)器。備機(jī)不工作,主機(jī)出現(xiàn)故障時(shí)備機(jī)接管主機(jī)的所有工作;

雙機(jī)互備=主機(jī)(備機(jī)) + 備機(jī)(主機(jī));

互為主備,部分應(yīng)用運(yùn)行于主機(jī),部分應(yīng)用運(yùn)行于備機(jī),主機(jī)備機(jī)同時(shí)工作;

雙機(jī)雙工=主機(jī)+主機(jī);

兩臺主機(jī)同時(shí)運(yùn)行應(yīng)用,主機(jī)備機(jī)同時(shí)工作;



分布式

分布式與集群有什么區(qū)別

廣義上的分布式是指,將不同的服務(wù)分布在不同的服務(wù)器上;

集群是指,將幾臺服務(wù)器集中在一起,實(shí)現(xiàn)同一業(yè)務(wù);

分布式中的每一個(gè)節(jié)點(diǎn)都可以做集群,而集群并不一定是分布式的;






Web負(fù)載均衡、集群、高可用解決方案

組件

Apache,Apache軟件基金會下的一個(gè)項(xiàng)目,Apache HTTP Server ;

Nginx,高性能HTTP和反向代理服務(wù)器,Nginx HTTP Server;

LVS,Linux虛擬服務(wù)器,是一個(gè)虛擬的服務(wù)器集群系統(tǒng);

HAProxy,可提供高可用性、負(fù)載均衡以及基于TCP和HTTP應(yīng)用的代理,支持虛擬主機(jī),它是免費(fèi)、快速并且可靠的一種解決方案。HAProxy特別適用于那些負(fù)載特大的web站點(diǎn),這些站點(diǎn)通常有需要會話保持或七層處理。HAProxy運(yùn)行中當(dāng)前的硬件上,完全可以支持?jǐn)?shù)以萬計(jì)的并發(fā)連接,并且它的運(yùn)行模式使得它可以很簡單安全的整合進(jìn)你當(dāng)前的架構(gòu)中,同時(shí)可以保護(hù)你的Web服務(wù)器不被暴露到網(wǎng)絡(luò)上;

Keepalived,這里說的keepalived不是Apache或者Tomcat等某個(gè)組件上的屬性字段,它也是一個(gè)組件,可以實(shí)現(xiàn)Web服務(wù)器的高可用。它可以檢測Web服務(wù)器的工作狀態(tài),如果該服務(wù)器出現(xiàn)故障被檢測到,將其剔除服務(wù)器群中,直至正常工作后,Keepalived會自動檢測到并加入到服務(wù)器群里面。實(shí)現(xiàn)主備服務(wù)器發(fā)生故障時(shí)IP瞬時(shí)無縫交接。它是LVS集群節(jié)點(diǎn)將抗檢測的一個(gè)用戶空間守護(hù)進(jìn)程,也是LVS的引導(dǎo)故障轉(zhuǎn)移模塊(director failover)。Keepalived守護(hù)進(jìn)程可以檢查LVS池的狀態(tài)。如果LVS服務(wù)器池當(dāng)中的某一個(gè)服務(wù)器宕機(jī)了,Keepalived會通過一個(gè)setsockopt呼叫通知內(nèi)核將這個(gè)節(jié)點(diǎn)從LVS拓?fù)鋱D中移除;

Memcached,它是一個(gè)高性能分布式內(nèi)存對象緩存系統(tǒng),用于對業(yè)務(wù)查詢數(shù)據(jù)緩存,減輕數(shù)據(jù)庫的負(fù)載,在memcached里面緩存的數(shù)據(jù)必須序列化;

Teeracotta,是一款由美國Teeracotta公司開發(fā)的著名開源Java集群平臺,支持?jǐn)?shù)據(jù)的持久化、session的復(fù)制以及高可用;


常用Web集群

Tomcat

Apache Tomcat是Apache基金會下開發(fā)的一個(gè)Servlet容器,提供了作為web服務(wù)器的一些特殊功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥。

Servlet(Server Applet),全稱Java Servlet,是用Java編寫的服務(wù)器端程序。其功能在于交互地瀏覽和修改數(shù)據(jù),生成動態(tài)web內(nèi)容。

Tomcat更多用來做一個(gè)應(yīng)用容器,管理整個(gè)Servlet的生命周期,主要用來跑Java web App。因?yàn)镴ava后臺程序無法運(yùn)行在Apache和Nginx上,他兩不是Servlet容器。

與Apache HTTP Server相比,Tomcat能夠動態(tài)的生成資源并返回到客戶端。Apache 和 Nginx都能夠?qū)⒛骋粋€(gè)文本文件的內(nèi)容通過HTTP協(xié)議返回到客戶端,但這個(gè)文本文件的內(nèi)容是固定的。也就是說,無論何時(shí)、任何人訪問它得到的內(nèi)容都是完全相同的,這樣的資源我們稱為靜態(tài)資源。動態(tài)資源與之相反,在不同的時(shí)間、不同的客戶端訪問得到的內(nèi)容是不相同的。

Apache 和 Nginx 本身不支持生成動態(tài)頁面,但它們可以通過其他模塊來支持(如shell、Python、PHP程序來生成動態(tài)內(nèi)容)。

雖然Tomcat也可以認(rèn)為是HTTP服務(wù)器,但通常它仍然會和Nginx配合在一起使用:

動靜態(tài)資源分離,運(yùn)用Nginx的反向代理功能分發(fā)請求,所有動態(tài)資源的請求交個(gè)Tomcat,而靜態(tài)資源的請求則直接由Nginx返回到瀏覽器,這樣能大大減輕Tomcat的壓力;

負(fù)載均衡,當(dāng)也無壓力增大時(shí),可能一個(gè)Tomcat的實(shí)例不足以處理,那么這時(shí)可以啟動多個(gè)Tomcat實(shí)例進(jìn)行水平擴(kuò)展,而Nginx的負(fù)載均衡功能可以把請求通過算法分發(fā)到各個(gè)不同的實(shí)例進(jìn)行處理;

Tomcat集群方案

Apache + Tomcat;

Nginx + Tomcat;

Lvs + Nginx + Tomcat;

# lvs負(fù)責(zé)集群調(diào)度,Nginx負(fù)責(zé)靜態(tài)文件處理,Tomcat負(fù)責(zé)動態(tài)文件處理;


Session復(fù)制

在訪問系統(tǒng)會話的過程中,用戶登錄系統(tǒng)后,不管訪問系統(tǒng)的任何資源地址都不需要重復(fù)登錄,這里面的 Servlet容易保存了該用戶的會話(session)。如果兩個(gè)Tomcat(A、B)提供集群服務(wù)時(shí),用戶在 A上登錄,接下來的請求Web服務(wù)器根據(jù)策略分發(fā)到 B,因?yàn)锽沒有保存用戶的會話(session)信息,不知道其登錄,會跳轉(zhuǎn)到登錄界面。這時(shí)候我們需要讓 B也保存有?A的會話,我們使用Tomcat的session復(fù)制實(shí)現(xiàn)或者通過其他手段讓session共享。

如果不采用 粘性session,那么我們可以采用Tomcat的session復(fù)制使所有節(jié)點(diǎn)Tomcat的會話相同,Tomcat使用組播技術(shù),只要集群中一個(gè)Tomcat節(jié)點(diǎn)的session發(fā)生改變,會廣播通知所有的Tomcat節(jié)點(diǎn)發(fā)生改變。


高可用(HA)和session共享

使用 Lvs + Keepalived 實(shí)現(xiàn)集群高可用,達(dá)到更健壯的LB

我們可以做前端使用 Lvs 來做負(fù)載均衡,根據(jù)Lvs的8種調(diào)度算法,分發(fā)請求到對應(yīng)的Web服務(wù)器集群上。Lvs做雙機(jī)熱備,通過Keepalived模塊能夠達(dá)到故障自動轉(zhuǎn)移到備份服務(wù)器,不間斷提供服務(wù)。

Web端使用的負(fù)載均衡:

HAProxy + Keepalived + Nginx;

數(shù)據(jù)庫集群(如MySQL):

Lvs + Keepalived + MySQL;

因?yàn)镠AProxy和Nginx一樣是工作在網(wǎng)絡(luò)7層之上,并且HAProxy彌補(bǔ)了Nginx的一些缺點(diǎn)(如session的保持,cookie的引導(dǎo)),且它本身是個(gè)負(fù)責(zé)均衡軟件,處理負(fù)載均衡上面必然優(yōu)于Nginx。

Lvs比較笨重,對于比較龐大的網(wǎng)絡(luò)應(yīng)用,實(shí)施比較復(fù)雜,雖然它運(yùn)行在網(wǎng)絡(luò)4層之上,僅做分發(fā)沒有流量產(chǎn)生,但是它不能做正則處理也不能做動靜分離,所以一般用 Lvs + Keepalived或heatbeat做數(shù)據(jù)庫層的負(fù)載均衡。

使用 terracotta 或 memcached 使session共享

terracotta 是 jvm 級別的 session共享

它基本原理是對于集群間共享的數(shù)據(jù),當(dāng)在一個(gè)節(jié)點(diǎn)發(fā)生變化的時(shí)候,Terracotta只把變化的部分發(fā)送給Terracotta服務(wù)器,然后服務(wù)器把它轉(zhuǎn)發(fā)給真正需要這個(gè)數(shù)據(jù)的節(jié)點(diǎn),并且共享的數(shù)據(jù)對象不需要序列化。

通過 memcached 實(shí)現(xiàn)內(nèi)存級 session共享

通過 memcached-session-manager(msm)插件,通過Tomcat上一定的配置,即可實(shí)現(xiàn)把session儲存到memcached服務(wù)器上。在memcached內(nèi)存中共享的對象需要序列化。

其他方案

通過cookie保存用戶信息(一般是登錄信息),每一個(gè)請求到達(dá)Web應(yīng)用的時(shí)候,Web應(yīng)用從cookie中取出數(shù)據(jù)進(jìn)行處理(這里cookie肯定要加密);

另一種是把用戶信息的關(guān)鍵屬性保存到數(shù)據(jù)庫,這樣就不需要session了。請求過來從數(shù)據(jù)庫查詢關(guān)鍵屬性數(shù)據(jù),做相應(yīng)處理。缺點(diǎn)是加大了數(shù)據(jù)庫的負(fù)載,是數(shù)據(jù)庫成為集群的瓶頸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 當(dāng)前大多數(shù)的互聯(lián)網(wǎng)系統(tǒng)都使用了服務(wù)器集群技術(shù),集群是將相同服務(wù)部署在多臺服務(wù)器上構(gòu)成一個(gè)集群整體對外提供服務(wù),這些...
    jiangmo閱讀 13,254評論 3 36
  • 【摘要】 面對大量用戶訪問、高并發(fā)請求,海量數(shù)據(jù),可以使用高性能的服務(wù)器、大型數(shù)據(jù)庫,存儲設(shè)備,高性能Web服務(wù)器...
    靜修佛緣閱讀 4,839評論 0 24
  • ** 內(nèi)容安排: ** 簡介 區(qū)別 Nginx、LVS及HAProxy負(fù)載均衡軟件的優(yōu)缺點(diǎn) 一、簡介 ** 所謂四...
    薛晨閱讀 67,940評論 12 159
  • 別人說的話,別往心里擱, 別人做的事,不背人評說。 諷刺之言妒忌的很多, 溢美之詞夸張的不少, 笑里藏刀別信,不沾...
    韓執(zhí)閱讀 211評論 0 0
  • 今天聽了紫雨老師的講課《跟孩子溝通如何存疑留懸完美收官》,很受啟發(fā),收獲頗大。 我入群時(shí)間不長,修煉不夠,還沒有...
    小瓶蓋Q日記閱讀 364評論 0 7

友情鏈接更多精彩內(nèi)容