版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1. 摘要(1) 結(jié)論詳細(xì)描述了nginx記錄失效節(jié)點的6種狀態(tài)(time out、connect refuse、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種:rr(輪
2、詢模式)、ip_hash、fair、url_hash。(3) Ngxin負(fù)載均衡和相關(guān)反向代理配置內(nèi)容Nginx負(fù)載均衡和與容錯相關(guān)的反向代理的配置。(4) 獲取后端流程后端server的自動容錯流程圖。(5) 測試環(huán)境和測試結(jié)果針對幾種錯誤方式進(jìn)行自動容錯測試。2. 結(jié)論(1)
3、160; nginx 判斷節(jié)點失效狀態(tài)Nginx 默認(rèn)判斷失敗節(jié)點狀態(tài)以connect refuse和time out狀態(tài)為準(zhǔn),不以HTTP錯誤狀態(tài)進(jìn)行判斷失敗,因為HTTP只要能返回狀態(tài)說明該節(jié)點還可以正常連接,所以nginx判斷其還是存活狀態(tài);除非添加了proxy_next_upstream指令設(shè)置對404、502、503、504、500和time out等錯誤進(jìn)行轉(zhuǎn)到備機(jī)處理,在next_upstream過程中,會對fails進(jìn)行累加,如果備用機(jī)處理還是錯誤則直接返回錯誤信息(但404不進(jìn)行記錄到錯誤數(shù),如果不配置錯誤狀態(tài)也不對其進(jìn)行
4、錯誤狀態(tài)記錄),綜述,nginx記錄錯誤數(shù)量只記錄timeout 、connect refuse、502、500、503、504這6種狀態(tài),timeout和connect refuse是永遠(yuǎn)被記錄錯誤狀態(tài),而502、500、503、504只有在配置proxy_next_upstream后nginx才會記錄這4種HTTP錯誤到fails中,當(dāng)fails大于等于max_fails時,則該節(jié)點失效;(2) nginx 處理節(jié)點失效和恢復(fù)的觸發(fā)條件nginx可以通過設(shè)置max_fails(最大嘗試失敗
5、次數(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é)點均失效,備機(jī)也為失效時,那么nginx會對所有
6、節(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)采用rr負(fù)載均衡模式。l RR負(fù)載均衡模式:每個請求按時間順序逐一分
7、配到不同的后端服務(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)行均勻分配。l Ip_hash負(fù)載均衡模式:每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決session的問題,但是ip_hash會造成負(fù)載不均,有的服務(wù)請求接受多,有的服務(wù)請求接受少,所以不建議采用ip_hash模式,session共享問題可用后端服務(wù)的sessio
8、n共享代替nginx的ip_hash。l Fair(第三方)負(fù)載均衡模式:按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配。l url_hash(第三方)負(fù)載均衡模式:和ip_hash算法類似,是對每個請求按url的hash結(jié)果分配,使每個URL定向到一個同 一個后端服務(wù)器,但是也會造成分配不均的問題,這種模式后端服務(wù)器為緩存時比較好。4. Nginx 負(fù)載均衡配置Nginx的負(fù)載均衡采用的是upstream模塊其中默認(rèn)的采用的負(fù)載均衡模式是輪詢模式rr(round_robin),具體配置如
9、下:1) 指令:ip_hash語法:ip_hash 默認(rèn)值:none 使用字段:upstream 這個指令將基于客戶端連接的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”,如下例:upstream backend i
10、p_hash; server server server down; server server語法:server name parameters 默認(rèn)值:none 使用字段:upstream 指定后端服務(wù)器的名稱和一些參數(shù),可以使用域名,IP,端口,或者unix socket。如果指定為域名,則首先將其解析為IP。
11、l weight = NUMBER - 設(shè)置服務(wù)器權(quán)重,默認(rèn)為1。l 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_upstream(404錯誤不會使max_fails增加)中定義。l fail_timeout = TIME - 在這個時間內(nèi)產(chǎn)生了max_fails所設(shè)置大小的失敗嘗試連接
12、請求后這個服務(wù)器可能不可用,同樣它指定了服務(wù)器不可用的時間(在下一次嘗試連接請求發(fā)起之前),默認(rèn)為10秒,fail_timeout與前端響應(yīng)時間沒有直接關(guān)系,不過可以使用proxy_connect_timeout和proxy_read_timeout來控制。l down - 標(biāo)記服務(wù)器處于離線狀態(tài),通常和ip_hash一起使用。l backup - (0.6.7或更高)如果所有的非備份服務(wù)器都宕機(jī)或繁忙,則使用本服務(wù)器(無法和ip_hash指令搭配使用)。示例配置upstream backend
13、 server weight=5; server :8080 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3;注意:如果你只使用一臺上游服務(wù)器,nginx將設(shè)置一
14、個內(nèi)置變量為1,即max_fails和fail_timeout參數(shù)不會被處理。結(jié)果:如果nginx不能連接到上游,請求將丟失。解決:使用多臺上游服務(wù)器。upstream語法:upstream name 默認(rèn)值:none 使用字段:http 這個字段設(shè)置一群服務(wù)器,可以將這個字段放在proxy_pass和fastcgi_pass指令中作為一個單獨的實體,它們可以可以是監(jiān)聽不同端口的服務(wù)器,并且也可以是同時監(jiān)聽TCP和Unix socket的服務(wù)器。服務(wù)器可以指定不同的權(quán)重,默認(rèn)為1。示例配置upstream backend server w
15、eight=5; server :8080 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3;請求將按照輪詢的方式分發(fā)到后端服務(wù)器,但同時也會考慮權(quán)重。在上面的例子中如果每次發(fā)生7個請求,5個請求將被發(fā)送到,其他兩臺將分別得到一個請求,如果有一臺服務(wù)器不可用,那么請求將被轉(zhuǎn)發(fā)到下一臺服務(wù)器,直到所有的服務(wù)器檢查都通過。如果所有的服務(wù)器都無法通過檢查,那么將返回給客戶端最
16、后一臺工作的服務(wù)器產(chǎn)生的結(jié)果。2) 變量版本0.5.18以后,可以通過log_module中的變量來記錄日志:log_format timing '$remote_addr - $remote_user $time_local $request ' 'upstream_response_time $upstream_response_time ' 'msec $msec request_time $request_time'
17、log_format up_head '$remote_addr - $remote_user $time_local $request ' 'upstream_http_content_type $upstream_http_content_type'l $upstream_addr前端服務(wù)器處理請求的服務(wù)器地址l $upstream_cache_status0.8.3版本中其值可能為:MISS EXPIRED - expired。請求被傳送到后端。UPDATIN
18、G - expired。由于proxy/fastcgi_cache_use_stale正在更新,將使用舊的應(yīng)答。STALE - expired。由于proxy/fastcgi_cache_use_stale,后端將得到過期的應(yīng)答。HITl $upstream_status前端服務(wù)器的響應(yīng)狀態(tài)。l $upstream_response_time前端服務(wù)器的應(yīng)答時間,精確到毫秒,不同的應(yīng)答以逗號和冒號分開。l $upstream_http_$HEADER隨意的HTTP協(xié)議頭,如:$upstream_http_hostl &
19、#160;$upstream_http_host 3) Proxy指令:proxy_next_upstream語法:proxy_next_upstream error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off 默認(rèn)值:proxy_next_upstream error timeout 使用字段:http, server, location 確定在何種情況下請求將轉(zhuǎn)發(fā)到下一個服務(wù)器:error -
20、160;在連接到一個服務(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ù)器返回502代碼。http_503 - 服務(wù)器返回503代碼。http_504 - 服務(wù)器返回504代碼。http_404 - 服務(wù)器返回404代碼。off - 禁止轉(zhuǎn)發(fā)請求到下一臺服務(wù)器。轉(zhuǎn)發(fā)請求只發(fā)生在沒有數(shù)據(jù)傳遞到客戶端的過程中。其中記錄到ngi
21、nx后端錯誤數(shù)量的有500、502、503、504、timeout,404不記錄錯誤。proxy_connect_timeout語法:proxy_connect_timeout timeout_in_seconds 默認(rèn)值:proxy_connect_timeout 60s 使用字段:http, server, location 指定一個連接到代理服務(wù)器的超時時間,單位為秒,需要注意的是這個時間最好不要超過75秒。這個時間并不是指服務(wù)器傳回頁面的時間(這個時間由proxy_read_timeout聲明)。如果你的前端代理服務(wù)器是正常運(yùn)行的,但是遇到一些狀況(例如沒
22、有足夠的線程去處理請求,請求將被放在一個連接池中延遲處理),那么這個聲明無助于服務(wù)器去建立連接??梢酝ㄟ^指定時間單位以免引起混亂,支持的時間單位有”s”(秒), “ms”(毫秒), “y”(年), “M”(月), “w”(周), “d”(日), “h”(小時),和 “m”(分鐘)。這個值不能大于597小時。proxy_read_timeout語法:proxy_read_timeout time 默認(rèn)值:proxy_read_timeout 60s 使用字段:http, server, location 決定讀取后端服務(wù)器應(yīng)答的超時時間,單位為秒,它決定n
23、ginx將等待多久時間來取得一個請求的應(yīng)答。超時時間是指完成了兩次握手后并且狀態(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”(分鐘
24、)。這個值不能大于597小時。proxy_send_timeout語法:proxy_send_timeout seconds 默認(rèn)值:proxy_send_timeout 60s 使用字段:http, server, location 設(shè)置代理服務(wù)器轉(zhuǎn)發(fā)請求的超時時間,單位為秒,同樣指完成兩次握手后的時間,如果超過這個時間代理服務(wù)器沒有數(shù)據(jù)轉(zhuǎn)發(fā)到被代理服務(wù)器,nginx將關(guān)閉連接??梢酝ㄟ^指定時間單位以免引起混亂,支持的時間單位有”s”(秒), “ms”(毫秒), “y”(年), “M”(月), “w”(周), “d”(日), “h”(小時),和 “m”
25、(分鐘)。這個值不能大于597小時。 5. 獲取后端流程GET_RR_PEER: 通過RR算法獲取后端流程K:是判斷peer是否宕機(jī)和判斷失效狀態(tài)算法 FAIL:嘗試次數(shù)用盡有,跳轉(zhuǎn)到失敗流程,如果有備機(jī),備機(jī)再嘗試監(jiān)聽,如果監(jiān)聽失敗則返回NGX_BUSY,成功則返回當(dāng)前狀態(tài)。6. 測試環(huán)境操作系統(tǒng):centos5.6Cpu:16核內(nèi)存:32gWeb 服務(wù)器:nginxWeb 應(yīng)用服務(wù)器:tomcat(2臺)7. 測試結(jié)果l
26、0; 設(shè)置tomcat1超時時間,造成超時狀態(tài)(總有一臺server為有效狀態(tài)):Tomcat1的connectionTimeout 設(shè)置為-1,永遠(yuǎn)超時,nginx設(shè)置tomcat1和tomcat2權(quán)重為10,tomcat1的max_fails為10,fail_timeout=120;在連接tomcat1的10次后,返回給nginx為10次超時,ngxin判斷tomcat1為失效,然后將tomcat1超時時間恢復(fù)為1000重新啟動tomcat1,在這段時間內(nèi)nginx判斷tomcat1還是失效狀態(tài),所以在2分鐘后,nginx繼續(xù)監(jiān)聽到tomcat1正常后,那么nginx會
27、將tomcat1判斷為有效,將連接繼續(xù)均勻分配到2個tomcat上。l 設(shè)置tomcat1連接數(shù)量,造成超時狀態(tài)(總有一臺server為有效狀態(tài)):Tomcat1的線程數(shù)量設(shè)置為1,nginx設(shè)置tomcat1和tomcat2權(quán)重為10,tomcat1的max_fails為10,fail_timeout=120;在連接tomcat1超過線程接受數(shù)量后,tomcat1會返回超時狀態(tài),在返回給nginx10次超時狀態(tài)后,ngxin判斷tomcat1為失效,然后將tomcat線程數(shù)量恢復(fù)為700,重新啟動tomcat1,在這段時間內(nèi)nginx判斷tomcat1還是失效狀態(tài),超過2分鐘失效后,nginx繼續(xù)監(jiān)聽到tomcat1正常后,那么nginx會將tomcat1判斷為有效,將連接繼續(xù)均勻
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025招標(biāo)控制價建設(shè)工程造價咨詢合同
- 2025儀器儀表購銷合同
- 2024年刮泥機(jī)項目投資申請報告
- 醫(yī)療健康產(chǎn)業(yè)對宏觀經(jīng)濟(jì)的拉動作用研究
- 2025年滬教版必修3生物上冊階段測試試卷含答案
- 2025年粵人版選擇性必修3地理下冊月考試卷
- 2024年滬教新版必修1物理上冊月考試卷
- 二零二五版牛只運(yùn)輸與養(yǎng)殖基地環(huán)保責(zé)任合同3篇
- 二零二五年度模具加工環(huán)保工藝與技術(shù)改造合同4篇
- 二零二五年度園林綠化苗木育種合同3篇
- 開展課外讀物負(fù)面清單管理的具體實施舉措方案
- 2025年云南中煙工業(yè)限責(zé)任公司招聘420人高頻重點提升(共500題)附帶答案詳解
- 2025-2030年中國洗衣液市場未來發(fā)展趨勢及前景調(diào)研分析報告
- 2024解析:第三章物態(tài)變化-基礎(chǔ)練(解析版)
- 北京市房屋租賃合同自行成交版北京市房屋租賃合同自行成交版
- 《AM聚丙烯酰胺》課件
- 系統(tǒng)動力學(xué)課件與案例分析
- 《智能網(wǎng)聯(lián)汽車智能傳感器測試與裝調(diào)》電子教案
- 客戶分級管理(標(biāo)準(zhǔn)版)課件
- GB/T 32399-2024信息技術(shù)云計算參考架構(gòu)
- 人教版數(shù)學(xué)七年級下冊數(shù)據(jù)的收集整理與描述小結(jié)
評論
0/150
提交評論