負(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ù)。
這是一種比較古老的方式,目主要通過(guò)提供不同的線路、不同服務(wù)器鏈接的方式,來(lái)實(shí)現(xiàn)負(fù)載均衡。
這種方式在一些提供下載、在線影院、直播等網(wǎng)站比較常見。
1、部署簡(jiǎn)單,新增服務(wù)器或鏈路只需增加對(duì)應(yīng)的入口即可
2、維護(hù)方便,如果有服務(wù)器宕機(jī)只需關(guān)閉對(duì)應(yīng)入口即可
1、智能化程度不高,需用戶手動(dòng)切換
2、分配不可控,容易出現(xiàn)服務(wù)器訪問(wèn)量極不平衡等情況
大多域名注冊(cè)商都支持多條A記錄的解析,這就是DNS輪詢,DNS服務(wù)器將解析請(qǐng)求按照A記錄的順序,逐一分配到不同的IP上,這樣就完成了簡(jiǎn)單的負(fù)載均衡。
1、基本上無(wú)成本,因?yàn)橥蛎?cè)商的這種解析都是免費(fèi)的;
2、部署方便,除了網(wǎng)絡(luò)拓?fù)涞暮?jiǎn)單擴(kuò)增,新增的Web服務(wù)器只要增加一個(gè)公網(wǎng)IP即可。
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ù)器都不支持;
現(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ù)載均衡交換機(jī),代表有F5、array等。
軟件負(fù)載均衡器,Nginx/LVS/HAProxy是目前使用最廣泛的三種負(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ù)載均衡。
在輪循算法的基礎(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;
}
每個(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;
}
按客戶端請(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;
}
調(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;
}
按訪問(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;
}
在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可以一起使用。
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;
}
}
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)主備配置
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
安裝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
下載及安裝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;
}
}
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ò)載的例子。
維護(hù)人員接到告警發(fā)現(xiàn)tuxedo中間件多個(gè)服務(wù)出現(xiàn)堵塞,嘗試擴(kuò)服務(wù)或重啟均無(wú)法解決。
對(duì)比業(yè)務(wù)量情況,發(fā)現(xiàn)同比環(huán)比均超30%以上
隨即調(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
摘要:負(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)方法就是我們上章介紹的反向...
摘要:負(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)方法就是我們上章介紹的反向...
摘要:注意本篇文章為負(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...
摘要:服務(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)題...
閱讀 1459·2023-01-11 13:20
閱讀 1812·2023-01-11 13:20
閱讀 1263·2023-01-11 13:20
閱讀 2005·2023-01-11 13:20
閱讀 4226·2023-01-11 13:20
閱讀 2879·2023-01-11 13:20
閱讀 1488·2023-01-11 13:20
閱讀 3807·2023-01-11 13:20