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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

12、tmp/backend3;請求將按照輪詢的方式分發(fā)到后端服務(wù)器,但同時也會考慮權(quán)重。2)變量log_module中的變量來記錄志: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ù)嗨處理請求的服務(wù)器地址$upstream_cache_statusMISS?EXPIRED-expiredo請求被傳送到后端。UPDATING-expiredo 由于 proxy/fastcgi_cache_use_stale 正在更新, 將使用舊的應(yīng)答。一 一一STALE-expiredo 由于 proxy/fastcgi_cache_use_stale,后端將得到過 期的應(yīng)答。_HITJupstreamstatus前端服務(wù)廳的響應(yīng)狀

14、態(tài)。$upstream_response_time前端服務(wù)班的應(yīng)答時向,精確到毫秒,不同的應(yīng)答以逗號和冒號分開。$upstream_h11 p_$HEADER隨意的 HTTP 協(xié)議頭,如:$upstream_http_host$upstream_http_host3)Proxy 指令:proxy_next_upstream語法 :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?確定在何種情況下請求將轉(zhuǎn)發(fā)到下一個服務(wù)器:error-在連接到一個服務(wù)器,發(fā)送一個請求,或者讀取應(yīng)答時發(fā)生錯 誤。timeout-在連接到服務(wù)器,轉(zhuǎn)發(fā)請求或考讀取應(yīng)答時發(fā)生超時。 invalid_header-服務(wù)器返回空的或者錯誤的應(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ā)請求到下一臺服務(wù)器。轉(zhuǎn)發(fā)請求只發(fā)生在沒有數(shù)據(jù)傳遞到客戶端的過程中。其中

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

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

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

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

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

21、的 max_fails 為 10, fa訂_timeout二120;在連接tomcatl的10次后,返回給nginx為10次 超時,ngxin判斷tomcat 1為失效,然后將tomcatl超時時間恢復(fù)為 1000重新啟動tomcatl,在這段時間內(nèi)nginx判斷tomcatl還是失效狀 態(tài),所以在2分鐘后,nginx繼續(xù)監(jiān)聽到tomcatl正常后,那么nginx會 將tomcatl判斷為有效,將連接繼續(xù)均勻分配到2個tomcat上。 設(shè)置tomcatl連接數(shù)量,造成超時狀態(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 超過線程接受數(shù)量屁tomcat 1會返回購時狀態(tài),在返回給nginxl0次超 時狀態(tài)后,ngxin判斷tomcatl為失效,然后將tomcat線程數(shù)量恢復(fù)為 700,重新啟動tomcatl,在這段時間內(nèi)nginx判斷tomcatl還是失效狀 態(tài),超過2分鐘失效后,nginx繼續(xù)監(jiān)聽到tomcatl正常后,那么nginx 會將tomcatl判斷為有效,將連接繼續(xù)均勻分配到2個tomcat上。 設(shè)置tomcat 1關(guān)閉,造成拒絕狀態(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論