FastDFS蛋疼的集群和負載均衡(十二)之淺談負載均衡

diary_report.jpg

Interesting things

學習負載均衡技術埋泵。

What did you do today

什么是負載均衡?

一臺普通服務器的處理能力是有限的,假如能達到每秒幾萬個到幾十萬個請求徒欣,
但是卻無法再一秒鐘內處理上百萬個甚至更多的請求唧躲,但若能將多臺這樣的服務器組成一個系統(tǒng),并通過軟件技術將所有請求平均分配給所有服務器,那么這個系統(tǒng)就完全擁有每秒鐘處理幾百萬個甚至更多請求的能力满俗。這就是負載均衡最初的基礎設計思想。


基于DNS的負載均衡

DNS(Domain Name System作岖,域名系統(tǒng))唆垃。因特網上作為域名和ip地址相互映射的一個分布式數據庫,能夠使用戶更加方便的訪問互聯網痘儡,而不用去記住能夠被機器直接讀取的ip數串辕万。通過主機名,最終得到該主機名對應的ip地址的過程叫做域名解析沉删。

DNS協(xié)議運行在UDP協(xié)議之上渐尿,使用端口號53.

DNS負載均衡技術是最早的負載均衡解決方案,它是通過DNS服務中的隨機名字解析來實現的丑念,在DNS服務器中涡戳,可以為多個不同的地址配置同一名字,而最終查詢這個名字的客戶機將在解析這個名字時得到其中的一個地址脯倚。對于同一名字渔彰,不同的客戶會得到不同的地址嵌屎,他們也就訪問不同地址上的web服務器,從而達到負載均衡的目的恍涂。


image.png

優(yōu)點:實現簡單宝惰、實施容易,成本低再沧,適用于大多數TCP/IP應用尼夺。

缺點:
1.負載分配不均勻,DNS服務器將Http請求平均的分配到后臺的Web服務器上炒瘸,而不是考慮每個Web服務器當前的負載情況淤堵。如果后臺的Web服務器的配置和處理能力不同,最慢的Web服務器將成為系統(tǒng)的瓶頸顷扩,處理能力強的服務器不能充分發(fā)揮作用拐邪。
2.可靠性低,如果后臺的某臺web服務器出現故障隘截,DNS服務器仍然會把DNS請求分配到這條故障服務器上扎阶,導致不能響應客戶端。
3.變更生效時間長婶芭,如果更改DNS有可能造成相當一部分用戶不能享受到web服務东臀,并且由于DNS緩存的原因,所造成的后果要持續(xù)相當長一段時間(一般DNS的刷新周期約為24h)


基于四層交換技術的負載均衡

基于四層交換技術的負載均衡是通過報文中的目標地址和端口犀农,再加上負載均衡設備設置的服務器選擇方式惰赋,決定最終選擇的內部服務器與請求客戶端建立TCP連接,然后發(fā)送Client請求的數據井赌。

基于四層交換技術的負載均衡

Client發(fā)送請求至4層負載均衡器谤逼,4層負載均衡器根據負載策略把client發(fā)送的報文目標地址(原來是負載均衡設備的ip地址)修改為后端服務器ip地址,這樣client就可以直接跟后端服務器建立TCP連接并發(fā)送數據仇穗。

具有代表意義的產品:LVS流部、F5(硬件)
優(yōu)點:性能高、支持各種網絡協(xié)議纹坐。
缺點:對網絡依賴較大枝冀,負載智能化方面沒有7層負載好(比如不支持對url個性化負載),F5硬件性能很高耘子,但成本也高果漾,需要人民幣幾十萬,對于小公司就望而卻步谷誓。


基于七層交換技術的負載均衡

基于七層交換技術的負載均衡也稱內容交換绒障,也就是主要通過報文中的真正有意義的應用層內容,再加上負載均衡設備設置的服務器選擇方式捍歪,決定最終選擇的服務器户辱。


image.png

七層負載均衡服務器起了一個代理服務器的作用鸵钝,client要訪問WebServer要先與七層負載設備進行三次握手后建立TCP連接,把要訪問的報文信息發(fā)送給七層負載均衡設備庐镐。然后七層負載均衡設備再根據設備的均衡規(guī)則選擇特定的web服務器恩商,然后通過三次握手與此臺web服務器建立TCP連接,然后web服務器把需要的數據發(fā)送給七層負載均衡設備必逆,負載均衡設備再把數據發(fā)送給client怠堪。

具有代表意義的產品:Nginx、Apache
優(yōu)點:對網絡依賴少名眉,負載智能方案多(可以根據不同的url進行負載)
缺點:網絡協(xié)議有限粟矿,Nginx和Apache支持http負載,性能沒有4層負載高璧针。


Nginx優(yōu)缺點

優(yōu)點:

1.工作在網絡的7層之上嚷炉,可以針對http應用做一些分流策略,比如針對域名探橱,目錄結構,它的正則規(guī)則很強大靈活绘证,這也是它目前廣泛流行的主要原因之一隧膏,Nginx單憑這點可利用的場景就遠多于LVS了。
2.Nginx對網絡穩(wěn)定性的依賴非常小嚷那,理論上能ping通就能進行負載均衡功能胞枕,這個也是它的優(yōu)勢之一,相反LVS對網絡穩(wěn)定性依賴比較大魏宽。
3.Nginx安裝配置很簡單腐泻,測試起來很方便,它能把錯誤用日志打印出來队询。LVS的配置和測試就要花比較長的時間了派桩。
4.可以承擔高負載壓力且穩(wěn)定。
5.Nginx也可作為靜態(tài)網頁和圖片服務器蚌斩,這方面的性能很好铆惑,Nginx社區(qū)非常活躍送膳,第三方模塊也很多员魏。
6.Nginx可作為中層反向代理使用。
7.Nginx現在作為Web反向加速緩存越來越成熟了叠聋。
8.Nginx不僅僅是一款優(yōu)秀的負載均衡器/反向代理軟件撕阎,它同時也是功能強大的Web應用服務器。
9.Nginx可以通過端口檢測到服務器內部的故障碌补,比如根據服務器處理網頁返回的狀態(tài)碼虏束,超時等等名斟,并且會把返回錯誤的請求重新提交到另一個節(jié)點,不過其中的缺點就是不支持url來檢測魄眉。比如用戶正在上傳一個文件砰盐,而處理該上傳的節(jié)點剛好在上傳過程中出現故障,Nginx會把上傳切刀另一臺服務器重新處理坑律,而LVS就直接掛了岩梳。

缺點:

1.Nginx僅能支持http、https和Email協(xié)議晃择。
2.對后端服務器的健康檢查冀值,只能通過端口來檢測,不支持通過url來檢測宫屠。不支持session的直接保持列疗,但能通過ip_hash來解決。


LVS實現負載的三種方式

什么是LVS浪蹂?

LVS是Linux Virtual Server的簡寫抵栈,就是Linux虛擬服務器,是一個虛擬的服務器集群系統(tǒng)坤次。

LVS的優(yōu)點:

1.抗負載能力強古劲,是工作在網絡4層之上僅作分發(fā)之用,沒有流量的產生缰猴,這個特點決定了它在負載均衡軟件里的出色的性能产艾,對內存和cpu資源消耗比較低。
2.工作穩(wěn)定滑绒,因為其本身抗負載能力很強闷堡,自身有完整的雙機熱備方案,比如LVS+Keepalived.
3.無流量疑故,LVS只分發(fā)請求杠览,而流量并不從它本身出去,這點保證了均衡器IO的性能不會受到大流量的影響焰扳。
4.應用范圍比較廣倦零,因為LVS工作在4層,所以它幾乎可以對所有應用做負載均衡吨悍,包括http扫茅、數據庫、在線聊天室育瓜。
5.配置比較低葫隙,這是一個缺點也是一個優(yōu)點,因為沒有太多配置的東西躏仇,所以并不需要太多接觸恋脚,大大減少了人為出錯的幾率腺办。

LVS缺點:

1.軟件本身不支持正則表達式處理,不能做動靜分離糟描。而現在很多網站在這方面都有較強的需求怀喉,這個是Nginx+Keepalived的優(yōu)勢所在。
2.如果是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較復雜了船响,相對而言躬拢,Nginx+Keepalived就簡單多了。

LVS中的調度方法有三種:NAT(NetWork Address Translation 網絡地址轉換)见间、TUN(tunnel隧道)聊闯、DR(direct route直接路由)

LVS-DR模式
請求由LVS接受,由真實提供服務的RealServer直接返回用戶米诉,返回的時候不經過LVS菱蔬。
DR模式需要LVS服務器和RealServer綁定同一個vip,一個請求過來時史侣,LVS只需要將網絡幀的MAC地址修改為某一臺RealServer的MAC地址拴泌,該包就會被轉發(fā)到相應的RealServer處理。注意此時的源ip和目標ip都沒變抵窒,RealServer收到LVS轉發(fā)來的包弛针,發(fā)現MAC是自己的,發(fā)現IP也是自己的李皇,于是這個包被合法的接受,而當RealServer返回響應時宙枷,只要直接向源ip也就是用戶ip返回即可掉房,不再經過LVS。
DR模式慰丛,LVS接受請求輸入卓囚,將請求轉發(fā)給RealServer,由RealServer輸出響應給用戶诅病,性能非常高哪亿。但是它美中不足的是要求負載均衡器與RealServer處于同一物理段。


image.png

LVS-NAT模式
NAT是一種外網和內網地址映射的技術贤笆。NAT模式下蝇棉,LVS需要作為RealServer的網關,當網絡包到達LVS時芥永,LVS要做DNAT(目標地址轉換)篡殷,將目標ip改為RealServer的ip。RealServer接收到包之后埋涧,處理完板辽,返回響應時奇瘦,RealServer的包通過LVS中轉,LVS會做SNAT(源地址轉換)劲弦,將包的源地址改為vip耳标,對于客戶端只知道是LVS直接返回給它的。
NAT模式請求和響應都需要經過LVS邑跪,性能沒有DR模式好次坡。


image.png

LVS-TUN模式
TUN模式是通過ip隧道技術減輕LVS調度服務器的壓力,很多internet服務的請求包很短小呀袱,而響應包通常很大贸毕,負載均衡器只負責將請求包分發(fā)給物理服務器,而物理服務器將響應包直接分發(fā)給用戶夜赵。所以負載均衡器能處理很巨大的請求量明棍。比NAT模式要高的很多,比DR模式的優(yōu)點是不限制負載均衡器與RealServer處于同一物理段上寇僧。但是它的不足需要所有的服務器(LVS,RealServer)支持“IP Tunneling”協(xié)議摊腋。


image.png

Summary

擼了一遍負載均衡的理論,美滋滋嘁傀。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末兴蒸,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子细办,更是在濱河造成了極大的恐慌橙凳,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笑撞,死亡現場離奇詭異岛啸,居然都是意外死亡,警方通過查閱死者的電腦和手機茴肥,發(fā)現死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門坚踩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瓤狐,你說我怎么就攤上這事瞬铸。” “怎么了础锐?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵嗓节,是天一觀的道長。 經常有香客問我郁稍,道長赦政,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮恢着,結果婚禮上桐愉,老公的妹妹穿的比我還像新娘。我一直安慰自己掰派,他們只是感情好从诲,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著靡羡,像睡著了一般系洛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上略步,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天描扯,我揣著相機與錄音,去河邊找鬼趟薄。 笑死绽诚,一個胖子當著我的面吹牛,可吹牛的內容都是我干的杭煎。 我是一名探鬼主播恩够,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼羡铲!你這毒婦竟也來了蜂桶?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤也切,失蹤者是張志新(化名)和其女友劉穎扑媚,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體雷恃,經...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡钦购,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了褂萧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡葵萎,死狀恐怖导犹,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情羡忘,我是刑警寧澤谎痢,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站卷雕,受9級特大地震影響节猿,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一滨嘱、第九天 我趴在偏房一處隱蔽的房頂上張望峰鄙。 院中可真熱鬧,春花似錦太雨、人聲如沸吟榴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吩翻。三九已至,卻和暖如春锥咸,著一層夾襖步出監(jiān)牢的瞬間狭瞎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工搏予, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留熊锭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓缔刹,卻偏偏與公主長得像球涛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子校镐,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359