亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

nginx負(fù)載均衡實(shí)戰(zhàn)分享

IT那活兒 / 2295人閱讀
nginx負(fù)載均衡實(shí)戰(zhàn)分享


負(fù)載均衡的介紹


負(fù)載均衡是由多臺(tái)服務(wù)器以對(duì)稱方式組成服務(wù)器集群,每臺(tái)服務(wù)器都具等價(jià)關(guān)系,均可多帶帶對(duì)外提供服務(wù)且無(wú)需其他服務(wù)器輔助。通過(guò)對(duì)應(yīng)負(fù)載分擔(dān)均衡,將外部發(fā)送請(qǐng)求按既定規(guī)則分發(fā)到對(duì)稱集群架構(gòu)其中一臺(tái)服務(wù)器上,對(duì)應(yīng)接收請(qǐng)求服務(wù)器也獨(dú)立地回應(yīng)客戶端請(qǐng)求。均衡負(fù)載能夠平均分配客戶請(qǐng)求到服務(wù)器陣列,以快速獲取數(shù)據(jù),解決大并發(fā)訪問(wèn)服務(wù)的洪峰問(wèn)題。此種集群技術(shù)可用最少的投入獲得超高的性能,是一種性價(jià)比較高的并發(fā)解決方案之一。


負(fù)載均衡建立在網(wǎng)絡(luò)層之上,提供了一種廉價(jià)有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。


負(fù)載均衡(LoadBalance)其原意就是前端請(qǐng)求分?jǐn)偟蕉鄠€(gè)操作單元進(jìn)行取數(shù)執(zhí)行操作,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)。



常用負(fù)載均衡方法



一、用戶手動(dòng)選擇

這是一種比較古老的方式,目主要通過(guò)提供不同的線路、不同服務(wù)器鏈接的方式,來(lái)實(shí)現(xiàn)負(fù)載均衡。


這種方式在一些提供下載、在線影院、直播等網(wǎng)站比較常見。


優(yōu)點(diǎn):

  • 1、部署簡(jiǎn)單,新增服務(wù)器或鏈路只需增加對(duì)應(yīng)的入口即可

  • 2、維護(hù)方便,如果有服務(wù)器宕機(jī)只需關(guān)閉對(duì)應(yīng)入口即可


缺點(diǎn):

  • 1、智能化程度不高,需用戶手動(dòng)切換

  • 2、分配不可控,容易出現(xiàn)服務(wù)器訪問(wèn)量極不平衡等情況



二、DNS輪詢


大多域名注冊(cè)商都支持多條A記錄的解析,這就是DNS輪詢,DNS服務(wù)器將解析請(qǐng)求按照A記錄的順序,逐一分配到不同的IP上,這樣就完成了簡(jiǎn)單的負(fù)載均衡。


優(yōu)點(diǎn):

  • 1、基本上無(wú)成本,因?yàn)橥蛎?cè)商的這種解析都是免費(fèi)的;

  • 2、部署方便,除了網(wǎng)絡(luò)拓?fù)涞暮?jiǎn)單擴(kuò)增,新增的Web服務(wù)器只要增加一個(gè)公網(wǎng)IP即可。


缺點(diǎn):

  • 1、健康檢查,如果某臺(tái)服務(wù)器宕機(jī),DNS服務(wù)器是無(wú)法知曉的,仍舊會(huì)將訪問(wèn)分配到此服務(wù)器。修改DNS記錄全部生效起碼要3-4小時(shí),甚至更久;


  • 2、分配不均,如果幾臺(tái)Web服務(wù)器之間的配置不同,能夠承受的壓力也就不同,但是DNS解析分配的訪問(wèn)卻是均勻分配的。其實(shí)DNS也是有分配算法的,可以根據(jù)當(dāng)前連接較少的分配、可以設(shè)置Rate權(quán)重分配等等,只是目前絕大多數(shù)的DNS服務(wù)器都不支持;



三、四/七層負(fù)載均衡

現(xiàn)代負(fù)載均衡技術(shù)通常操作于OSI網(wǎng)絡(luò)模型的第四層或第七層。第四層負(fù)載均衡將一個(gè)Internet上合法注冊(cè)的IP地址映射為多個(gè)內(nèi)部服務(wù)器的IP地址,對(duì)每次TCP連接請(qǐng)求動(dòng)態(tài)使用其中一個(gè)內(nèi)部IP第,達(dá)到負(fù)載均衡的目的。在第四層交換機(jī)中,此中均衡技術(shù)得到廣泛的應(yīng)用,一個(gè)目標(biāo)地址是服務(wù)器群VIP連接請(qǐng)求的數(shù)據(jù)包流經(jīng)交換機(jī),交換機(jī)根據(jù)源端和目的IP地址、TCP或者UDP端口號(hào)和一定的負(fù)載策略,在服務(wù)器IP和VIP間進(jìn)行映射,選取服務(wù)器群眾最好的服務(wù)器來(lái)處理連接請(qǐng)求。


第七層負(fù)載均衡控制應(yīng)用層服務(wù)的內(nèi)容,提供一種對(duì)訪問(wèn)流量的高層控制方式,適合對(duì)HTTP服務(wù)器群的應(yīng)用。第七層負(fù)載均衡技術(shù)通過(guò)檢查流經(jīng)的HTTP報(bào)頭,根據(jù)報(bào)頭內(nèi)的信息來(lái)執(zhí)行負(fù)載均衡任務(wù)。


常見四/七層負(fù)載均衡設(shè)備


  • 硬件負(fù)載均衡交換機(jī),代表有F5、array等。

  • 軟件負(fù)載均衡器,Nginx/LVS/HAProxy是目前使用最廣泛的三種負(fù)載均衡軟件。


軟件四/七層負(fù)載均衡

1.軟件四層負(fù)載均衡

代表作為L(zhǎng)VS,LVS是一個(gè)開源的軟件,可以實(shí)現(xiàn)linux平臺(tái)下的簡(jiǎn)單負(fù)載均衡。lvs集群采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請(qǐng)求分發(fā)技術(shù)。調(diào)度器具有很好的吞吐率,將請(qǐng)求均衡的轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,且調(diào)度器自動(dòng)屏蔽掉服務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個(gè)高性能的、高可用的虛擬服務(wù)器。整個(gè)服務(wù)器集群的結(jié)構(gòu)對(duì)客戶是透明的,而且無(wú)需修改客戶端和服務(wù)器端的程序。


LVS通過(guò)修改數(shù)據(jù)包Ip地址,Mac地址實(shí)現(xiàn)負(fù)載均衡。


LVS由ipvs(內(nèi)核中),ipvsadm(用戶態(tài))組成。LVS需要理解tcp,ip頭部。


當(dāng)tcp握手信號(hào),SYN數(shù)據(jù)包達(dá)到時(shí),ipvs選擇一個(gè)后端服務(wù)器,將數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)。在此之后,所有包含相同的ip,tcp頭部的數(shù)據(jù)包都會(huì)被轉(zhuǎn)發(fā)到之前選擇的服務(wù)器上。很明顯,ipvs無(wú)法感知數(shù)據(jù)包內(nèi)容。


2.軟件的七層負(fù)載均衡

大多HTTP反向代理方式,代表產(chǎn)品有nginx、haproxy等,nginx的反向代理負(fù)載均衡能夠很好的支持虛擬主機(jī),可配置性很強(qiáng),可以按輪詢、IP哈希、URL哈希、權(quán)重等多種放肆對(duì)后端服務(wù)器做負(fù)載均衡,同時(shí)還支持后端服務(wù)器的健康檢查。


nginx負(fù)載均衡工作在7層,它會(huì)與client、upstream分別建立tcp連接,nginx需要維護(hù)這兩個(gè)連接的狀態(tài)。


nginx的stream模塊可以用于4層負(fù)載均衡,主要用于tcp、udp的負(fù)載均衡。



nginx負(fù)載均衡算法



1.weight權(quán)重輪循
  

在輪循算法的基礎(chǔ)上加上權(quán)重,即為權(quán)重輪循算法,當(dāng)使用該算法時(shí),權(quán)重和用戶訪問(wèn)成正比,權(quán)重值越大,被轉(zhuǎn)發(fā)的請(qǐng)求也就越多??梢愿鶕?jù)服務(wù)器的配置和性能指定權(quán)重值大小,有效解決新舊服務(wù)器性能不均帶來(lái)的請(qǐng)求分配問(wèn)題。

upstream myapp1 {

server 172.1.1.103 weight=1;

server 172.1.1.104 weight=2;

}



2.ip_hash
 

每個(gè)請(qǐng)求按客戶端IP 的 hash結(jié)果分配,當(dāng)新的請(qǐng)求到達(dá)時(shí),先將其客戶端IP通過(guò)哈希算法哈希出一個(gè)值,在隨后的客戶端請(qǐng)求中,客戶IP 的哈希值只要相同,就會(huì)被分配至同一臺(tái)服務(wù)器,該調(diào)度算法可以解決動(dòng)態(tài)網(wǎng)頁(yè)的session 共享問(wèn)題,但有時(shí)會(huì)導(dǎo)致請(qǐng)求分配不均,即無(wú)法保證1:1 的負(fù)載均衡,因?yàn)樵趪?guó)內(nèi)大多數(shù)公司都是NAT 上網(wǎng)模式,多個(gè)客戶端會(huì)對(duì)應(yīng)一個(gè)外部IP,所以,這些客戶端都會(huì)被分配到同一節(jié)點(diǎn)服務(wù)器,從而導(dǎo)致請(qǐng)求分配不均。LVS負(fù)載均衡的 -P參數(shù)、keepalived配置里的persistence_timeout 50 參數(shù)都類似這個(gè)Nginx 里的ip_hash 參數(shù),其功能均為解決動(dòng)態(tài)網(wǎng)頁(yè)的session 共享問(wèn)題。注意:當(dāng)負(fù)載調(diào)度算法為ip_hash時(shí),后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)不能有weight 和backup ,即使有也不會(huì)生效。

upstream myapp1 {

ip_hash;

server 172.1.1.103;

server 172.1.1.104;

}



3.輪詢

按客戶端請(qǐng)求順序把客戶端的請(qǐng)求逐一分配到不同的后端節(jié)點(diǎn)服務(wù)器,如果后端節(jié)點(diǎn)服務(wù)器宕機(jī)(默認(rèn)情況下nginx只檢測(cè)80端口)。宕機(jī)的服務(wù)器會(huì)自動(dòng)從節(jié)點(diǎn)服務(wù)器池中剔除,以便客戶端的用戶訪問(wèn)不受影響。新的請(qǐng)求會(huì)分配給正產(chǎn)的服務(wù)器。

upstream myapp1 {

server 172.1.1.103;

server 172.1.1.104;

}



4.fair

調(diào)度算法會(huì)根據(jù)后端節(jié)點(diǎn)服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。這是更加智能的調(diào)度算法。此種算法可以依據(jù)頁(yè)面大小和加載時(shí)間長(zhǎng)短智能地進(jìn)行負(fù)載均衡,也就是根據(jù)后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。Nginx本身是不支持 fair調(diào)度算法的,如果需要使用這種調(diào)度算法,必須下載Nginx 的相關(guān)模塊upstream_fair。

upstream myapp1 {

fair;

server 172.1.1.103;

server 172.1.1.104;

}



5.url_hash

按訪問(wèn)URL 的 hash結(jié)果來(lái)分配請(qǐng)求,使每個(gè)URL定向到同一個(gè)后端服務(wù)器,可以進(jìn)一步提高后端緩存服務(wù)器的效率命中率。(多用于后端服務(wù)器為緩存時(shí)的場(chǎng)景下)Nginx本身是不支持rul_hash的,如果需要使用這種調(diào)度算法,必須安裝Nginx 的hash模塊軟件包。

upstream myapp1 {

server 172.1.1.103;

server 172.1.1.104;

hash $request_uri;

hash_method crc32;

}



6.Nginx負(fù)載均衡調(diào)度狀態(tài)

在Nginxupstream模塊中,可以設(shè)定每臺(tái)后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài),常用的狀態(tài)有:

  • 1、down,表示當(dāng)前的server暫時(shí)不參與負(fù)載均衡

  • 2、backup,預(yù)留的備份機(jī)器。當(dāng)其他所有的非backup機(jī)器出現(xiàn)故障或者忙的時(shí)候,才會(huì)請(qǐng)求backup機(jī)器,因此這臺(tái)機(jī)器的訪問(wèn)壓力最低

  • 3、max_fails,允許請(qǐng)求失敗的次數(shù),默認(rèn)為1,當(dāng)超過(guò)最大次數(shù)時(shí),返回proxy_next_upstream模塊定義的錯(cuò)誤。

  • 4、fail_timeout,請(qǐng)求失敗超時(shí)時(shí)間,在經(jīng)歷了max_fails次失敗后,暫停服務(wù)的時(shí)間。max_fails和fail_timeout可以一起使用。




nginx負(fù)載均衡運(yùn)用場(chǎng)景



1.HTTP負(fù)載均衡

upstream模塊控制HTTP的負(fù)載均衡。這個(gè)模塊定義了一個(gè)目的池,這個(gè)目的池可以用IP地址和DNS記錄,或者混合使用。


upstream模塊模塊還定義了任何單個(gè)請(qǐng)求是如何分配給任何上游服務(wù)器。


在下邊的例子中,srv1不參與負(fù)載,srv2只有在其他服務(wù)器宕機(jī)或忙時(shí)才參與負(fù)載,srv3、srv4參與負(fù)載,其中每六次srv3訪問(wèn)五次,srv4一次。所有的請(qǐng)求被代理到服務(wù)組node,然后nginx負(fù)載均衡的分發(fā)請(qǐng)求。


nginx反向代理實(shí)現(xiàn)包括下面這些負(fù)載均衡HTTP、HTTPS、FastCGI、uwsgi,SCGI和memcached。

要配置HTTPS的負(fù)載均衡,只需使用“https”開頭的協(xié)議。

當(dāng)要設(shè)置FastCGI,uwsgi,SCGI,或者memcached的負(fù)載平衡,分別使用fastcgi_pass,uwsgi_pass,scgi_pass和memcached_pass指令。

upstream node {

server 192.9.191.31:8001 down;

server 192.9.191.31:8002 backup;

server www.aa.com:8003 weight=5;

server 192.9.191.31:8004 max_fail=1 fail_timeout=10s;

}

server{

listen 80;

server_name www.test.com test.com;

location / {

proxy_pass http://node;

}

}



2.TCP、UDP負(fù)載均衡

Nginx使用了一個(gè)新的stream模塊來(lái)實(shí)現(xiàn)TCP負(fù)載均衡,這個(gè)模塊,類似于http和mail模塊,允許我們配置一組監(jiān)聽TCP連接的服務(wù)。允許你配置多個(gè)服務(wù)的TCP連接,通過(guò)在upstream的server組中配置proxy_pass指令。


TCP負(fù)載均衡支持Nginx原有的調(diào)度算法,包括輪詢調(diào)度,哈希(選擇一致)等。同時(shí),調(diào)度信息數(shù)據(jù)也會(huì)和健壯性檢測(cè)模塊一起協(xié)作,為每個(gè)連接選擇適當(dāng)?shù)哪繕?biāo)上游服務(wù)器。

和其他upstream模塊一樣,TCP的stream模塊也支持自定義負(fù)載均和的轉(zhuǎn)發(fā)權(quán)重(配置weight),還有backup和down的參數(shù),用于踢掉失效的上游服務(wù)器。max_conns參數(shù)可以限制一臺(tái)服務(wù)器的TCP連接數(shù)量,根據(jù)服務(wù)器的容量來(lái)設(shè)置恰當(dāng)?shù)呐渲脭?shù)值,尤其在高并發(fā)的場(chǎng)景下,可以達(dá)到過(guò)載保護(hù)的目的。

stream{

upstream mysql_read {

server read1.example.com:3306 weight=5;

server read2.example.com:3306;

server 10.10.12.34:3306 backup;

}


server {

listen 3306;

proxy_pass mysql_read;

}


}





案例分享



案例一

后端3臺(tái)tomcat服務(wù)器以2主一備的形式通過(guò)2臺(tái)nginx服務(wù)器實(shí)現(xiàn)負(fù)載均衡,同時(shí)nginx通過(guò)keepalived實(shí)現(xiàn)主備配置

1、地址分配

nginx:172.1.1.106、172.1.1.107

VIP地址:172.1.1.108

tomcatIP:172.1.1.102、172.1.1.103、172.1.1.105


2、應(yīng)用部署及配置

  1. 環(huán)境配置及tomcat安裝:

安裝java環(huán)境:





chmod +x jdk-6u16-linux-i586.bin  

./jdk-6u16-linux-i586.bin  

ln -s /usr/local/jdk-1.6.0-16/bin/java /usr/bin/java  

ln -s /usr/local/jdk-1.6.0-16/bin/javac /usr/bin/javac  

ln -s /usr/local/jdk-1.6.0-16 /usr/local/jdk  

ln -s /usr/local/jdk-1.6.0-16/jre /usr/local/jre  

tar zxvf apache-tomcat-6.0.20.tar.gz  

mv apache-tomcat-6.0.20 /usr/local/tomcat


設(shè)置環(huán)境變量:





JAVA_HOME=/usr/local/jdk  

export JAVA_HOME  

JRE_HOME=/usr/local/jre  

export JRE_HOME  

CLASSPATH=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jre/lib  

export CLASSPATH  

PATH=$PATH:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bin:/usr/local/jre/bin  

export PATH  

TOMCAT_HOME=/usr/local/tomcat  

export TOMCAT_HOME




  1. nginx安裝及配置

下載及安裝nginx:





wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz  

tar zxvf pcre-7.7.tar.gz  

cd pcre-7.7/  

./configure  

make && make install  

wget http://sysoev.ru/nginx/nginx-0.7.17.tar.gz  

tar zxvf nginx-0.7.17.tar.gz  

cd nginx-0.7.17/  

./configure --prefix=/usr/local/nginx 

make && make install 




nginx.conf配置文件,兩臺(tái)nginx服務(wù)器保持一致





user nobody nobody;  

worker_processes 1;  

pid /usr/local/nginx/logs/nginx.pid;  

worker_rlimit_nofile 51200;  

events  

{  

use epoll;  

worker_connections 51200;  

}  

http{  

include       mime.types;  

default_type application/octet-stream;  

server_names_hash_bucket_size 128;  

client_header_buffer_size 32k;  

large_client_header_buffers 4 32k;  

client_max_body_size 8m;  

sendfile on;  

tcp_nopush     on;  

keepalive_timeout 60;  

tcp_nodelay on;  

fastcgi_connect_timeout 300;  

fastcgi_send_timeout 300;  

fastcgi_read_timeout 300;  

fastcgi_buffer_size 64k;  

fastcgi_buffers 4 64k;  

fastcgi_busy_buffers_size 128k;  

fastcgi_temp_file_write_size 128k;  

gzip on;  

gzip_min_length 1k;  

gzip_buffers     4 16k;  

gzip_http_version 1.0;  

gzip_comp_level 2;  

gzip_types       text/plain application/x-javascript text/css application/xml;  

gzip_vary on;  

upstream node

{  

server 172.1.1.102:8080;  

server 172.1.1.103:8080;  

server 172.1.1.105:8080 backup;  

}  

server {  

listen 80;  

server_name test.com;  

location / {  

root /var/www ;  

index index.jsp index.htm index.html;  

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 http://node;  

}  

log_format access $remote_addr - $remote_user [$time_local] "$request"  

$status $body_bytes_sent "$http_referer"  

"$http_user_agent" $http_x_forwarded_for;  

access_log /var/log/access.log access;  

}  

}


  1. Nginx服務(wù)器雙機(jī)部署

Keepalived下載安裝:





wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz  

http://www.keepalived.org/software/keepalived-1.2.13.tar.gz

tar zxvf keepalived-1.1.15.tar.gz  

cd keepalived-1.1.15  

./configure  

make  

make install  

cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/  

cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/  

mkdir /etc/keepalived  

cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/  

cp /usr/local/sbin/keepalived /usr/sbin/  

service keepalived start|stop 



兩臺(tái)nginx服務(wù)器上keepalived配置文件

172.1.1.106主機(jī):





ip avrrp_instance VI_INET1 {  

        state MASTER  

        interface eth0  

        virtual_router_id 53  

        priority 200  

        advert_int 1  

        authentication {  

                auth_type pass  

                auth_pass yourpass  

        }  

        virtual_ipaddress {  

                172.1.1.108  

        }  

}  



172.1.1.107主機(jī):





vrrp_instance VI_INET1 {  

        state BACKUP  

        interface eth0  

        virtual_router_id 53  

        priority 100  

        advert_int 1  

        authentication {  

                auth_type pass  

                auth_pass yourpass  

        }  

        virtual_ipaddress {  

                172.1.1.108  

        }  



以上步驟即可完成nginx主備下的負(fù)載均衡配置,具體負(fù)載策略大家可以根據(jù)現(xiàn)場(chǎng)環(huán)境實(shí)際情況進(jìn)行調(diào)整,配置僅供參考。



案例二

在流量陡增的互聯(lián)網(wǎng)面前,接口限流也是很有必要的,尤其是針對(duì)高并發(fā)的場(chǎng)景。Nginx的限流主要是兩種方式:限制訪問(wèn)頻率和限制并發(fā)連接數(shù)。該案例就是一個(gè)通過(guò)限制單個(gè)IP并發(fā)連接數(shù)防止后端服務(wù)器過(guò)載的例子。


  1. 維護(hù)人員接到告警發(fā)現(xiàn)tuxedo中間件多個(gè)服務(wù)出現(xiàn)堵塞,嘗試擴(kuò)服務(wù)或重啟均無(wú)法解決。


  1. 對(duì)比業(yè)務(wù)量情況,發(fā)現(xiàn)同比環(huán)比均超30%以上



  1. 隨即調(diào)整nginx限流策略,配置及注釋如下





http {

   include      mime.types;

   default_type application/octet-stream;

   proxy_intercept_errors on;


   #log_format main  $remote_addr - $remote_user [$time_local] "$request"

   #                 $status $body_bytes_sent "$http_referer"

   #                 "$http_user_agent" "$http_x_forwarded_for";


   #access_log logs/access.log  main;


   log_format main  $remote_addr - $remote_user [$time_local] "$request"

                     $status $body_bytes_sent "$http_referer"

                     "$http_user_agent" "$http_x_forwarded_for";


   log_format acc "$remote_addr $remote_user [$time_local] $request_method $uri $args $server_protocol"

                  " $status $body_bytes_sent $request_time $http_referer $upstream_addr $upstream_cache_status"

                  " $upstream_status $http_x_forwarded_for $cookie_route $http_host $http_user_agent <<$request_body>> <<$resp_body>> ";


   access_log logs/access_acc$hostname$year$month$day.log acc ;


   sendfile       on;

   tcp_nopush     on;

   keepalive_timeout 65;

   client_header_timeout 60;

   client_body_timeout 60;

   reset_timedout_connection on;

   send_timeout 60;

   

   server_tokens off;

   proxy_next_upstream    error timeout;

   

   proxy_set_header       Host $http_host;    

   proxy_set_header       X-Real-IP $http_x_forwarded_for;

   proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;

   

   proxy_connect_timeout  65;

   proxy_send_timeout     120;

   proxy_read_timeout     120;

   proxy_buffer_size      8k;

   proxy_buffers          8 64k;

   proxy_busy_buffers_size 128k;

   proxy_temp_file_write_size 128k;

   

   proxy_http_version 1.1;  


 limit_conn_zone $binary_remote_addr zone=one:10m;

##定義一個(gè)10M的名字為one的內(nèi)存區(qū)域,用于記錄訪問(wèn)頻次;

   upstream dt_cluster {

       server 172.1.1.230:17001;

       server 172.1.1.230:17002;

       server 172.1.1.230:17003;

       server 172.1.1.230:17004;

       keepalive 32;

       check interval=5000 rise=2 fall=3 timeout=10000;

     }

   

   lua_package_path "/usr/local/nginx/lua/lua-resty-redis/lib/?.lua;;";


   #gzip on;


   server {

       listen      7001;

       listen      7002;

       listen      7003;

       listen      7004;

       

       #server_name localhost;


       #charset koi8-r;


       #access_log logs/host.access.log  main;


       set $resp_body "";      

                               location /OpenEbus {

                                              proxy_pass http://dt_cluster;

                                 #              include body_filter_by_lua.conf;

                                 #               lua_need_request_body on;

                                 #               body_filter_by_lua

                                 #                              local resp_body = string.sub(ngx.arg[1], 1, 1000)

                                 #                              ngx.ctx.buffered  = (ngx.ctx.buffered or "") .. resp_body

                                 #                              if ngx.arg[2] then

                                 #                                     ngx.var.resp_body = ngx.ctx.buffered

                                 #                              end

                                 #               ;

                               

limit_conn one  250;

##限制并發(fā)連接最多250個(gè);


}

                                       

                               location /hello {

                                                default_type text/plain;

                                                content_by_lua ngx.say("hello, lua");

                                       }

                                       


location /mockService {

                       proxy_pass http://dt_cluster;

                    }


       location / {

                         return 403;

                                       }      

   }

}



通過(guò)使用limit_conn_zone 和limit_conn 對(duì)某個(gè)目錄或指定后綴,比如.html或.jpg進(jìn)行并發(fā)連接限制。有了連接數(shù)限制,相當(dāng)于限制了客戶端瀏覽器和Nginx之間的管道個(gè)數(shù),瀏覽器通過(guò)管道運(yùn)輸請(qǐng)求,如同向自來(lái)水管中放水,水的流速和壓力對(duì)于管道另外一端是有影響的。為了防止不信任的客戶端通過(guò)這個(gè)管道瘋狂發(fā)送請(qǐng)求,消耗CPU內(nèi)存等資源,以及防止URL不斷發(fā)出連接請(qǐng)求,必須對(duì)請(qǐng)求的速度進(jìn)行限制,如同對(duì)水流速度限制一樣。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/130213.html

相關(guān)文章

  • Nginx入門到實(shí)戰(zhàn)(3)負(fù)載均衡和緩存服務(wù)

    摘要:負(fù)載均衡與緩存服務(wù)也是屬于的實(shí)用場(chǎng)景之一,因?yàn)槟K相對(duì)重要,所以沒(méi)有一同放入入門到實(shí)戰(zhàn)場(chǎng)景實(shí)現(xiàn)篇文章中,將其單獨(dú)提取出來(lái)一負(fù)載均衡負(fù)載均衡的實(shí)現(xiàn)方法就是我們上章介紹的反向代理。 負(fù)載均衡與緩存服務(wù)也是屬于 nginx 的實(shí)用場(chǎng)景之一,因?yàn)槟K相對(duì)重要,所以沒(méi)有一同放入 Nginx入門到實(shí)戰(zhàn)(2)場(chǎng)景實(shí)現(xiàn)篇 文章中,將其單獨(dú)提取出來(lái) 一、負(fù)載均衡 負(fù)載均衡的實(shí)現(xiàn)方法就是我們上章介紹的反向...

    fredshare 評(píng)論0 收藏0
  • Nginx入門到實(shí)戰(zhàn)(3)負(fù)載均衡和緩存服務(wù)

    摘要:負(fù)載均衡與緩存服務(wù)也是屬于的實(shí)用場(chǎng)景之一,因?yàn)槟K相對(duì)重要,所以沒(méi)有一同放入入門到實(shí)戰(zhàn)場(chǎng)景實(shí)現(xiàn)篇文章中,將其單獨(dú)提取出來(lái)一負(fù)載均衡負(fù)載均衡的實(shí)現(xiàn)方法就是我們上章介紹的反向代理。 負(fù)載均衡與緩存服務(wù)也是屬于 nginx 的實(shí)用場(chǎng)景之一,因?yàn)槟K相對(duì)重要,所以沒(méi)有一同放入 Nginx入門到實(shí)戰(zhàn)(2)場(chǎng)景實(shí)現(xiàn)篇 文章中,將其單獨(dú)提取出來(lái) 一、負(fù)載均衡 負(fù)載均衡的實(shí)現(xiàn)方法就是我們上章介紹的反向...

    fsmStudy 評(píng)論0 收藏0
  • nginx網(wǎng)站性能優(yōu)化篇(3)】反向代理實(shí)現(xiàn)負(fù)載均衡

    摘要:注意本篇文章為負(fù)載均衡的理論篇后續(xù)找個(gè)機(jī)會(huì)推出實(shí)戰(zhàn)篇。理論篇主要講述如何配置負(fù)載均衡配置負(fù)載均衡不難。常用的狀態(tài)有,表示當(dāng)前的暫時(shí)不參與負(fù)載均衡。注,當(dāng)負(fù)載調(diào)度算法為時(shí),后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)不能是和。 注意,本篇文章為負(fù)載均衡的理論篇,后續(xù)找個(gè)機(jī)會(huì)推出實(shí)戰(zhàn)篇。理論篇主要講述如何配置負(fù)載均衡,配置負(fù)載均衡不難。但實(shí)戰(zhàn)中要要注意幾個(gè)點(diǎn),比如如何做到多服務(wù)器之間的數(shù)據(jù)共享(ses...

    xi4oh4o 評(píng)論0 收藏0
  • 后端技術(shù)精選

    摘要:服務(wù)教程在它提出十多年后的今天,已經(jīng)成為最重要的應(yīng)用技術(shù)之一。全方位提升網(wǎng)站打開速度前端后端新的技術(shù)如何在內(nèi)完整打開網(wǎng)站會(huì)直接影響用戶的滿意度及留存率,在前端后端數(shù)據(jù)緩存加速等等方面都有諸多可以提升。 HTTPS 原理剖析與項(xiàng)目場(chǎng)景 最近手頭有兩個(gè)項(xiàng)目,XX 導(dǎo)航和 XX 產(chǎn)業(yè)平臺(tái),都需要使用 HTTPS 協(xié)議,因此,這次對(duì) HTTPS 協(xié)議做一次整理與分享。 使用緩存應(yīng)該注意哪些問(wèn)題...

    GitCafe 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<