nginx之ngx_http_upstream_module模塊

一、ngx_http_upstream_module調(diào)度模塊

  • 把后端服務(wù)器組成服務(wù)器組,然后調(diào)度,模塊用于定義可由proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, and memcached_pass 指令引用的服務(wù)器組

1、 upstream name { ... }

  • 定義后端服務(wù)器組;引入一個新的上下文;只能用于http{}上下文中;

  • 默認(rèn)的調(diào)度方法是wrr;

2、 server address [parameters];

  • 定義服務(wù)器地址和相關(guān)的參數(shù);

(1)地址格式:
IP[:PORT]
HOSTNAME[:PORT]
unix:/PATH/TO/SOME_SOCK_FILE

(2) 參數(shù):
  • weight=number 權(quán)重,默認(rèn)為1;
  • max_fails=number 失敗嘗試的最大次數(shù);
  • fail_timeout=time 設(shè)置服務(wù)器為不可用狀態(tài)的超時(shí)時(shí)長;
  • backup 把服務(wù)器標(biāo)記為“備用”狀態(tài);
  • down 手動標(biāo)記其為不可用;
(3) least_conn;

最少連接調(diào)度算法;當(dāng)server擁有不同的權(quán)重時(shí)為wlc;當(dāng)所有后端主機(jī)的連接數(shù)相同時(shí),則使用wrr進(jìn)行調(diào)度;

(4) least_time header | last_byte;

最短平均響應(yīng)時(shí)長和最少連接;
header:response_header;
last_byte: full_response;

僅Nginx Plus有效;

(5) ip_hash;

源地址hash算法;能夠?qū)碜酝粋€源IP地址的請求始終發(fā)往同一個upstream server;

(6) hash key [consistent];

基于指定的key的hash表實(shí)現(xiàn)請求調(diào)度,此處的key可以文本、變量或二者的組合;

consistent:參數(shù),指定使用一致性hash算法;

示例:
hash $request_uri consistent
hash $remote_addr
hash $cookie_name
(7) keepalive connections;

可使用長連接的連接數(shù)量;

(8) health_check [parameters];

定義對后端主機(jī)的健康狀態(tài)檢測機(jī)制;只能用于location上下文;

可用參數(shù):
interval=time:檢測頻率,默認(rèn)為每隔5秒鐘;
fails=number:判斷服務(wù)器狀態(tài)轉(zhuǎn)為失敗需要檢測的次數(shù);
passes=number:判斷服務(wù)器狀態(tài)轉(zhuǎn)為成功需要檢測的次數(shù);
uri=uri:判斷其健康與否時(shí)使用的uri;
match=name:基于指定的match來衡量檢測結(jié)果的成敗;
port=number:使用獨(dú)立的端口進(jìn)行檢測;

僅Nginx Plus有效;

(9) match name { ... }

Defines the named test set used to verify responses to health check requests.
定義衡量某檢測結(jié)果是否為成功的衡量機(jī)制;

專用指令:
status:期望的響應(yīng)碼;
status CODE
status ! CODE
...
header:基于響應(yīng)報(bào)文的首部進(jìn)行判斷
header HEADER=VALUE
header HEADER ~ VALUE
...
body:基于響應(yīng)報(bào)文的內(nèi)容進(jìn)行判斷
body ~ "PATTERN"
body !~ "PATTERN"

二、基于服務(wù)器組調(diào)度示例

  • 調(diào)度VS服務(wù)設(shè)置
[root@vs conf.d]# vim ilinux.conf#編輯

server{
       listen 80;  #監(jiān)聽80端口
        server_name www.linux.io;#服務(wù)名稱

        location / {
                root /data/nginx/html;
                proxy_pass http://webservs;#代理到web組服務(wù)器
}
}

[root@vs conf.d]# vim ../nginx.conf

http {
.........
    upstream websrvs{           #設(shè)置代理組
                 ip_hash; #綁定來自同一個客戶端ip請求始終分發(fā)到同一主機(jī)
                hash $request_uri consistent;#綁定同一uri請求始終分發(fā)到同一主機(jī),一致性哈希環(huán)算法
                 server 192.168.1.11:80 weight=2;#加權(quán)輪詢
                 server 192.168.1.12:80 fail_timeout=1 max_fails=3;#檢測失敗超時(shí)1秒,最大檢測失敗3次
             server 127.0.0.1:80 backup;#當(dāng)后端服務(wù)器全部離線,啟用備用服務(wù)器
               }

客戶端測試:

輪詢調(diào)度:
[root@mysql ~]# curl http://www.ilinux.io/index.html
<h1>Upstream Server1</h1>
[root@mysql ~]# curl http://www.ilinux.io/index.html
<h1>Upstream Server2</h1>
[root@mysql ~]# curl http://www.ilinux.io/index.html
<h1>Upstream Server1</h1>
[root@mysql ~]# curl http://www.ilinux.io/index.html
<h1>Upstream Server2</h1>
加權(quán)輪詢調(diào)度:
[root@mysql ~]# for i in {1..10};do curl http://www.ilinux.io/index.html;done
<h1>Upstream Server1</h1>
<h1>Upstream Server1</h1>
<h1>Upstream Server2</h1>
<h1>Upstream Server1</h1>
<h1>Upstream Server1</h1>
<h1>Upstream Server2</h1>
<h1>Upstream Server1</h1>
<h1>Upstream Server1</h1>
<h1>Upstream Server2</h1>
<h1>Upstream Server1</h1>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • Nginx簡介 解決基于進(jìn)程模型產(chǎn)生的C10K問題,請求時(shí)即使無狀態(tài)連接如web服務(wù)都無法達(dá)到并發(fā)響應(yīng)量級一萬的現(xiàn)...
    魏鎮(zhèn)坪閱讀 2,214評論 0 9
  • 以下內(nèi)容來自官方文檔 http://nginx.org/en/docs/http/ngx_http_upstrea...
    再回到從前閱讀 2,794評論 0 1
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 33,022評論 24 1,002
  • 1.簡介: ? Nginx:engine X ,2002年,開源,商業(yè)版? http協(xié)議:web服務(wù)器(類似于ht...
    尛尛大尹閱讀 2,011評論 0 3

友情鏈接更多精彩內(nèi)容