更新時(shí)間:2021-12-17 12:00:36 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1590次
Nginx在生產(chǎn)環(huán)境中很多情況下是被用來(lái)當(dāng)一個(gè)反代服務(wù)器,例如http反代,把http的訪問(wèn)壓力分?jǐn)偟胶蠖说姆?wù)器集群上,而Nginx作為http反代,通常用到的模塊是:ngx_http_proxy_module或ngx_http_fastcgi_module來(lái)實(shí)現(xiàn)反向代理,以上2個(gè)模塊的反代指令所反代的僅僅只一臺(tái)服務(wù)器,并不能在該添加多個(gè)服務(wù)器,所以,這時(shí)候就需要借助ngx_http_upstream模塊定義一組服務(wù)器集群,然后在反代指令上,反代所指的不再是具體服務(wù)器,而是指向所定義的集群上。Nginx不單單能實(shí)現(xiàn)7層負(fù)載均衡,前面說(shuō)的就是Nginx的7層負(fù)載均衡;還能實(shí)現(xiàn)4層的負(fù)載均衡,只不過(guò)Nginx需要監(jiān)聽(tīng)在套接字上,而且定義服務(wù)器組時(shí),不再是使用ngx_http_upstream而是使用ngx_stream_upstream模塊,但是不論哪種負(fù)載均衡,他們的指令和實(shí)現(xiàn)方式都是類似的。
ngx_http_upstream module
該模塊用于定義后端的服務(wù)器集群,或者叫服務(wù)器組或服務(wù)器池,后端的服務(wù)器,我們稱為上游服務(wù)器upstramserver;結(jié)和proxy_pass,可以把請(qǐng)求轉(zhuǎn)發(fā)到集群中的某一臺(tái)服務(wù)器上。
服務(wù)集群中有多臺(tái)服務(wù)器,集群中的服務(wù)器調(diào)度方法是由調(diào)度算法決定的,默認(rèn)是加權(quán)輪詢算法,每臺(tái)服務(wù)器的權(quán)重默認(rèn)是1,還可以使用hash KEY的方法實(shí)現(xiàn)KEY與后端服務(wù)器的對(duì)稱綁定。
http_upstream
upsteam需要配置在http上下文中,它自己也引入一個(gè)新的上下文,作用:用于指定一組服務(wù)器集群。
配置upstream
upstream static {
server 10.1.1.11 weight=2;
server 10.1.1.12;
}
upstream dynamic {
server 10.1.1.12:9000;
server 10.1.1.13:9000 weight=2;
}
配置反向代理
server {
listen 80;
server_name www.ilinux.io;
index index.php index.html;
location / {
proxy_pass http://static;
}
location ~* \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass dynamic;
fastcgi_param SCRIPT_FILENAME /data/web/html$fastcgi_script_name;
}
location ~* ^/(status|ping)$ {
fastcgi_pass dynamic:9000;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
}
客戶端測(cè)試靜態(tài)調(diào)度
[root@client ~]# for i in {1..100};do curl http://www.ilinux.io/test.html ;done
This page come from NODE1
This Page from node2
This page come from NODE1
This page come from NODE1
This page come from NODE1
This Page from node2
This page come from NODE1
This page come from NODE1
This Page from node2
客戶端測(cè)試動(dòng)態(tài)資源
前面指定了動(dòng)態(tài)資源的腳本路徑,所以在2臺(tái)運(yùn)行Php服務(wù)的服務(wù)器新建腳本根目錄和腳本文件。
創(chuàng)建目錄和創(chuàng)建測(cè)試Php腳本文件
[root@node2 html]# mkdir -pv /data/web/html
[root@node2 html]# vim test.php
<?php
echo 'node2';
echo PHP_EOL;
同樣的內(nèi)容傳送到node3
[root@node2 html]# scp test.php root@10.1.1.13:/data/web/html/test.php
測(cè)試:
[root@client ~]# for i in {1..10};do curl http://www.ilinux.io/test.php ;done
node3
node3
node3
node3
node2
node2
node3
node3
node3
node3
[root@client ~]#
server指令的一些常用選項(xiàng)
weighr=number #指定權(quán)重
max_conns=number #限制和后端服務(wù)器的最大連接數(shù)量,默認(rèn)為0不限制,設(shè)置該值能達(dá)到過(guò)載保護(hù)效果。
max_fails=number #最大的失效次數(shù),如果達(dá)到該次數(shù),則認(rèn)為該服務(wù)器不可用,默認(rèn)為1
fail_timeout=time #超時(shí)時(shí)間,和上面的搭配使用
backup #當(dāng)后端所有服務(wù)器都掛了,就反代到backup上
down #此服務(wù)器不可用,用于停機(jī)
以上就是關(guān)于“Nginx使用upstream模塊實(shí)現(xiàn)7層負(fù)載均衡”的介紹,大家如果想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java視頻,里面的內(nèi)容細(xì)致全面,通俗易懂,適合小白學(xué)習(xí),希望對(duì)大家能夠有所幫助。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743