nginx如何實(shí)現(xiàn)負(fù)載均衡

大家好淫痰,我是IT修真院深圳分院第4期的學(xué)員病瞳,一枚正直純潔善良的JAVA程序員

今天給大家分享一下践惑,修真院官網(wǎng)JAVA任務(wù)六慎颗,深度思考中的知識(shí)點(diǎn)——nginx如何實(shí)現(xiàn)負(fù)載均衡乡恕。


1.背景介紹

什么是nginx

Nginx是俄羅斯人編寫的十分輕量級(jí)的HTTP服務(wù)器,Nginx,它的發(fā)音為“engine X”俯萎,是一個(gè)高性能的HTTP和反向代理服務(wù)器傲宜,同時(shí)也是一個(gè)IMAP/POP3/SMTP 代理服務(wù)器。Nginx是由俄羅斯人 Igor Sysoev為俄羅斯訪問(wèn)量第二的 Rambler.ru站點(diǎn)開發(fā)的夫啊,它已經(jīng)在該站點(diǎn)運(yùn)行超過(guò)兩年半了蛋哭。Igor Sysoev在建立的項(xiàng)目時(shí),使用基于BSD許可。

nginx主要為優(yōu)化性能涮母,是一種反向代理服谆趾、負(fù)載均衡務(wù)器躁愿。有報(bào)告表明能支持高達(dá) 50,000 個(gè)并發(fā)連接數(shù)。


工作原理

Nginx由內(nèi)核和模塊組成沪蓬,完成工作是通過(guò)查找配置文件將客戶端請(qǐng)求映射到一個(gè)location block(location是用于URL匹配的命令)彤钟,location配置的命令會(huì)啟動(dòng)不同模塊完成工作逸雹。? ? ? Nginx模塊分為核心模塊园欣,基礎(chǔ)模塊和第三方模塊日矫。

核心模塊:HTTP模塊、EVENT模塊(事件)、MAIL模塊褐奴。

基礎(chǔ)模塊:HTTP Access模塊唯沮、HTTP FastCGI模塊萌庆、HTTP Proxy模塊、HTTP Rewrite模塊彭则。

第三方模塊:HTTP Upstream Request Hash模塊瓦胎、Notice模塊、HTTP Access Key模塊漫蛔。


性能優(yōu)勢(shì)

web服務(wù)器,處理靜態(tài)文件、索引文件以及自動(dòng)索引效率高陪拘。

代理服務(wù)器,快速高效反向代理纤壁,提升網(wǎng)站性能左刽。

負(fù)載均衡器,內(nèi)部支持Rails和PHP,也可支持HTTP代理服務(wù)器酌媒,對(duì)外進(jìn)行服務(wù)欠痴。同時(shí)支持簡(jiǎn)單容錯(cuò)和利用算法進(jìn)行負(fù)載均衡。

性能方面秒咨,Nginx專門為性能設(shè)計(jì)喇辽,實(shí)現(xiàn)注重效率。采用Poll模型雨席,可以支持更多的并發(fā)連接菩咨,并在大并發(fā)時(shí)占用很低內(nèi)存。

穩(wěn)定性方面,采用分階段資源分配技術(shù)抽米,使CPU資源和內(nèi)存占用率低特占。當(dāng)遇到訪問(wèn)的峰值,或者有人惡意發(fā)起慢速連接時(shí)缨硝,不會(huì)導(dǎo)致像其他HTTP服務(wù)器因耗盡服務(wù)器物理內(nèi)存而失去響應(yīng)摩钙,導(dǎo)致只能重啟服務(wù)器。

高可用性方面查辩,支持熱部署胖笛,啟動(dòng)迅速,可以做到7*24不間斷運(yùn)行宜岛,即使運(yùn)行數(shù)個(gè)月也不需要重新啟動(dòng)长踊。你還能夠在不間斷服務(wù)的情況下,對(duì)軟件版本進(jìn)行進(jìn)行升級(jí)萍倡。


一身弊、nginx負(fù)載均衡原理

單從字面上的意思來(lái)理解就可以解釋N臺(tái)服務(wù)器平均分擔(dān)負(fù)載,不會(huì)因?yàn)槟撑_(tái)服務(wù)器負(fù)載高宕機(jī)而某臺(tái)服務(wù)器閑置的情況列敲。那么負(fù)載均衡的前提就是要有多臺(tái)服務(wù)器才能實(shí)現(xiàn)阱佛,也就是兩臺(tái)以上即可。

我覺(jué)得他像是一個(gè)中轉(zhuǎn)站戴而,在形式上省略了客戶端輸入端口凑术,而他在幫我們填入端口號(hào)時(shí)會(huì)選擇不同的端口號(hào),只要你有設(shè)置所意,就像一個(gè)一個(gè)中轉(zhuǎn)站幫我們轉(zhuǎn)入地址淮逊。


2.知識(shí)剖析

nginx是通過(guò)upstream模塊來(lái)進(jìn)行負(fù)載均衡

upstream具有數(shù)據(jù)轉(zhuǎn)發(fā)功能,為nginx提供了跨越單機(jī)的橫向處理能力扶踊,使nginx擺脫只能為終端節(jié)點(diǎn)提供單一功能的限制泄鹏,而使它具備了網(wǎng)路應(yīng)用級(jí)別的拆分、封裝和整合的戰(zhàn)略功能秧耗。在云模型大行其道的今天备籽,數(shù)據(jù)轉(zhuǎn)發(fā)是nginx有能力構(gòu)建一個(gè)網(wǎng)絡(luò)應(yīng)用的關(guān)鍵組件。當(dāng)然分井,鑒于開發(fā)成本的問(wèn)題车猬,一個(gè)網(wǎng)絡(luò)應(yīng)用的關(guān)鍵組件一開始往往會(huì)采用高級(jí)編程語(yǔ)言開發(fā)。但是當(dāng)系統(tǒng)到達(dá)一定規(guī)模杂抽,并且需要更重視性能的時(shí)候诈唬,為了達(dá)到所要求的性能目標(biāo),高級(jí)語(yǔ)言開發(fā)出的組件必須進(jìn)行結(jié)構(gòu)化修改缩麸。此時(shí)铸磅,對(duì)于修改代價(jià)而言,nginx的upstream模塊呈現(xiàn)出極大的吸引力,因?yàn)樗焐涂煸淖小W鳛楦綆Т瞪ⅲ琻ginx的配置系統(tǒng)提供的層次化和松耦合使得系統(tǒng)的擴(kuò)展性也達(dá)到比較高的程度。


如何使用upstream進(jìn)行負(fù)載均衡

1.首先需要在服務(wù)器上生成兩個(gè)項(xiàng)目地點(diǎn)八酒,比如安裝兩個(gè)tomcat空民,各自部署一個(gè)項(xiàng)目。

2.更改nginx配置文件羞迷。添加upstream模塊界轩,在location中的pass改為upstream定義的字段。


tomcat部署兩個(gè)項(xiàng)目流程

要點(diǎn)為要在/etc/profile中輸入第二個(gè)tomcat的位置

然后再第二個(gè)是要更改catalina.sh中的路徑衔瓮,要export上面配置文件的地址浊猾,不然這個(gè)腳本會(huì)一直操作第一個(gè)tomcat,第二個(gè)就無(wú)法部署热鞍。


nginx負(fù)載均衡中的屬性

1.輪詢(默認(rèn))按時(shí)間順序分配葫慎,即如下

2.指定權(quán)重 weight和訪問(wèn)的成功率成正比

在端口后添加weight=n,這樣就能設(shè)置訪問(wèn)權(quán)重薇宠,n越大訪問(wèn)幾率越高偷办。

3.IP綁定 ip_hash 根據(jù)訪問(wèn)ip的hash結(jié)構(gòu)分配,這樣每個(gè)客戶端訪問(wèn)剃個(gè)服務(wù)器可以解決session的問(wèn)題

在upstream中另起一行輸入ip_hash澄港,這樣nginx會(huì)根據(jù)ip地址分配椒涯。

還有端口后添加的down表示當(dāng)前的server不參加分配,backup表示上面的server都掛了后用這個(gè)慢睡。


視頻


undefined_騰訊視頻

7.參考文獻(xiàn)


網(wǎng)絡(luò)

8.更多討論

歡迎大家交流和討論

鳴謝

感謝大家觀看

BY : 魏振恒

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逐工,一起剝皮案震驚了整個(gè)濱河市铡溪,隨后出現(xiàn)的幾起案子漂辐,更是在濱河造成了極大的恐慌,老刑警劉巖棕硫,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件髓涯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡哈扮,警方通過(guò)查閱死者的電腦和手機(jī)纬纪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)滑肉,“玉大人包各,你說(shuō)我怎么就攤上這事“忻恚” “怎么了问畅?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我护姆,道長(zhǎng)矾端,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任卵皂,我火速辦了婚禮秩铆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘灯变。我一直安慰自己殴玛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布添祸。 她就那樣靜靜地躺著族阅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膝捞。 梳的紋絲不亂的頭發(fā)上坦刀,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音蔬咬,去河邊找鬼鲤遥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛林艘,可吹牛的內(nèi)容都是我干的盖奈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼狐援,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钢坦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起啥酱,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤爹凹,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后镶殷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體禾酱,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年绘趋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颤陶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陷遮,死狀恐怖滓走,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情帽馋,我是刑警寧澤搅方,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布疫粥,位于F島的核電站,受9級(jí)特大地震影響腰懂,放射性物質(zhì)發(fā)生泄漏梗逮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一绣溜、第九天 我趴在偏房一處隱蔽的房頂上張望慷彤。 院中可真熱鬧,春花似錦怖喻、人聲如沸底哗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)跋选。三九已至,卻和暖如春哗蜈,著一層夾襖步出監(jiān)牢的瞬間前标,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工距潘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留炼列,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓音比,卻偏偏與公主長(zhǎng)得像俭尖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子洞翩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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