更新時間:2021-12-17 12:00:36 來源:動力節(jié)點 瀏覽1588次
Nginx在生產(chǎn)環(huán)境中很多情況下是被用來當(dāng)一個反代服務(wù)器,例如http反代,把http的訪問壓力分?jǐn)偟胶蠖说姆?wù)器集群上,而Nginx作為http反代,通常用到的模塊是:ngx_http_proxy_module或ngx_http_fastcgi_module來實現(xiàn)反向代理,以上2個模塊的反代指令所反代的僅僅只一臺服務(wù)器,并不能在該添加多個服務(wù)器,所以,這時候就需要借助ngx_http_upstream模塊定義一組服務(wù)器集群,然后在反代指令上,反代所指的不再是具體服務(wù)器,而是指向所定義的集群上。Nginx不單單能實現(xiàn)7層負(fù)載均衡,前面說的就是Nginx的7層負(fù)載均衡;還能實現(xiàn)4層的負(fù)載均衡,只不過Nginx需要監(jiān)聽在套接字上,而且定義服務(wù)器組時,不再是使用ngx_http_upstream而是使用ngx_stream_upstream模塊,但是不論哪種負(fù)載均衡,他們的指令和實現(xiàn)方式都是類似的。
ngx_http_upstream module
該模塊用于定義后端的服務(wù)器集群,或者叫服務(wù)器組或服務(wù)器池,后端的服務(wù)器,我們稱為上游服務(wù)器upstramserver;結(jié)和proxy_pass,可以把請求轉(zhuǎn)發(fā)到集群中的某一臺服務(wù)器上。
服務(wù)集群中有多臺服務(wù)器,集群中的服務(wù)器調(diào)度方法是由調(diào)度算法決定的,默認(rèn)是加權(quán)輪詢算法,每臺服務(wù)器的權(quán)重默認(rèn)是1,還可以使用hash KEY的方法實現(xiàn)KEY與后端服務(wù)器的對稱綁定。
http_upstream
upsteam需要配置在http上下文中,它自己也引入一個新的上下文,作用:用于指定一組服務(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;
}
}
客戶端測試靜態(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
客戶端測試動態(tài)資源
前面指定了動態(tài)資源的腳本路徑,所以在2臺運行Php服務(wù)的服務(wù)器新建腳本根目錄和腳本文件。
創(chuàng)建目錄和創(chuàng)建測試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
測試:
[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指令的一些常用選項
weighr=number #指定權(quán)重
max_conns=number #限制和后端服務(wù)器的最大連接數(shù)量,默認(rèn)為0不限制,設(shè)置該值能達到過載保護效果。
max_fails=number #最大的失效次數(shù),如果達到該次數(shù),則認(rèn)為該服務(wù)器不可用,默認(rèn)為1
fail_timeout=time #超時時間,和上面的搭配使用
backup #當(dāng)后端所有服務(wù)器都掛了,就反代到backup上
down #此服務(wù)器不可用,用于停機
以上就是關(guān)于“Nginx使用upstream模塊實現(xiàn)7層負(fù)載均衡”的介紹,大家如果想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的Java視頻,里面的內(nèi)容細(xì)致全面,通俗易懂,適合小白學(xué)習(xí),希望對大家能夠有所幫助。
初級 202925
初級 203221
初級 202629
初級 203743