一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - Nginx - Nginx http運行狀況健康檢查配置過程解析

Nginx http運行狀況健康檢查配置過程解析

2020-01-12 16:06alpha Nginx

這篇文章主要介紹了Nginx http運行狀況健康檢查配置過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

被動檢查

對于被動健康檢查,NGINX 和 NGINX Plus 會在事件發生時對其進行監控,并嘗試恢復失敗的連接。如果仍然無法恢復正常,NGINX 開源版和 NGINX Plus 會將服務器標記為不可用,并暫時停止向其發送請求,直到它再次標記為活動狀態。

上游服務器標記為不可用的條件是為每個上游服務器定義的,其中包含塊中 server 指令的參數 upstream:

  • fail_timeout - 設置服務器標記為不可用時必須進行多次失敗嘗試的時間,以及服務器標記為不可用的時間(默認為 10 秒)。
  • max_fails - 設置在 fail_timeout 服務器標記為不可用期間必須發生的失敗嘗試次數(默認為 1 次嘗試)。 在以下示例中,如果 NGINX 未能在 30 秒內向服務器發送請求或未收到響應 3 次,則表示服務器在 30 秒內不可用:
?
1
2
3
4
upstream backend {
  server backend1.example.com;
  server backend2.example.com max_fails=3 fail_timeout=30s;
}

需要注意的是如果只有一個單一的服務器組中,將 fail_timeout 和 max_fails 參數被忽略,服務器永遠不會標記為不可用。

服務器慢啟動

最近恢復的服務器很容易被連接淹沒,這可能導致服務器再次被標記為不可用。慢啟動允許上游服務器在恢復或變得可用之后逐漸將其權重從零恢復到其標稱值。這可以指定 upstream 的 server 模塊的 slow_start 參數來完成:

?
1
2
3
4
5
upstream backend {
  server backend1.example.com slow_start=30s;
  server backend2.example.com;
  server 192.0.0.1 backup;
}

注意:如果組中只有一臺服務器,則 slow_start 參數將被忽略,而服務器永遠不會被標記位不可用狀態。慢啟動是 NGINX Plus 的專有功能

NGINX Plus的主動檢查

NGINX Plus 可以通過向每個服務器發送特殊的健康檢查請求并驗證正確的響應來定期檢查上游服務器的運行狀況。

要啟用活動運行狀況檢查:

1.在 location 區塊將 requests(proxy_pass)傳遞給上游組的過程中,包含 health_check 指令:

?
1
2
3
4
5
6
server {
 location / {
   proxy_pass http://backend;
   health_check;
 }
}

此代碼段定義了一個服務器,它將所有請求匹配到 location / 傳遞給調用的上游組 backend。它還使用該 health_check 指令啟用高級運行狀況監視:默認情況下,NGINX Plus 每五秒向組中的每個服務器發送一個 “/” 請求 backend。

如果任何通信錯誤或發生超時(在服務器返回的狀態碼超出 200- 399的范圍)的健康檢查失敗。服務器被標記為不健康,并且 NGINX Plus 在再次通過運行狀況檢查之前不會向其發送客戶端請求。

另一個可選項:您可以指定另一個用于運行狀況檢查的端口,例如,用于監視同一主機上的許多服務的運行狀況。使用指令的 port 參數指定新端口 health_check:

?
1
2
3
4
5
6
server {
 location / {
   proxy_pass  http://backend;
   health_check port=8080;
 }
}

2.在上游服務器組,使用 zone 指令定義一個共享內存區域:

?
1
2
3
4
5
6
7
8
9
http {
 upstream backend {
   zone backend 64k;
   server backend1.example.com;
   server backend2.example.com;
   server backend3.example.com;
   server backend4.example.com;
 }
}

該區域在所有工作進程之間共享,并存儲上游組的配置。這使工作進程能夠使用同一組計數器來跟蹤組中服務器的響應。

可以使用 health_check 指令的參數覆蓋活動運行狀況檢查的默認值:

?
1
2
3
4
location / {
  proxy_pass http://backend;
  health_check interval=10 fails=3 passes=2;
}

此處,該 interval 參數將運行狀況檢查之間的延遲從默認的 5 秒增加到 10 秒。該 fails 參數要求服務器三次運行狀況檢查失敗時,以將其標記為運行狀況不佳(從默認值開始)。最后,passes 參數意味著服務器必須通過兩次連續檢查才能再次標記為健康,而不是默認值。

指定請求的URL

在 health_check 指令中指定 uri 參數來設置健康檢查請求的路由:

?
1
2
3
4
location / {
  proxy_pass http://backend;
  health_check uri=/some/path;
}

指定的 URI 將附加到為 upstream 塊中的服務器設置的服務器域名或IP地址。對于backend 上面聲明的樣本組中的第一個服務器,運行狀況檢查會請求URI http://backend1.example.com/some/path。

定義自定義條件

您可以設置響應必須滿足的自定義條件,以便服務器通過運行狀況檢查。條件在match塊中定義,該塊match在health_check指令的參數中引用。

1.在 http {} 級別,指定 match {} 塊并為其命名,例如:'server_ok'

?
1
2
3
4
5
6
http {
 #...
 match server_ok {
   # tests are here    
 }
}

2.health_check 通過指定塊的 match 參數和 match 參數塊的名稱:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
http {
 #...
 match server_ok {
   status 200-399;
   body !~ "maintenance mode";
 }
 server {
   #...    
   location / {
     proxy_pass http://backend;
     health_check match=server_ok;
   }
 }
}

如果響應的狀態代碼在范圍中,則傳遞運行狀況檢查 200- 399 并且其正文不包含字符串: ‘maintenance mode'

該 match 指令使 NGINX Plus 能夠檢查狀態代碼,標題字段和響應正文。使用此指令可以驗證狀態是否在指定范圍內,響應是否包含標頭,或者標頭或正文是否與正則表達式匹配。該 match 指令可以包含一個狀態條件,一個正文條件和多個標題條件。響應必須滿足 match 塊中定義的所有條件,以便服務器通過運行狀況檢查。

例如,下面的 match 指令匹配有狀態代碼響應 200,精確值 text/html 的Content-Type 標題,頁面中的文字:'Welcome to nginx!'.

?
1
2
3
4
5
match welcome {
  status 200;
  header Content-Type = text/html;
  body ~ "Welcome to nginx!";
}

以下示例使用感嘆號(!)來定義響應不得通過運行狀況檢查的特征。在這種情況下,健康檢查在非 301,302,303,或 307狀態碼,同時并沒有 Refresh 頭信息時將通過檢查,。

?
1
2
3
4
match not_redirect {
  status ! 301-303 307;
  header ! Refresh;
}

健康檢查可以在其他非 HTTP 協議中啟用, 例如 FastCGI, memcached, SCGI, uwsgi 甚至 TCP 和 UDP

很多很好的特性,就是需要 Nginx Plus 才能使用。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://alpha2016.github.io/2019/05/20/Nginx-http%E8%BF%90%E8%A1%8C%E7%8A%B6%E5%86%B5%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男人的天堂在线观看入口 | 情侣奴伺候女王第2部分小说 | 国产成人精品一区二区 | 草草精品视频 | 国产一区二区三区在线 | 国产精品久久久精品日日 | 日韩无遮挡大尺度啪啪影片 | 国产在亚洲线视频观看 | 虎四免费入口 | 女bbbbxxx孕妇 | 久久视频这里只精品99热在线观看 | 国产成人一区二区三区小说 | 免费午夜影片在线观看影院 | 国产成人a v在线影院 | 国产成人精品免费午夜 | 俄罗斯伦理片 | 秋霞啪啪网 | 国产麻豆剧果冻传媒观看免费视频 | 国产 日韩欧美 | 火影小南被爆羞羞网站进入 | 日日操日日舔 | 息与子中文字幕bd | 久久成人免费大片 | 色综合中文字幕在线亚洲 | 男人的天堂在线观看入口 | 欧美综合国产精品日韩一 | 亚洲第一在线 | 欧美成年黄网站色高清视频 | 涩涩国产精品福利在线观看 | 嫩草影院久久99 | 被强上后我成瘾了小说 | 婷婷久久精品 | 欧美日韩一区二区三区久久 | 国产亚洲精品美女久久久 | 日韩毛片免费线上观看 | 精品视频久久久久 | 成人影院在线观看视频 | 欧洲vodafonewi精品 | 香蕉精品高清在线观看视频 | 日韩欧美亚洲天堂 | x8x8在线永久免费观看 |