-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專(zhuān)題列表 > 正文
nginx負(fù)載均衡配置詳解(nginx負(fù)載均衡配置詳解linux)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于nginx負(fù)載均衡配置詳解的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫(xiě)出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶(hù)端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶(hù)遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、nginx如何實(shí)現(xiàn)負(fù)載均衡、限流、緩存、黑白名單和灰度發(fā)布
1.負(fù)載均衡配置
2.失敗重試配置
在fail_timeout時(shí)間內(nèi)失敗了max_fails次請(qǐng)求后,認(rèn)為上游服務(wù)器不可用,就會(huì)將服務(wù)地址剔除掉,fail_timeout時(shí)間后會(huì)再次將服務(wù)器加入存活列表進(jìn)行重試。
limit_req_zone指令設(shè)置參數(shù)
參數(shù)說(shuō)明
limit_req_zone定義在http塊中,$binary_remote_addr表示保存客戶(hù)端IP地址的二進(jìn)制形式。
Zone定義IP狀態(tài)及URL訪問(wèn)頻率的共享內(nèi)存區(qū)域。zone=keyword標(biāo)識(shí)區(qū)域的名字,以及冒號(hào)后面跟區(qū)域大小。16000個(gè)IP地址的狀態(tài)信息約1MB,例子區(qū)域可以存儲(chǔ)160000個(gè)IP地址。
Rate定義最大請(qǐng)求速率。示例中速率不能超過(guò)每秒10個(gè)請(qǐng)求。
設(shè)置限流
burs排隊(duì)大小,nodelay不限制單個(gè)請(qǐng)求間的時(shí)間。具體使用可以查看高并發(fā)場(chǎng)景如何使用nginx實(shí)現(xiàn)限流-實(shí)戰(zhàn)篇
不限流白名單
該配置說(shuō)明 192.168.1.0/24網(wǎng)段的ip訪問(wèn)是不限流的,其它限流。ip后面數(shù)字的含義
24表示子網(wǎng)掩碼:255.255.255.0
16表示子網(wǎng)掩碼:255.255.0.0
8表示子網(wǎng)掩碼:255.0.0.0
1.瀏覽器緩存 靜態(tài)資源緩存用expire
Response Header中添加了Expires和Cache-Control
所謂的靜態(tài)資源一般包括一直不變的圖像,如網(wǎng)站的logo,js、css靜態(tài)文件還有可下載的內(nèi)容,媒體文件
協(xié)商緩存(add_header ETag/Last-Modified value)包括html文件,經(jīng)常替換的圖片,經(jīng)常需要修改的js、css文件和基本不變的api接口
不需要緩存包括用戶(hù)隱私等敏感數(shù)據(jù),用戶(hù)經(jīng)常變動(dòng)的api接口
2.代理層緩存
在本地磁盤(pán)創(chuàng)建一個(gè)文件目錄,根據(jù)我們的配置把請(qǐng)求資源以k(key自定義,這邊用url的hash值)->v形式緩存到目錄里,并根據(jù)需求對(duì)內(nèi)容設(shè)置緩存時(shí)長(zhǎng),比如狀態(tài)碼為200緩存10分鐘,其余的緩存1分鐘等待。要清理緩存可以借助purger的功能。如果ab測(cè)試/個(gè)性化需求時(shí)應(yīng)禁用瀏覽器緩存,否則會(huì)因?yàn)榫彺鎸?dǎo)致誤差。
方式一
方式二 lua+redis動(dòng)態(tài)黑名單(openresty)
配置(/usr/local/openresty/nginx/conf/nginx.conf)
lua腳本編寫(xiě)(ip_blacklist.lua)
1.根據(jù)cookie實(shí)現(xiàn)灰度發(fā)布
根據(jù)cooke查詢(xún)version值,根據(jù)version跳轉(zhuǎn)到對(duì)應(yīng)的host,如果沒(méi)有匹配上的就跳轉(zhuǎn)到默認(rèn)配置。
2.根據(jù)來(lái)路ip實(shí)現(xiàn)灰度發(fā)布
二、Nginx反向代理實(shí)現(xiàn)負(fù)載均衡配置圖解
負(fù)載均衡配置是超大型機(jī)器需要考慮的一些問(wèn)題 同時(shí)也是數(shù)據(jù)安全的一種做法 下面我來(lái)介紹在nginx中反向代理 負(fù)載均衡配置圖解 大家可參考本文章來(lái)操作
首先簡(jiǎn)單的介紹下修改默認(rèn)的nginx conf 大概在 ~ 行 去掉前面的#號(hào) 重啟nginx
#location ~ php$ {# proxy_pass ;#}改為 location ~ php$ { proxy_pass // : ;}
分別訪問(wèn) 出現(xiàn)如下圖已經(jīng)能夠針對(duì)不同請(qǐng)求訪問(wèn)服務(wù)器了
這樣當(dāng)我們?cè)L問(wèn) l的時(shí)候 前端的nginx會(huì)自動(dòng)進(jìn)行響應(yīng) 當(dāng)訪問(wèn) /test php的時(shí)候(這個(gè)時(shí)候nginx目錄下根本就沒(méi)有該文件) 但是通過(guò)上面的設(shè)置location ~ php$(表示
訪問(wèn)php頁(yè)面test php : 的Apache進(jìn)行響應(yīng)
訪問(wèn)目錄phpMyAdmin下的頁(yè)面的話 : 的Apache進(jìn)行響應(yīng)
修改原始默認(rèn)的nginx conf的server模塊部分(大概在 ~ 行)
#location ~ php$ {# proxy_pass ;#}修改為 location ^~ /phpMyAdmin/ { proxy_pass : ;} location ~ php$ { proxy_pass : ;}
上面第一個(gè)部分location ^~ /phpMyAdmin/ 表示不使用; index index
2.在配置文件nginx.conf的模塊中添加服務(wù)器集群server cluster的定義。Tw.WinGWit.
upstream myCluster { server 192.168.2.3:8080 ; server 192.168.2.2:80 ; server 192.168.2.8:80 ;}
表示這個(gè)server cluster包含3臺(tái)服務(wù)器
3.然后在server模塊中定義負(fù)載均衡
location ~ .php$ { proxy_pass //myCluster ; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
proxy_pass //myCluster ; 這里的名字和上面的cluster的名字相同
配置好后,當(dāng)訪問(wèn)頁(yè)面,nginx目錄下根本沒(méi)有該文件,但是它會(huì)自動(dòng)將其pass到myCluster定義的服務(wù)器群,分別由上述的3臺(tái)服務(wù)器中的一臺(tái)來(lái)做處理。
上面在定義upstream的時(shí)候每個(gè)server之后沒(méi)有定義權(quán)重,表示兩者均衡;如果希望某個(gè)更多響應(yīng)的話,可以加weight
upstream myCluster { server 192.168.2.3:8080 weight=5; server 192.168.2.2:80 ; server 192.168.2.8:80 ;}
這樣表示5/7的幾率訪問(wèn)第一個(gè)server,1/7訪問(wèn)第二個(gè)、第三個(gè)。另外還可以定義max_fails和fail_timeout等參數(shù)。
所以我們使用nginx的反向代理服務(wù)器reverse proxy server的功能,將其布置到多臺(tái)apache server的前端。
nginx僅僅用來(lái)處理靜態(tài)頁(yè)面響應(yīng)和動(dòng)態(tài)請(qǐng)求的代理pass,后臺(tái)的apache服務(wù)器來(lái)對(duì)前臺(tái)pass過(guò)來(lái)的動(dòng)態(tài)頁(yè)面進(jìn)行處理并返回給nginx。
三、不容錯(cuò)過(guò)的Nginx配置詳解,一文帶你搞懂Nginx
Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,特點(diǎn)是占用內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上Nginx的并發(fā)能力確實(shí)在同類(lèi)型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)好。Nginx專(zhuān)為性能優(yōu)化而開(kāi)發(fā),性能是其最重要的考量,實(shí)現(xiàn)上非常注重效率,能經(jīng)受高負(fù)載的考驗(yàn),有報(bào)告表明能支持高達(dá)50000個(gè)并發(fā)連接數(shù)。
需要客戶(hù)自己在瀏覽器配置代理服務(wù)器地址。
例如:在大陸訪問(wèn)www.google.com,我們需要一個(gè)代理服務(wù)器,我們通過(guò)代理服務(wù)器去訪問(wèn)谷歌,這個(gè)過(guò)程就是正向代理。
反向代理,客戶(hù)端對(duì)代理是無(wú)感知的,因?yàn)榭蛻?hù)端不需要任何配置就可以訪問(wèn),我們只需要將請(qǐng)求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后,在返回給客戶(hù)端,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對(duì)外就是一個(gè)服務(wù)器,暴露的是代理服務(wù)器地址,隱藏了真實(shí)服務(wù)器IP地址。
單個(gè)服務(wù)器解決不了,我們?cè)黾臃?wù)器的數(shù)量,然后將請(qǐng)求分發(fā)到各個(gè)服務(wù)器上,將原先請(qǐng)求集中到單個(gè)服務(wù)器上的情況改為將請(qǐng)求分發(fā)到多個(gè)服務(wù)器上,將負(fù)載分發(fā)到不同的服務(wù)器,也就是我們說(shuō)的負(fù)載均衡。
為了加快網(wǎng)站的解析速度,可以把動(dòng)態(tài)頁(yè)面和靜態(tài)頁(yè)面由不同的服務(wù)器來(lái)解析,加快解析速度。降低原來(lái)單個(gè)服務(wù)器的壓力。
進(jìn)入到下面的目錄,然后使用命令
配置文件所在位置:/usr/local/nginx/conf/nginx.conf
由全局塊+events塊+http塊組成
從配置文件開(kāi)始到events之間的內(nèi)容,主要會(huì)設(shè)置一些影響Nginx服務(wù)器整體運(yùn)行的配置指令,主要包括配置運(yùn)行Nginx服務(wù)器的用戶(hù)(組)、允許生成的worker process數(shù),進(jìn)程pid存放路徑、日志存放路徑和類(lèi)型以及配置文件的引入等。
events塊設(shè)計(jì)的指令主要影響Nginx服務(wù)器與用戶(hù)的網(wǎng)絡(luò)連接,常用的設(shè)置包括是否開(kāi)啟對(duì)多work process下的網(wǎng)絡(luò)連接進(jìn)行序列化,是否允許同時(shí)接收多個(gè)網(wǎng)絡(luò)連接,選取哪種事件驅(qū)動(dòng)模型來(lái)處理連接請(qǐng)求,每個(gè)work process可以同時(shí)支持的最大連接數(shù)等。下面的例子表示每個(gè)work process支持的最大連接數(shù)為1024。這部分配置對(duì)Nginx的性能影響較大,在實(shí)際中應(yīng)該靈活配置。
Nginx服務(wù)器配置中最頻繁的部分,代理、緩存和日志定義等絕大多數(shù)功能和第三方模塊的配置都在這里,http塊又包括http全局塊和server塊。
http全局塊配置的指令包括文件引入、MIME-TYPE定義、日志自定義、連接超時(shí)時(shí)間、單鏈接請(qǐng)求數(shù)上限等。
這塊和虛擬主機(jī)有密切關(guān)系,虛擬主機(jī)從用戶(hù)角度看,和一臺(tái)獨(dú)立的硬件主機(jī)是完全一樣的,該技術(shù)的產(chǎn)生是為了節(jié)省互聯(lián)網(wǎng)服務(wù)器硬件成本。
每個(gè)http塊可以包括多個(gè)server塊,而每個(gè)server塊就相當(dāng)于一個(gè)虛擬主機(jī)。
每個(gè)server塊也可以分為全局server塊,以及可以同時(shí)包含多個(gè)location塊。
最常見(jiàn)的配置時(shí)本虛擬主機(jī)的監(jiān)聽(tīng)配置和本虛擬主機(jī)的名稱(chēng)或IP配置。
一個(gè)server塊可以配置多個(gè)location塊。
這塊的主要作用是基于Nginx服務(wù)器接收到的請(qǐng)求字符串(例如server_name/uri-string),對(duì)虛擬主機(jī)名稱(chēng)(也可以是IP別名)之外的字符串(例如前面的/uri-string)進(jìn)行匹配,對(duì)特定的請(qǐng)求進(jìn)行處理。地址定向、數(shù)據(jù)緩存和應(yīng)答控制等功能,還有許多第三方模塊的配置也在這里進(jìn)行。
訪問(wèn)http://ip,訪問(wèn)到的是Tomcat的主頁(yè)面http://ip:8080。
Nginx+JDK8+Tomcat
訪問(wèn):http://192.168.71.167/,看到的是Tomcat的首頁(yè)。
根據(jù)訪問(wèn)的路徑跳轉(zhuǎn)到不同的服務(wù)器中去。
訪問(wèn)http://ip:9001/edu 直接跳到http://127.0.0.1:8080/edu
訪問(wèn)http://ip:9001/vod 直接跳到http://127.0.0.1:9090/vod
Nginx+JDK8+配置兩個(gè)Tomcat,Tomcat的配置不再講述。
訪問(wèn)http://192.168.71.167:9001/edu/a.html跳到了http://127.0.0.1:8080/edu/a.html頁(yè)面。
訪問(wèn)http://192.168.71.167:9001/vod/a.html跳到了http://127.0.0.1:9090/vod/a.html頁(yè)面。
假如Nginx代理服務(wù)器Server的配置為:192.168.71.167:9001,跳到:127.0.0.1:8080,訪問(wèn)者的IP為:192.168.71.200:20604。
通過(guò)訪問(wèn)http://192.168.71.167/edu/a.html,實(shí)現(xiàn)負(fù)載均衡的效果,平均分?jǐn)偟?080和8081端口中。
Nginx+JDK8+2臺(tái)Tomcat,一臺(tái)8080,一臺(tái)8081。
訪問(wèn):http://192.168.71.167/edu/a.html,8080和8081交替訪問(wèn)。
1 輪詢(xún)(默認(rèn))
每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。
2 weight
weight代表權(quán)重,默認(rèn)為1,權(quán)重越高被分配的客戶(hù)端越多。
指定輪詢(xún)幾率,weight和訪問(wèn)比率成正比,用于后端服務(wù)器性能不均的情況。
3 ip_hash
每個(gè)請(qǐng)求按訪問(wèn)IP的hash結(jié)果分配,這樣每個(gè)訪客固定訪問(wèn)一個(gè)后端服務(wù)器,可以解決session的問(wèn)題,示例如下:
4 fair(第三方)
按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。
訪問(wèn)圖片:http://192.168.71.167/image/1.jpg
訪問(wèn)頁(yè)面:http://192.168.71.167/www/a.html
訪問(wèn)目錄:http://192.168.71.167/image/(因?yàn)樵O(shè)置了autoindex on;)
兩臺(tái)機(jī)器,每臺(tái)機(jī)器都裝有keepalived+Nginx+Tomcat。
主備keepalived服務(wù)器中只有master一臺(tái)機(jī)器會(huì)出現(xiàn)VIP地址,否則會(huì)出現(xiàn)腦裂問(wèn)題。
【提示】腳本要加+x的執(zhí)行權(quán)限:chmod +x chk_nginx.sh
在Nginx里把虛擬IP配置進(jìn)去即可。
一個(gè)Nginx是由一個(gè)master進(jìn)程和多個(gè)worker進(jìn)程組成的。
客戶(hù)端發(fā)送請(qǐng)求到Master,然后給worker,再由這些work爭(zhēng)搶處理這個(gè)請(qǐng)求。
1 可以使用nginx -s reload進(jìn)行熱部署方式;
2 每個(gè)worker是獨(dú)立的進(jìn)程,如果有其中的一個(gè)worker出現(xiàn)了問(wèn)題,其他worker獨(dú)立的繼續(xù)進(jìn)行爭(zhēng)搶?zhuān)瑢?shí)現(xiàn)請(qǐng)求的過(guò)程,不會(huì)造成服務(wù)的中斷;
Nginx和Redis類(lèi)似,都采用了io多路復(fù)用機(jī)制。每個(gè)worker進(jìn)程都可以把CPU發(fā)揮到極致,一般來(lái)說(shuō)worker數(shù)和服務(wù)器的CPU數(shù)相等是最為適宜的。
發(fā)送請(qǐng)求:訪問(wèn)靜態(tài)資源占用2個(gè)連接,反向代理占用4個(gè)連接。
【溫馨提示】
四、nginx 負(fù)載均衡(upstream)4種分配方式
實(shí)例 1 (簡(jiǎn)單用法)
實(shí)例 2 (動(dòng)態(tài)可配置組)
參數(shù)說(shuō)明:
解決session
1、輪詢(xún)(默認(rèn)) 每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。
2、weight 指定輪詢(xún)幾率,weight和訪問(wèn)比率成正比,用于后端服務(wù)器性能不均的情況。
3、ip_hash 每個(gè)請(qǐng)求按訪問(wèn)ip的hash結(jié)果分配,這樣每個(gè)訪客固定訪問(wèn)一個(gè)后端服務(wù)器,可以解決session的問(wèn)題。
4、fair(第三方)按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。
5、url_hash(第三方) 按訪問(wèn)url的hash結(jié)果來(lái)分配請(qǐng)求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效。
如:
以上就是關(guān)于nginx負(fù)載均衡配置詳解相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢(xún),客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
bing搜索國(guó)際版入口(bing國(guó)際版搜索引擎)
電腦messenger什么意思(messenger中文意思)
兩個(gè)yy是什么意思(兩個(gè)yy是什么意思網(wǎng)絡(luò)用語(yǔ))
猜你喜歡
進(jìn)入股市如何開(kāi)戶(hù)(想進(jìn)入股市開(kāi)戶(hù)怎么開(kāi)-)
陪玩俱樂(lè)部怎么成立(陪玩俱樂(lè)部怎么成立公司)
光電材料及其應(yīng)用(光電材料及其應(yīng)用心得)
電腦安裝哪個(gè)pdf軟件哪個(gè)好(電腦下載哪個(gè)pdf好用)
當(dāng)今十大熱門(mén)行業(yè)(適合窮人翻身的10個(gè)行業(yè))
曝光標(biāo)尺(曝光標(biāo)尺怎么在相機(jī)顯示)
谷歌外貿(mào)平臺(tái)叫什么(谷歌外貿(mào)平臺(tái)叫什么名字)
莫斯科國(guó)立大學(xué)專(zhuān)業(yè)排名(莫斯科國(guó)立大學(xué)專(zhuān)業(yè)排名榜)