更新時間:2021-12-17 12:00:36 來源:動力節點 瀏覽1579次
Nginx在生產環境中很多情況下是被用來當一個反代服務器,例如http反代,把http的訪問壓力分攤到后端的服務器集群上,而Nginx作為http反代,通常用到的模塊是:ngx_http_proxy_module或ngx_http_fastcgi_module來實現反向代理,以上2個模塊的反代指令所反代的僅僅只一臺服務器,并不能在該添加多個服務器,所以,這時候就需要借助ngx_http_upstream模塊定義一組服務器集群,然后在反代指令上,反代所指的不再是具體服務器,而是指向所定義的集群上。Nginx不單單能實現7層負載均衡,前面說的就是Nginx的7層負載均衡;還能實現4層的負載均衡,只不過Nginx需要監聽在套接字上,而且定義服務器組時,不再是使用ngx_http_upstream而是使用ngx_stream_upstream模塊,但是不論哪種負載均衡,他們的指令和實現方式都是類似的。
ngx_http_upstream module
該模塊用于定義后端的服務器集群,或者叫服務器組或服務器池,后端的服務器,我們稱為上游服務器upstramserver;結和proxy_pass,可以把請求轉發到集群中的某一臺服務器上。
服務集群中有多臺服務器,集群中的服務器調度方法是由調度算法決定的,默認是加權輪詢算法,每臺服務器的權重默認是1,還可以使用hash KEY的方法實現KEY與后端服務器的對稱綁定。
http_upstream
upsteam需要配置在http上下文中,它自己也引入一個新的上下文,作用:用于指定一組服務器集群。
配置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;
}
}
客戶端測試靜態調度
[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
客戶端測試動態資源
前面指定了動態資源的腳本路徑,所以在2臺運行Php服務的服務器新建腳本根目錄和腳本文件。
創建目錄和創建測試Php腳本文件
[root@node2 html]# mkdir -pv /data/web/html
[root@node2 html]# vim test.php
<?php
echo 'node2';
echo PHP_EOL;
同樣的內容傳送到node3
[root@node2 html]# scp test.php [email protected]:/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 #指定權重
max_conns=number #限制和后端服務器的最大連接數量,默認為0不限制,設置該值能達到過載保護效果。
max_fails=number #最大的失效次數,如果達到該次數,則認為該服務器不可用,默認為1
fail_timeout=time #超時時間,和上面的搭配使用
backup #當后端所有服務器都掛了,就反代到backup上
down #此服務器不可用,用于停機
以上就是關于“Nginx使用upstream模塊實現7層負載均衡”的介紹,大家如果想了解更多相關知識,可以關注一下動力節點的Java視頻,里面的內容細致全面,通俗易懂,適合小白學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習