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)系作者
  • 序言:七十年代末剑鞍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子行楞,更是在濱河造成了極大的恐慌攒暇,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件子房,死亡現(xiàn)場離奇詭異,居然都是意外死亡就轧,警方通過查閱死者的電腦和手機(jī)证杭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妒御,“玉大人解愤,你說我怎么就攤上這事『趵颍” “怎么了送讲?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長惋啃。 經(jīng)常有香客問我哼鬓,道長,這世上最難降的妖魔是什么边灭? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任异希,我火速辦了婚禮,結(jié)果婚禮上绒瘦,老公的妹妹穿的比我還像新娘称簿。我一直安慰自己扣癣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布憨降。 她就那樣靜靜地躺著父虑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪授药。 梳的紋絲不亂的頭發(fā)上频轿,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機(jī)與錄音烁焙,去河邊找鬼航邢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛骄蝇,可吹牛的內(nèi)容都是我干的膳殷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼九火,長吁一口氣:“原來是場噩夢啊……” “哼赚窃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岔激,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤勒极,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后虑鼎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辱匿,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年炫彩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匾七。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡江兢,死狀恐怖昨忆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情杉允,我是刑警寧澤邑贴,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站叔磷,受9級特大地震影響拢驾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜世澜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一独旷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦嵌洼、人聲如沸案疲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽褐啡。三九已至,卻和暖如春鳖昌,著一層夾襖步出監(jiān)牢的瞬間备畦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工许昨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留懂盐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓糕档,卻偏偏與公主長得像莉恼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子速那,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容

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