


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、nginx 負載均衡宕機配集團企業公司編碼:(LL369&KKI 1269-TM2483-LUI12689-ITT289-(1)結論詳細描述 nginx記錄失效節點的6種狀態(timeout > connectrefuse> 500、502、503、504,后四項 5XX 需要配置 proxy_next_upstream中的狀態才可以生效)、失效節點的觸發條 件和節點的檢復條件、所有節點失效后nginx會進行恢復并進行重 新監聽。(2)Nginx?負載均衡方式介紹Nginx的負載均衡方式一共有4種:"(輪詢模式)、ip_hash、 fair、 url_hasho(
2、3)Ngxin負載均衡和相關反向代理配置內容Nginx負載均衡和與容錯相關的反向代理的配置。(4)獲取后端流程后端server的自動容錯流程圖。(5)測試環境和測試結果針對兒種錯誤方式進行自動容錯測試。2. 結論(1)nginx?判斷節點失效狀態Nginx默認判斷失敗節點狀態以connectrefuse和timeout狀態為 準,不以HTTP錯誤狀態進行判斷失敗,因為HTTP只要能返回狀態說明 該節點還可以正常連接,所以nginx判斷其還是存活狀態;除非添加了 proxy_next_upstream Jh 令設置對 404、502、503、504、500 和 timeout 等錯滾進行強到備機
3、處理,在next_upstream過程中,會對fails進行 累加,如果備用機處理還是錯誤則著接返回錯誤信息(但404不進行記 錄到錯誤數,如果不配置錯誤狀態也不對其進行錯誤狀態記錄),綜 述,nginx 記錄錯誤數量只記錄 timeout> connectrefuse> 502、500、 503、504這6種狀態,timeout和connectrefuse是永遠被記錄錯誤狀 態,而 502、500、503、504 只有在配置 proxy_next_upstream 后 nginx 才會記錄這4種HTTP錯誤到fails中,當fa訂s大于等于max_fails 時,則該節點失效;(
4、2)nginx?處理節點失效和恢復的觸發條件nginx可以通過設置max_fails (最大嘗試失敗次數)和 fail_timeout (失效時間,在到達最大嘗試失敗次數后,在 fail_timeout的時間范圍內節點被置為失效,除非所有節點都失效,否 則該時間內,節點不進行恢復)對節點失敗的嘗試次數和失效時間進行 設置,當超過最大嘗試次數或失效時間未超過配置失效時間,則nginx 會對節點狀會置為失效狀態,nginx不對該后端進行連接,直到超過失效 時間或者所有節點都失效后,該節點重新置為有效,重新探測;(3)所有節點失效后nginx將重新恢復所有節點進行探測如果探測所有節點均失效,備機也為
5、失效時,那么nginx會對所有節 點恢復為有效,重新嘗試探測有效節點,如果探測到有效節點則返回正 確節點內容,如果還是全部錯誤,那么繼續探測下去,當沒有正確信息 時,節點失效時默認返回狀態為502,但是下次訪問節點時會繼續探測正 確節點,直到找到正確的為止。3. nginx負載均衡Nginx的負載均衡方式一共有4種:rr (輪詢模式)、ip_hash、fair> url_hash;Nginx自帶的2種負載均衡為rr和ip_hash, fair和url_hash為第 三方的插件,nginx在不配置負載均衡的羅式下,默認采用r;負載均衡 模式。RR負載均衡模式:每個請求按時間順序逐一分配到不
6、同的后端服務器,如果超過了最大 失敗次數后(max_fails,默認1),在失效時間內(fail_timeout,默認 10秒),該節點失效權重變為0,超過失效時間后,則恢復正常,或者全 部節點都為down后,那么將所有節點都恢復為有效繼續探測,一般來說 rr可以根據權重來進行均勻分配。Ip_hash負載均衡模式:每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后 端服務器,可以解決session的問題,但是ip_hash會造成負載不均, 有的服務請求接受多,有的服務請求接受少,用以不建議采用ip_hash 模式,session共享問題可用后端服務的session共亨代替ngin
7、x的 ip_hashoFair (第三方)負載均衡模式:按后端服務器的響應時間來分配請求,響應時間短的優先分配。 url_hash (第三方)負載均衡模式:W ip_hash算法類似,是對每個請求按"1的hash結果分配,使每 個URL定向到一個同?一個后端服務器,但是也會造成分配不均的問題, 這種模式后端服務器為緩存時比較好。4. Nginx?負載均衡配置Nginx的負載均衡采用的是upstream模塊其中默認的采用的負載均衡模式是輪詢模式rr (round_robin),具體配置 如下:1)指令:ip_hash語法:ip_hash?默認值: none?使用字段:upstream?
8、這個指令將基于客戶端連接的IP地址來分發請求。哈希的關鍵字是客戶端的C類網絡地址,這個功能將保證這個客戶端請 求總是被轉發到一臺服務器上,但是如果這臺服務器不可用,那么請求 將轉發到另外的服務器上,這將保證某個客戶端有很大概率總是連接到 一臺服務器。無法將權重(weight)與ip.hash聯合使用來分發連接。如果有某臺服 務器不可用,你必須標記其另“down”,如下例:upstreambackend ip_hash; 一server語法: servernameparameters默認值: none?使用字段:upstream?指定后端服務器的名稱和一些參數,可以使用域名,IP,端口,或者 u
9、nixsocketo如果指定為域名,則首先將其解析為IP。weight二NUMBER-設置服務器權重,默認為1。max_fails二NUMBER-在一定時間內(這個時間在fail_timeout參數中設置)檢查這個服務器 是否可用時產生的最多失敗請求數,默認為1,將其設置為0可以關閉檢 查,這些錯誤在 proxy_next_upstream 或 fastcgi_next_upstreain (404 錯誤不會使max_fails增加)中定義。fail_timeout二TIME-在這個時間內產生了 max_fa訂s所設置大小的失敗嘗試連接請求后這個 服務器可能不可用,同樣它指定了服務器不可用的時
10、間(在下一次嘗試 連接請求發起之前),默認為10秒,fail_timeout與前端響應時間沒有 直接關系,不過可以使用proxy_connect_timeout和 proxy_read_t imeout 來控制。down-標記服務器處于離線狀態,通常和ip_hash 起使用。backup-(0. 6. 7或更高)如果所有的非備份服務器都宕機或繁忙,則使用 本服務器(無法和ip_hash指令搭配使用)。示例配置upstreambackendserverunix:/tmp/backend3;注意:如果你只使用一臺上游服務器,nginx將設置一個內置變量為1, 即max_fails和fail_tim
11、eout參數不會被處理。結果:如果nginx不能 連接至J丄游,請求將丟失。解決:使用多臺上游服務器。upstream語法:upstreamname默認值: none?使用字段:http?這個字段設置一群服務器,可以將這個字段放在proxy_pass和 fastcgi_pass指令中作為一個單獨的實體,它們可以可以是監聽不同端 口的服務器,并且也可以是同時監聽TCP和Unixsocket的服務器。服務器可以指定不同的權重,默認為1。示例配置upstreambackendserverweight二5;s ervermax_fails二3fail_t imeout=30s;serverunix:/
12、tmp/backend3;請求將按照輪詢的方式分發到后端服務器,但同時也會考慮權重。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前端服務嗨處理請求的服務器地址$upstream_cache_statusMISS?EXPIRED-expiredo請求被傳送到后端。UPDATING-expiredo 由于 proxy/fastcgi_cache_use_stale 正在更新, 將使用舊的應答。一 一一STALE-expiredo 由于 proxy/fastcgi_cache_use_stale,后端將得到過 期的應答。_HITJupstreamstatus前端服務廳的響應狀
14、態。$upstream_response_time前端服務班的應答時向,精確到毫秒,不同的應答以逗號和冒號分開。$upstream_h11 p_$HEADER隨意的 HTTP 協議頭,如:$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默認值: proxy_next_ups treamerror time
15、out?使用字段:http, server, location?確定在何種情況下請求將轉發到下一個服務器:error-在連接到一個服務器,發送一個請求,或者讀取應答時發生錯 誤。timeout-在連接到服務器,轉發請求或考讀取應答時發生超時。 invalid_header-服務器返回空的或者錯誤的應答。http_500-服務器返回500代碼。http_502-服務器返|h! 502代碼。http_503-服務器返In 503代碼。http_504-服務器返凹504代碼。http_404-服務器返回404代碼。off-禁止轉發請求到下一臺服務器。轉發請求只發生在沒有數據傳遞到客戶端的過程中。其中
16、記錄到nginx后端錯誤數量的有500、502、503、504、timeout, 404不記錄錯誤。proxy_connect_timeout語法:proxy_connect_timeouttimeout_in_seconds?默認值: proxy_connect_timeout60s?使用字段:http, server, location?指定一個連接到代理服務器的超時時間,單位為秒,需要注意的是這個 時間最好不要超過75秒。這個時間并不是指服務器傳回頁面的時間(這個時間由 proxy_read_timeout聲明)。如果你的前端代理服務器是正常運行的, 但是迪到一些狀況(例如沒有足夠的線程
17、去處理請求,請求將被放在一 個連接池中延遲處理),那么這個聲明無助于服務器去建立連接。可以通過指定時間單位以免引起混亂,支持的時間單位有” s”(秒),“ms”(毫秒),“y” 奔),“M” (月),“w” (周),“d” (日),“h”(小 時),和? “m”(分鐘)。這個值不能大于597小時。proxy_read_t imeout語法:proxy_read_timeouttime?默認值: proxy_read_timeout60s?使用字段:http, server, location?決定讀取后端服務器應答的超時時間,單位為秒,它決定nginx將等待 多久時間來取得一個請求的應答。超時
18、時間是指完成了兩次握手后并且 狀態為established的超時時間。相對于proxy_connect_timeout,這個時間可以撲捉到一臺將你的連接放 入連接池延遲處理并且沒有數據傳送的服務器,注意不要將此值設置太 低,某些情況下代理服務器將花很長的時間來獲得頁面應答(例如如當 接收一個需要很多計算的報表時),當然你可以在不同的location里面 設置不同的值。可以通過指定時間單位以免引起混亂,支持的時間單位有” s”(秒), “ms” (毫秒),“y” (年),“M” (月),“w” (周),“d” (日),“h” (小 時),和? “m”(分鐘)。這個值不能大于597小時。proxy
19、_send_t imeout語法: proxy_send_timeoutseconds?默認值: proxy_send_timeout60s?使用字段:http, server, location?設置代理服務器轉發請求的超時時間,單位為秒,同樣指完成兩次握手 后的時間,如果超過這個時間代理服務器沒有數據轉發到被代理服務 器,nginx將關閉連接。可以通過指定時間單位以免引起混亂,支持的時間單位有” s”(秒),“ms”(毫秒),“y” (年),“M”(月),“w”(周),“d” (El), “h”(小 時),和? “m” (分鐘)。這個值不能大于597小時。5. 獲取后端流程GET_RR_P
20、EER:通過RR算法獲取后端流程K:是判亦peer是否宕機和判斷失效狀態算法FAIL:嘗試次數用盡有,跳轉到失敗流程,如果有備機,備機再嘗試監 聽,如果監聽失敗則返回NGX_BUSY,成功則返回當前狀態。6. 測試環境操作系統:centosb. 6Cpu:16 核內存:32gWeb?服務器:nginxWeb?應用服務器:tomcat (2臺)7. 測試結果設置tomcatl超時時間,造成超時狀態(總有一臺server為有效狀 態):Tomcatl 的 connectionTimeout?設置為-1,永遠超時,nginx 設置 tomcatl 和 tomcat2 權重為 10, tomcatl
21、的 max_fails 為 10, fa訂_timeout二120;在連接tomcatl的10次后,返回給nginx為10次 超時,ngxin判斷tomcat 1為失效,然后將tomcatl超時時間恢復為 1000重新啟動tomcatl,在這段時間內nginx判斷tomcatl還是失效狀 態,所以在2分鐘后,nginx繼續監聽到tomcatl正常后,那么nginx會 將tomcatl判斷為有效,將連接繼續均勻分配到2個tomcat上。 設置tomcatl連接數量,造成超時狀態(總有一臺server為有效狀 態):Tomcatl的線程數量設置為1, nginx設置tomcatl和tomcat2權
22、重為 10, tomcatl 的 max_fails 為 10, fail_timeout=120: 在連接 tomcatl 超過線程接受數量屁tomcat 1會返回購時狀態,在返回給nginxl0次超 時狀態后,ngxin判斷tomcatl為失效,然后將tomcat線程數量恢復為 700,重新啟動tomcatl,在這段時間內nginx判斷tomcatl還是失效狀 態,超過2分鐘失效后,nginx繼續監聽到tomcatl正常后,那么nginx 會將tomcatl判斷為有效,將連接繼續均勻分配到2個tomcat上。 設置tomcat 1關閉,造成拒絕狀態(總有一臺server為有效狀態):Tomcatl 為關閉,nginx 設置 tomcatl 和 tomcat2 權重為 10, tomcatl 的 max_fails 為 10, fa訂_timeout=120:在連接 tomcat 1 的 10 次后, nginx 收到 tomcatl 返回 connectrefuse 狀態,ngxin 判斷 tomca
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新質生產力對職業教育現場工程師培養的影響及要求
- 情緒調節企業高管的必 備技能
- 物理知識在生活中的應用實例分析測試題帶答案
- 教學評價體系的構建與創新實踐
- 教育政策與教師發展
- 中國多媒體軟件行業市場調查研究及發展戰略規劃報告
- 2024年中國橡膠顆粒松焦油市場供需格局及未來發展趨勢報告
- 中國深層攪拌樁機行業市場深度研究及投資策略研究報告
- 教師教育故事分享與啟發
- 教育信息化的技術發展與創新教育
- 培訓班助教教師管理制度
- 2025年安徽能源集團招聘筆試參考題庫含答案解析
- 河道維修養護管理制度
- 2025年 事業單位公基真題考試卷庫(附答案)
- 派出所消防管理制度
- 北京市朝陽區招聘社區工作者筆試真題2024
- 2025年重慶市中考數學試卷真題(含標準答案)
- 2025年中小學教師師德知識競賽試題庫及答案
- 2025年河北省中考乾坤押題卷化學試卷B及答案
- 浙江省諸暨市2025年5月高三適應性考試-地理+答案
- 蘋果店員入職試題及答案
評論
0/150
提交評論