nginx負(fù)載均衡宕機(jī)配置精編版_第1頁(yè)
nginx負(fù)載均衡宕機(jī)配置精編版_第2頁(yè)
nginx負(fù)載均衡宕機(jī)配置精編版_第3頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、nginx 負(fù)載均衡宕機(jī)配集團(tuán)企業(yè)公司編碼:(LL369&KKI 1269-TM2483-LUI12689-ITT289-(1)結(jié)論詳細(xì)描述 nginx記錄失效節(jié)點(diǎn)的6種狀態(tài)(timeout > connectrefuse> 500、502、503、504,后四項(xiàng) 5XX 需要配置 proxy_next_upstream中的狀態(tài)才可以生效)、失效節(jié)點(diǎn)的觸發(fā)條 件和節(jié)點(diǎn)的檢復(fù)條件、所有節(jié)點(diǎn)失效后nginx會(huì)進(jìn)行恢復(fù)并進(jìn)行重 新監(jiān)聽(tīng)。(2)Nginx?負(fù)載均衡方式介紹Nginx的負(fù)載均衡方式一共有4種:"(輪詢(xún)模式)、ip_hash、 fair、 url_hasho(

2、3)Ngxin負(fù)載均衡和相關(guān)反向代理配置內(nèi)容Nginx負(fù)載均衡和與容錯(cuò)相關(guān)的反向代理的配置。(4)獲取后端流程后端server的自動(dòng)容錯(cuò)流程圖。(5)測(cè)試環(huán)境和測(cè)試結(jié)果針對(duì)兒種錯(cuò)誤方式進(jìn)行自動(dòng)容錯(cuò)測(cè)試。2. 結(jié)論(1)nginx?判斷節(jié)點(diǎn)失效狀態(tài)Nginx默認(rèn)判斷失敗節(jié)點(diǎn)狀態(tài)以connectrefuse和timeout狀態(tài)為 準(zhǔn),不以HTTP錯(cuò)誤狀態(tài)進(jìn)行判斷失敗,因?yàn)镠TTP只要能返回狀態(tài)說(shuō)明 該節(jié)點(diǎn)還可以正常連接,所以nginx判斷其還是存活狀態(tài);除非添加了 proxy_next_upstream Jh 令設(shè)置對(duì) 404、502、503、504、500 和 timeout 等錯(cuò)滾進(jìn)行強(qiáng)到備機(jī)

3、處理,在next_upstream過(guò)程中,會(huì)對(duì)fails進(jìn)行 累加,如果備用機(jī)處理還是錯(cuò)誤則著接返回錯(cuò)誤信息(但404不進(jìn)行記 錄到錯(cuò)誤數(shù),如果不配置錯(cuò)誤狀態(tài)也不對(duì)其進(jìn)行錯(cuò)誤狀態(tài)記錄),綜 述,nginx 記錄錯(cuò)誤數(shù)量只記錄 timeout> connectrefuse> 502、500、 503、504這6種狀態(tài),timeout和connectrefuse是永遠(yuǎn)被記錄錯(cuò)誤狀 態(tài),而 502、500、503、504 只有在配置 proxy_next_upstream 后 nginx 才會(huì)記錄這4種HTTP錯(cuò)誤到fails中,當(dāng)fa訂s大于等于max_fails 時(shí),則該節(jié)點(diǎn)失效;(

4、2)nginx?處理節(jié)點(diǎn)失效和恢復(fù)的觸發(fā)條件nginx可以通過(guò)設(shè)置max_fails (最大嘗試失敗次數(shù))和 fail_timeout (失效時(shí)間,在到達(dá)最大嘗試失敗次數(shù)后,在 fail_timeout的時(shí)間范圍內(nèi)節(jié)點(diǎn)被置為失效,除非所有節(jié)點(diǎn)都失效,否 則該時(shí)間內(nèi),節(jié)點(diǎn)不進(jìn)行恢復(fù))對(duì)節(jié)點(diǎn)失敗的嘗試次數(shù)和失效時(shí)間進(jìn)行 設(shè)置,當(dāng)超過(guò)最大嘗試次數(shù)或失效時(shí)間未超過(guò)配置失效時(shí)間,則nginx 會(huì)對(duì)節(jié)點(diǎn)狀會(huì)置為失效狀態(tài),nginx不對(duì)該后端進(jìn)行連接,直到超過(guò)失效 時(shí)間或者所有節(jié)點(diǎn)都失效后,該節(jié)點(diǎn)重新置為有效,重新探測(cè);(3)所有節(jié)點(diǎn)失效后nginx將重新恢復(fù)所有節(jié)點(diǎn)進(jìn)行探測(cè)如果探測(cè)所有節(jié)點(diǎn)均失效,備機(jī)也為

5、失效時(shí),那么nginx會(huì)對(duì)所有節(jié) 點(diǎn)恢復(fù)為有效,重新嘗試探測(cè)有效節(jié)點(diǎn),如果探測(cè)到有效節(jié)點(diǎn)則返回正 確節(jié)點(diǎn)內(nèi)容,如果還是全部錯(cuò)誤,那么繼續(xù)探測(cè)下去,當(dāng)沒(méi)有正確信息 時(shí),節(jié)點(diǎn)失效時(shí)默認(rèn)返回狀態(tài)為502,但是下次訪問(wèn)節(jié)點(diǎn)時(shí)會(huì)繼續(xù)探測(cè)正 確節(jié)點(diǎn),直到找到正確的為止。3. nginx負(fù)載均衡Nginx的負(fù)載均衡方式一共有4種:rr (輪詢(xún)模式)、ip_hash、fair> url_hash;Nginx自帶的2種負(fù)載均衡為rr和ip_hash, fair和url_hash為第 三方的插件,nginx在不配置負(fù)載均衡的羅式下,默認(rèn)采用r;負(fù)載均衡 模式。RR負(fù)載均衡模式:每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不

6、同的后端服務(wù)器,如果超過(guò)了最大 失敗次數(shù)后(max_fails,默認(rèn)1),在失效時(shí)間內(nèi)(fail_timeout,默認(rèn) 10秒),該節(jié)點(diǎn)失效權(quán)重變?yōu)?,超過(guò)失效時(shí)間后,則恢復(fù)正常,或者全 部節(jié)點(diǎn)都為down后,那么將所有節(jié)點(diǎn)都恢復(fù)為有效繼續(xù)探測(cè),一般來(lái)說(shuō) rr可以根據(jù)權(quán)重來(lái)進(jìn)行均勻分配。Ip_hash負(fù)載均衡模式:每個(gè)請(qǐng)求按訪問(wèn)ip的hash結(jié)果分配,這樣每個(gè)訪客固定訪問(wèn)一個(gè)后 端服務(wù)器,可以解決session的問(wèn)題,但是ip_hash會(huì)造成負(fù)載不均, 有的服務(wù)請(qǐng)求接受多,有的服務(wù)請(qǐng)求接受少,用以不建議采用ip_hash 模式,session共享問(wèn)題可用后端服務(wù)的session共亨代替ngin

7、x的 ip_hashoFair (第三方)負(fù)載均衡模式:按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。 url_hash (第三方)負(fù)載均衡模式:W ip_hash算法類(lèi)似,是對(duì)每個(gè)請(qǐng)求按"1的hash結(jié)果分配,使每 個(gè)URL定向到一個(gè)同?一個(gè)后端服務(wù)器,但是也會(huì)造成分配不均的問(wèn)題, 這種模式后端服務(wù)器為緩存時(shí)比較好。4. Nginx?負(fù)載均衡配置Nginx的負(fù)載均衡采用的是upstream模塊其中默認(rèn)的采用的負(fù)載均衡模式是輪詢(xún)模式rr (round_robin),具體配置 如下:1)指令:ip_hash語(yǔ)法:ip_hash?默認(rèn)值: none?使用字段:upstream?

8、這個(gè)指令將基于客戶(hù)端連接的IP地址來(lái)分發(fā)請(qǐng)求。哈希的關(guān)鍵字是客戶(hù)端的C類(lèi)網(wǎng)絡(luò)地址,這個(gè)功能將保證這個(gè)客戶(hù)端請(qǐng) 求總是被轉(zhuǎn)發(fā)到一臺(tái)服務(wù)器上,但是如果這臺(tái)服務(wù)器不可用,那么請(qǐng)求 將轉(zhuǎn)發(fā)到另外的服務(wù)器上,這將保證某個(gè)客戶(hù)端有很大概率總是連接到 一臺(tái)服務(wù)器。無(wú)法將權(quán)重(weight)與ip.hash聯(lián)合使用來(lái)分發(fā)連接。如果有某臺(tái)服 務(wù)器不可用,你必須標(biāo)記其另“down”,如下例:upstreambackend ip_hash; 一server語(yǔ)法: servernameparameters默認(rèn)值: none?使用字段:upstream?指定后端服務(wù)器的名稱(chēng)和一些參數(shù),可以使用域名,IP,端口,或者 u

9、nixsocketo如果指定為域名,則首先將其解析為IP。weight二NUMBER-設(shè)置服務(wù)器權(quán)重,默認(rèn)為1。max_fails二NUMBER-在一定時(shí)間內(nèi)(這個(gè)時(shí)間在fail_timeout參數(shù)中設(shè)置)檢查這個(gè)服務(wù)器 是否可用時(shí)產(chǎn)生的最多失敗請(qǐng)求數(shù),默認(rèn)為1,將其設(shè)置為0可以關(guān)閉檢 查,這些錯(cuò)誤在 proxy_next_upstream 或 fastcgi_next_upstreain (404 錯(cuò)誤不會(huì)使max_fails增加)中定義。fail_timeout二TIME-在這個(gè)時(shí)間內(nèi)產(chǎn)生了 max_fa訂s所設(shè)置大小的失敗嘗試連接請(qǐng)求后這個(gè) 服務(wù)器可能不可用,同樣它指定了服務(wù)器不可用的時(shí)

10、間(在下一次嘗試 連接請(qǐng)求發(fā)起之前),默認(rèn)為10秒,fail_timeout與前端響應(yīng)時(shí)間沒(méi)有 直接關(guān)系,不過(guò)可以使用proxy_connect_timeout和 proxy_read_t imeout 來(lái)控制。down-標(biāo)記服務(wù)器處于離線狀態(tài),通常和ip_hash 起使用。backup-(0. 6. 7或更高)如果所有的非備份服務(wù)器都宕機(jī)或繁忙,則使用 本服務(wù)器(無(wú)法和ip_hash指令搭配使用)。示例配置upstreambackendserverunix:/tmp/backend3;注意:如果你只使用一臺(tái)上游服務(wù)器,nginx將設(shè)置一個(gè)內(nèi)置變量為1, 即max_fails和fail_tim

11、eout參數(shù)不會(huì)被處理。結(jié)果:如果nginx不能 連接至J丄游,請(qǐng)求將丟失。解決:使用多臺(tái)上游服務(wù)器。upstream語(yǔ)法:upstreamname默認(rèn)值: none?使用字段:http?這個(gè)字段設(shè)置一群服務(wù)器,可以將這個(gè)字段放在proxy_pass和 fastcgi_pass指令中作為一個(gè)單獨(dú)的實(shí)體,它們可以可以是監(jiān)聽(tīng)不同端 口的服務(wù)器,并且也可以是同時(shí)監(jiān)聽(tīng)TCP和Unixsocket的服務(wù)器。服務(wù)器可以指定不同的權(quán)重,默認(rèn)為1。示例配置upstreambackendserverweight二5;s ervermax_fails二3fail_t imeout=30s;serverunix:/

12、tmp/backend3;請(qǐng)求將按照輪詢(xún)的方式分發(fā)到后端服務(wù)器,但同時(shí)也會(huì)考慮權(quán)重。2)變量log_module中的變量來(lái)記錄志:log_formattiming' $remote_addr-$remote_user-$time_local$request'upstream_response_time$upstre8in_response_time''msec$msecrequest_time$request_time,;1og_formatup_head' $remote_addr-$remote_user _$tinie_local $request

13、,'upstream_http_content_type$upstream_http_content_type ; $upstream_addr前端服務(wù)嗨處理請(qǐng)求的服務(wù)器地址$upstream_cache_statusMISS?EXPIRED-expiredo請(qǐng)求被傳送到后端。UPDATING-expiredo 由于 proxy/fastcgi_cache_use_stale 正在更新, 將使用舊的應(yīng)答。一 一一STALE-expiredo 由于 proxy/fastcgi_cache_use_stale,后端將得到過(guò) 期的應(yīng)答。_HITJupstreamstatus前端服務(wù)廳的響應(yīng)狀

14、態(tài)。$upstream_response_time前端服務(wù)班的應(yīng)答時(shí)向,精確到毫秒,不同的應(yīng)答以逗號(hào)和冒號(hào)分開(kāi)。$upstream_h11 p_$HEADER隨意的 HTTP 協(xié)議頭,如:$upstream_http_host$upstream_http_host3)Proxy 指令:proxy_next_upstream語(yǔ)法 :proxy_next_upstreamerror timeout invalid_header http_500 http_502 http_503 http_5 04 http_404 j off默認(rèn)值: proxy_next_ups treamerror time

15、out?使用字段:http, server, location?確定在何種情況下請(qǐng)求將轉(zhuǎn)發(fā)到下一個(gè)服務(wù)器:error-在連接到一個(gè)服務(wù)器,發(fā)送一個(gè)請(qǐng)求,或者讀取應(yīng)答時(shí)發(fā)生錯(cuò) 誤。timeout-在連接到服務(wù)器,轉(zhuǎn)發(fā)請(qǐng)求或考讀取應(yīng)答時(shí)發(fā)生超時(shí)。 invalid_header-服務(wù)器返回空的或者錯(cuò)誤的應(yīng)答。http_500-服務(wù)器返回500代碼。http_502-服務(wù)器返|h! 502代碼。http_503-服務(wù)器返In 503代碼。http_504-服務(wù)器返凹504代碼。http_404-服務(wù)器返回404代碼。off-禁止轉(zhuǎn)發(fā)請(qǐng)求到下一臺(tái)服務(wù)器。轉(zhuǎn)發(fā)請(qǐng)求只發(fā)生在沒(méi)有數(shù)據(jù)傳遞到客戶(hù)端的過(guò)程中。其中

16、記錄到nginx后端錯(cuò)誤數(shù)量的有500、502、503、504、timeout, 404不記錄錯(cuò)誤。proxy_connect_timeout語(yǔ)法:proxy_connect_timeouttimeout_in_seconds?默認(rèn)值: proxy_connect_timeout60s?使用字段:http, server, location?指定一個(gè)連接到代理服務(wù)器的超時(shí)時(shí)間,單位為秒,需要注意的是這個(gè) 時(shí)間最好不要超過(guò)75秒。這個(gè)時(shí)間并不是指服務(wù)器傳回頁(yè)面的時(shí)間(這個(gè)時(shí)間由 proxy_read_timeout聲明)。如果你的前端代理服務(wù)器是正常運(yùn)行的, 但是迪到一些狀況(例如沒(méi)有足夠的線程

17、去處理請(qǐng)求,請(qǐng)求將被放在一 個(gè)連接池中延遲處理),那么這個(gè)聲明無(wú)助于服務(wù)器去建立連接。可以通過(guò)指定時(shí)間單位以免引起混亂,支持的時(shí)間單位有” s”(秒),“ms”(毫秒),“y” 奔),“M” (月),“w” (周),“d” (日),“h”(小 時(shí)),和? “m”(分鐘)。這個(gè)值不能大于597小時(shí)。proxy_read_t imeout語(yǔ)法:proxy_read_timeouttime?默認(rèn)值: proxy_read_timeout60s?使用字段:http, server, location?決定讀取后端服務(wù)器應(yīng)答的超時(shí)時(shí)間,單位為秒,它決定nginx將等待 多久時(shí)間來(lái)取得一個(gè)請(qǐng)求的應(yīng)答。超時(shí)

18、時(shí)間是指完成了兩次握手后并且 狀態(tài)為established的超時(shí)時(shí)間。相對(duì)于proxy_connect_timeout,這個(gè)時(shí)間可以撲捉到一臺(tái)將你的連接放 入連接池延遲處理并且沒(méi)有數(shù)據(jù)傳送的服務(wù)器,注意不要將此值設(shè)置太 低,某些情況下代理服務(wù)器將花很長(zhǎng)的時(shí)間來(lái)獲得頁(yè)面應(yīng)答(例如如當(dāng) 接收一個(gè)需要很多計(jì)算的報(bào)表時(shí)),當(dāng)然你可以在不同的location里面 設(shè)置不同的值??梢酝ㄟ^(guò)指定時(shí)間單位以免引起混亂,支持的時(shí)間單位有” s”(秒), “ms” (毫秒),“y” (年),“M” (月),“w” (周),“d” (日),“h” (小 時(shí)),和? “m”(分鐘)。這個(gè)值不能大于597小時(shí)。proxy

19、_send_t imeout語(yǔ)法: proxy_send_timeoutseconds?默認(rèn)值: proxy_send_timeout60s?使用字段:http, server, location?設(shè)置代理服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求的超時(shí)時(shí)間,單位為秒,同樣指完成兩次握手 后的時(shí)間,如果超過(guò)這個(gè)時(shí)間代理服務(wù)器沒(méi)有數(shù)據(jù)轉(zhuǎn)發(fā)到被代理服務(wù) 器,nginx將關(guān)閉連接??梢酝ㄟ^(guò)指定時(shí)間單位以免引起混亂,支持的時(shí)間單位有” s”(秒),“ms”(毫秒),“y” (年),“M”(月),“w”(周),“d” (El), “h”(小 時(shí)),和? “m” (分鐘)。這個(gè)值不能大于597小時(shí)。5. 獲取后端流程GET_RR_P

20、EER:通過(guò)RR算法獲取后端流程K:是判亦peer是否宕機(jī)和判斷失效狀態(tài)算法FAIL:嘗試次數(shù)用盡有,跳轉(zhuǎn)到失敗流程,如果有備機(jī),備機(jī)再?lài)L試監(jiān) 聽(tīng),如果監(jiān)聽(tīng)失敗則返回NGX_BUSY,成功則返回當(dāng)前狀態(tài)。6. 測(cè)試環(huán)境操作系統(tǒng):centosb. 6Cpu:16 核內(nèi)存:32gWeb?服務(wù)器:nginxWeb?應(yīng)用服務(wù)器:tomcat (2臺(tái))7. 測(cè)試結(jié)果設(shè)置tomcatl超時(shí)時(shí)間,造成超時(shí)狀態(tài)(總有一臺(tái)server為有效狀 態(tài)):Tomcatl 的 connectionTimeout?設(shè)置為-1,永遠(yuǎn)超時(shí),nginx 設(shè)置 tomcatl 和 tomcat2 權(quán)重為 10, tomcatl

21、的 max_fails 為 10, fa訂_timeout二120;在連接tomcatl的10次后,返回給nginx為10次 超時(shí),ngxin判斷tomcat 1為失效,然后將tomcatl超時(shí)時(shí)間恢復(fù)為 1000重新啟動(dòng)tomcatl,在這段時(shí)間內(nèi)nginx判斷tomcatl還是失效狀 態(tài),所以在2分鐘后,nginx繼續(xù)監(jiān)聽(tīng)到tomcatl正常后,那么nginx會(huì) 將tomcatl判斷為有效,將連接繼續(xù)均勻分配到2個(gè)tomcat上。 設(shè)置tomcatl連接數(shù)量,造成超時(shí)狀態(tài)(總有一臺(tái)server為有效狀 態(tài)):Tomcatl的線程數(shù)量設(shè)置為1, nginx設(shè)置tomcatl和tomcat2權(quán)

22、重為 10, tomcatl 的 max_fails 為 10, fail_timeout=120: 在連接 tomcatl 超過(guò)線程接受數(shù)量屁tomcat 1會(huì)返回購(gòu)時(shí)狀態(tài),在返回給nginxl0次超 時(shí)狀態(tài)后,ngxin判斷tomcatl為失效,然后將tomcat線程數(shù)量恢復(fù)為 700,重新啟動(dòng)tomcatl,在這段時(shí)間內(nèi)nginx判斷tomcatl還是失效狀 態(tài),超過(guò)2分鐘失效后,nginx繼續(xù)監(jiān)聽(tīng)到tomcatl正常后,那么nginx 會(huì)將tomcatl判斷為有效,將連接繼續(xù)均勻分配到2個(gè)tomcat上。 設(shè)置tomcat 1關(guān)閉,造成拒絕狀態(tài)(總有一臺(tái)server為有效狀態(tài)):Tomcatl 為關(guān)閉,nginx 設(shè)置 tomcatl 和 tomcat2 權(quán)重為 10, tomcatl 的 max_fails 為 10, fa訂_timeout=120:在連接 tomcat 1 的 10 次后, nginx 收到 tomcatl 返回 connectrefuse 狀態(tài),ngxin 判斷 tomca

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論