應(yīng)用服務(wù)器集群的伸縮性設(shè)計(jì)(負(fù)載均衡)

應(yīng)用服務(wù)器應(yīng)該設(shè)計(jì)成無狀態(tài)的,也就是說應(yīng)用服務(wù)器不存儲請求上下文信息嗦玖,如果將部署有相同的應(yīng)用服務(wù)器組成一個集群,每次用戶的請求都可以發(fā)送到集群中任意一臺服務(wù)器上去處理,任何一臺服務(wù)器的處理結(jié)果都是相同的谴麦。這樣只要能將用戶請求按照某種規(guī)則分發(fā)到集群中的不同服務(wù)器上,就可以構(gòu)成一個服務(wù)器集群了伸头,每個用戶的請求都可能落在不同服務(wù)器上匾效。

負(fù)載均衡實(shí)現(xiàn)應(yīng)用服務(wù)器伸縮性

負(fù)載均衡服務(wù)器:一種 HTTP 請求分發(fā)裝置,可以感知或者可以配置集群的服務(wù)器數(shù)量恤磷,可以及時發(fā)現(xiàn)集群中新上線或者下線的服務(wù)器面哼,并能向新上線的服務(wù)器分發(fā)請求,停止向已下線的服務(wù)器分發(fā)請求扫步,這樣負(fù)載均衡服務(wù)器就實(shí)現(xiàn)了應(yīng)用服務(wù)器集群的伸縮性了魔策。

HTTP 重定向負(fù)載均衡

HTTP 重定向服務(wù)器是一臺普通的應(yīng)用服務(wù)器,其唯一的功能就是根據(jù)用戶的 HTTP 請求計(jì)算一臺真實(shí)的服務(wù)器地址河胎,并將真實(shí)的服務(wù)器地址寫入 HTTP 重定向響應(yīng)中(響應(yīng)狀態(tài)嗎 302)返回給瀏覽器闯袒,然后瀏覽器再自動請求真實(shí)的服務(wù)器。

HTTP 重定向負(fù)載均衡原理

在圖中仿粹,瀏覽器請求訪問域名www.mysite.com搁吓,DNS 服務(wù)器解析得到 IP 地址是 114.100.80.10,即 HTTP 重定向服務(wù)器的 IP 地址吭历。然后瀏覽器通過 IP 地址 114.100.80.10 訪問 HTTP 重定向負(fù)載均衡服務(wù)器后堕仔,服務(wù)器根據(jù)某種負(fù)載均衡算法計(jì)算獲得一臺實(shí)際物理服務(wù)器的地址(114.100.80.3),構(gòu)造一個包含該實(shí)際物理服務(wù)器地址的重定向響應(yīng)返回給瀏覽器晌区,瀏覽器自動重新請求實(shí)際物理服務(wù)器的 IP 地址 114.100.80.3摩骨,完成訪問通贞。

這種負(fù)載均衡方案的優(yōu)點(diǎn)是比較簡單,缺點(diǎn)是瀏覽器需要每次請求兩次服務(wù)器才能拿完成一次訪問恼五,性能較差昌罩;重定向服務(wù)器自身的處理能力有可能成為瓶頸,整個集群的伸縮性規(guī)模有限灾馒;使用 HTTP 302 響應(yīng)嗎重定向茎用,可能使搜索引擎判斷為 SEO 作弊,降低搜索排名睬罗。因此這種方案在實(shí)際使用中并不見多轨功。

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

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

在 DNS 服務(wù)器中配置多個 A 記錄,如:www.mysite.com IN A 114.100.80.1容达、www.mysite.com IN A 114.100.80.2古涧、www.mysite.com IN A 114.100.80.3。

每次域名解析請求都會根據(jù)負(fù)載均衡算法計(jì)算一個不同的 IP 地址返回花盐,這樣 A 記錄中配置的多個服務(wù)器就構(gòu)成一個集群羡滑,并可以實(shí)現(xiàn)負(fù)載均衡算芯。圖中的瀏覽器請求解析域名www.mysite.com,DNS 根據(jù) A 記錄和負(fù)載均衡算法計(jì)算得到一個 IP 地址 114.100.80.3熙揍,并返回給瀏覽器;瀏覽器根據(jù)該 IP 地址诈嘿,訪問真實(shí)物理服務(wù)器 114.100.80.3。

  • 優(yōu)點(diǎn)
    將負(fù)載均衡的工作交給了 DNS削葱,省掉了網(wǎng)站管理維護(hù)負(fù)載均衡服務(wù)器的麻煩,同時許多 DNS 還支持基于地理位置的域名解析析砸,即會將域名解析成距離用戶地理最近的一個服務(wù)器地址,這樣就可以加快用戶訪問速度首繁,改善性能作郭。
  • 缺點(diǎn)
    目前的 DNS 是多級解析,每一級 DNS 都可能緩存 A 記錄弦疮,但下線某臺服務(wù)器時,即使修改了 DNS 的 A 記錄咏尝,要使其生效也需要較長時間,這段時間编检,DNS 依然會將域名解析到已經(jīng)下線的服務(wù)器,導(dǎo)致用戶訪問失敗厕怜,而且 DNS 負(fù)載均衡的控制權(quán)在域名服務(wù)商那里,網(wǎng)站無法對其做更多的改善和針對于自己網(wǎng)站的一些修改粥航。

事實(shí)上谤专,大型網(wǎng)站總是部分使用 DNS 域名解析,利用域名解析作為第一級負(fù)載均衡手段置侍,即域名解析得到的一組服務(wù)器并不是實(shí)際提供 Web 服務(wù)的物理服務(wù)器蜡坊,而是同樣提供負(fù)載均衡服務(wù)的內(nèi)部服務(wù)器,這組內(nèi)部負(fù)載均衡服務(wù)器再進(jìn)行負(fù)載均衡秕衙,再將請求分發(fā)到真實(shí)的 Web 服務(wù)器上季研。

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

利用反向代理緩存資源匀谣,可以改善網(wǎng)站性能铅匹。實(shí)際上短条,在部署位置上礼殊,反向代理服務(wù)器處于 Web 服務(wù)器前面(這樣才可能緩存 Web 響應(yīng)针史,加速訪問),這個位置也正好是負(fù)載均衡服務(wù)器所在的位置啄枕,所以大多數(shù)的反向代理服務(wù)器同時提供了負(fù)載均衡的功能。Web 服務(wù)器處理完的響應(yīng)也需要通過反向代理服務(wù)器返回給用戶近忙。由于 Web 服務(wù)器不直接對外提供訪問,因此 Web 服務(wù)器不需要使用外部 IP 地址及舍,而反向代理服務(wù)器則需要配置雙網(wǎng)卡和內(nèi)部外部兩套 IP 地址。

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

圖中咐柜,瀏覽器訪問請求的地址是反向代理服務(wù)器的地址 114.100.80.10攘残,反向代理服務(wù)器收到請求后拙友,根據(jù)負(fù)載均衡算法計(jì)算得到一臺真實(shí)物理服務(wù)器的地址 10.0.0.3歼郭,并將請求轉(zhuǎn)發(fā)給服務(wù)器。10.0.0.3 處理完請求后將響應(yīng)返回給反向代理服務(wù)器牍蜂,反向代理服務(wù)器再將該響應(yīng)返回給用戶泰涂。

  • 優(yōu)點(diǎn)
    由于反向代理服務(wù)器轉(zhuǎn)發(fā)請求在 HTTP 協(xié)議層面,因此也叫應(yīng)用層負(fù)載均衡逼蒙,其優(yōu)點(diǎn)是和反向代理服務(wù)器功能集成在一起,部署簡單僵井。
  • 缺點(diǎn)
    反向代理服務(wù)器是所有請求和響應(yīng)的中轉(zhuǎn)站驳棱,其性能可能會成為瓶頸

IP 負(fù)載均衡

在網(wǎng)絡(luò)層通過修改請求目的地址進(jìn)行負(fù)載均衡,如下圖


IP 負(fù)載均衡

用戶請求數(shù)據(jù)包到達(dá)負(fù)載均衡服務(wù)器 114.100.80.10 后,負(fù)載均衡服務(wù)器在操作系統(tǒng)內(nèi)核進(jìn)程獲取網(wǎng)絡(luò)數(shù)據(jù)包罚渐,根據(jù)負(fù)載均衡算法計(jì)算得到一臺真實(shí) Web 服務(wù)器 10.0.0.1驯妄,然后將數(shù)據(jù)目的 IP 修改為 10.0.0.1,不需要通過用戶進(jìn)程處理青扔。真實(shí)的 Web 應(yīng)用服務(wù)器處理完成后翩伪,響應(yīng)數(shù)據(jù)包回到負(fù)載均衡服務(wù)器谈息,負(fù)載均衡服務(wù)器再將數(shù)據(jù)包源地址修改為自身的 IP 地址(114.100.80.10)發(fā)送給用戶瀏覽器。

這里關(guān)鍵在于真實(shí)物理 Web 服務(wù)器響應(yīng)數(shù)據(jù)包如何返回給負(fù)載均衡服務(wù)器轻姿。一種方案是負(fù)載均衡服務(wù)器在修改目的 IP 地址的同時修改源地址逻炊,將數(shù)據(jù)包源地址設(shè)為自身 IP,即源地址轉(zhuǎn)換(SNAT)豹休,這樣 Web 服務(wù)器的響應(yīng)會再回到負(fù)載均衡服務(wù)器桨吊;另一種方案就是將負(fù)載均衡服務(wù)器同時作為真實(shí)物理服務(wù)器集群的網(wǎng)關(guān)服務(wù)器,這樣所有響應(yīng)數(shù)據(jù)都會到達(dá)負(fù)載均衡服務(wù)器屏积。

  • 優(yōu)點(diǎn)
    IP 負(fù)載均衡在內(nèi)核進(jìn)程完成數(shù)據(jù)分發(fā),較反向代理負(fù)載均衡(在應(yīng)用程序中分發(fā)數(shù)據(jù))有更好的處理性能炊林。
  • 缺點(diǎn)
    所有請求響應(yīng)都需要經(jīng)過負(fù)載均衡服務(wù)器,集群的最大響應(yīng)數(shù)據(jù)吞吐量不得不受制于負(fù)載均衡服務(wù)器網(wǎng)卡帶寬独榴,對于提供下載服務(wù)或者視頻服務(wù)等需要傳輸大量數(shù)據(jù)的網(wǎng)站而言奕枝,難以滿足需求。(因?yàn)轫憫?yīng)數(shù)據(jù)包的源 IP 地址是內(nèi)網(wǎng)地址不可訪問外網(wǎng)症歇,所以數(shù)據(jù)包必須要經(jīng)過負(fù)載均衡服務(wù)器轉(zhuǎn)發(fā)給外網(wǎng))

能不能讓負(fù)載均衡服務(wù)器只分發(fā)請求谭梗,而使響應(yīng)數(shù)據(jù)從真實(shí)物理服務(wù)器直接返回給用戶呢?

數(shù)據(jù)鏈路層負(fù)載均衡

數(shù)據(jù)鏈路層負(fù)載均衡是指在通信協(xié)議的數(shù)據(jù)鏈路層修改 mac 地址進(jìn)行負(fù)載均衡激捏。

數(shù)據(jù)鏈路層負(fù)載均衡

這種數(shù)據(jù)傳輸方式又稱作三角傳輸模式远舅,負(fù)載均衡數(shù)據(jù)分發(fā)過程中不修改 IP 地址痕钢,只修改目的 mac 地址序六,通過配置真實(shí)物理服務(wù)器集群所有機(jī)器 IP 和負(fù)載均衡服務(wù)器 IP 地址一致,從而達(dá)到不修改數(shù)據(jù)包的源地址和目的地址就可以進(jìn)行數(shù)據(jù)分發(fā)的目的课梳,由于實(shí)際處理請求的真實(shí)物理服務(wù)器 IP 和數(shù)據(jù)請求目的 IP 一致余佃,不需要通過負(fù)載均衡服務(wù)器進(jìn)行地址轉(zhuǎn)換,可將響應(yīng)數(shù)據(jù)包直接返回給用戶瀏覽器爆土,避免負(fù)載均衡服務(wù)器網(wǎng)卡帶寬成為瓶頸。這種負(fù)載均衡方式又稱作直接路由方式(DR)氧猬。

在上圖中坏瘩,用戶請求到達(dá)負(fù)載均衡服務(wù)器后,負(fù)載均衡服務(wù)器將請求數(shù)據(jù)的目的 mac 地址修改為 00:0c:29:d2妄均,并不修改數(shù)據(jù)包目標(biāo) IP 地址哪自,由于 Web 服務(wù)器集群所有服務(wù)器的虛擬 IP 地址都和負(fù)載均衡服務(wù)器的 IP 地址相同,因此數(shù)據(jù)可以正常傳輸?shù)?mac 地址 00:0c:29:d2 對應(yīng)的服務(wù)器壤巷,該服務(wù)器處理完成后發(fā)送響應(yīng)數(shù)據(jù)到網(wǎng)站的網(wǎng)關(guān)服務(wù)器,網(wǎng)關(guān)服務(wù)器直接將該數(shù)據(jù)包發(fā)送到用戶瀏覽器(通過互聯(lián)網(wǎng))寄症,響應(yīng)數(shù)據(jù)不需要通過負(fù)載均衡服務(wù)器矩动。

使用三角傳輸模式的鏈路層負(fù)載均衡是目前大型網(wǎng)站所使用的最廣的一種負(fù)載均衡手段。在 linux 平臺上最好的鏈路層負(fù)載均衡開源產(chǎn)品是 LVS(linux virtual server)。

負(fù)載均衡算法

負(fù)載均衡服務(wù)器的實(shí)現(xiàn)分為兩部分:

  1. 根據(jù)負(fù)載均衡算法和 Web 服務(wù)器列表計(jì)算得到集群中一臺 Web 服務(wù)器的地址檀训;
  2. 將請求數(shù)據(jù)分發(fā)到該地址對應(yīng)的 Web 服務(wù)器上。

具體的負(fù)載均衡算法有以下幾種:

  1. 輪詢
    所有請求被依次分發(fā)到每臺應(yīng)用服務(wù)器上峻凫,即每臺服務(wù)器需要處理的請求數(shù)目都相同,適合于所有服務(wù)器硬件都相同的場景譬胎。

  2. 加權(quán)輪詢
    根據(jù)應(yīng)用服務(wù)器硬件性能的情況命锄,在輪詢的基礎(chǔ)上,按照配置的權(quán)重將請求分發(fā)到每個服務(wù)器脐恩,高性能的服務(wù)器能分配更多的請求。

  3. 隨機(jī)
    請求被隨機(jī)分配到各個應(yīng)用服務(wù)器驶冒。可以根據(jù)應(yīng)用服務(wù)器硬件配置不同加權(quán)隨機(jī)算法崇猫。

  4. 最少連接
    記錄每個應(yīng)用服務(wù)器正在處理的連接數(shù)(請求數(shù))需忿,將新的請求分發(fā)到最少連接的服務(wù)器上。同樣可以加權(quán)贴谎。

  5. 源地址散列
    根據(jù)請求來源的 IP 地址進(jìn)行 Hash 計(jì)算擅这,得到應(yīng)用服務(wù)器,這樣來自同一 IP 地址的請求總在同一個服務(wù)器上處理仲翎,該請求的上下文信息可以存儲在這臺服務(wù)器上,在一個會話周期內(nèi)重復(fù)使用鲫构,從而實(shí)現(xiàn)會話黏滯玫坛。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市炕吸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赫模,老刑警劉巖瀑罗,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異劣像,居然都是意外死亡停忿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門吮铭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颅停,“玉大人,你說我怎么就攤上這事癞揉。” “怎么了柏肪?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵芥牌,是天一觀的道長。 經(jīng)常有香客問我谬俄,道長弃理,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任钥勋,我火速辦了婚禮,結(jié)果婚禮上算灸,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好谢翎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布沐旨。 她就那樣靜靜地躺著,像睡著了一般褒侧。 火紅的嫁衣襯著肌膚如雪谊迄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天歪脏,我揣著相機(jī)與錄音粮呢,去河邊找鬼。 笑死啄寡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的懒浮。 我是一名探鬼主播姻乓,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赖草!你這毒婦竟也來了剪个?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤乎折,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后骂澄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡磨镶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年琳猫,在試婚紗的時候發(fā)現(xiàn)自己被綠了私痹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡账千,死狀恐怖暗膜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情桦山,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布会放,位于F島的核電站钉凌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏矢沿。R本人自食惡果不足惜酸纲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望栽惶。 院中可真熱鬧,春花似錦外厂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春玖像,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捐寥。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工握恳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乡洼。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓束昵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锹雏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

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

  • 【摘要】 面對大量用戶訪問、高并發(fā)請求佣耐,海量數(shù)據(jù),可以使用高性能的服務(wù)器兼砖、大型數(shù)據(jù)庫选侨,存儲設(shè)備然走,高性能Web服務(wù)器...
    靜修佛緣閱讀 4,561評論 0 24
  • 一芍瑞、什么是負(fù)載均衡 首先我們先介紹一下什么是負(fù)載均衡:負(fù)載平衡(Load balancing)是一種計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)...
    小流江海閱讀 1,008評論 0 2
  • 可伸縮性架構(gòu)指的是:不改變網(wǎng)站的軟硬件設(shè)計(jì),只通過改變部署的服務(wù)器數(shù)量就可以擴(kuò)大或縮小網(wǎng)站的服務(wù)處理能力洪己。 大型網(wǎng)...
    deniro閱讀 2,713評論 4 52
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理竟贯,服務(wù)發(fā)現(xiàn),斷路器拱镐,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 十字街頭 我們就此兩分散 一個向南 一個往北 你一路前行 我獨(dú)歸故里 剛說不懷念 淚兒串串 你的解決是我的淚鎖遺憾
    黃小邪師傅閱讀 264評論 0 1