最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx后端節(jié)點健康檢查實踐

 更新時間:2026年04月15日 14:34:25   作者:東北甜妹  
文章介紹了Nginx健康檢查的重要性及其ginx自帶健康檢查的機制及其不足,并詳細介紹了淘寶開發(fā)的check模塊的配置方法及其優(yōu)勢,最后,針對不同ginx原ginx自帶模塊和Tengine給出了適用場景建議

一、先說結(jié)論:為什么要做健康檢查?

想象一下,你是一個前臺接待員(Nginx),后面有三個辦公室(后端服務(wù)器)處理業(yè)務(wù)。

如果有間辦公室著火了,你還在不停地往那間辦公室派人,結(jié)果人又跑回來告訴你去不了,這不就浪費了時間嗎?

健康檢查的目的就是:及時發(fā)現(xiàn)哪間辦公室出問題了,暫時別往那里派人,等修好了再恢復(fù)。

二、Nginx自帶的“基礎(chǔ)版”健康檢查

1. 默認配置是什么樣?

Nginx最基礎(chǔ)的配置長這樣:

  • nginx
upstream myapp1 {
    server srv1.example.com;
    server srv2.example.com;
    server srv3.example.com;
}

但其實默認背后隱藏著這些參數(shù):

  • nginx
upstream myapp1 {
    server srv1.example.com weight=1 max_fails=1 fail_timeout=10;
    server srv2.example.com weight=1 max_fails=1 fail_timeout=10;
    server srv3.example.com weight=1 max_fails=1 fail_timeout=10;
}

2. 自帶健康檢查怎么工作?

有兩個關(guān)鍵機制:

① 故障轉(zhuǎn)移(proxy_next_upstream)

  • 當Nginx發(fā)現(xiàn)后端服務(wù)器連接不上、超時或者返回502、503等錯誤時

  • 它會自動把這個請求轉(zhuǎn)發(fā)給另一臺正常的服務(wù)器

  • 默認情況下,連接錯誤和超時都會觸發(fā)轉(zhuǎn)移

② 健康檢查(max_fails + fail_timeout)

  • max_fails=1:允許1次失敗

  • fail_timeout=10:在10秒內(nèi)如果失敗次數(shù)達到1次,就認為這個服務(wù)器掛了

  • 接下來10秒內(nèi),Nginx不會再往這臺服務(wù)器發(fā)請求

  • 10秒后,會再嘗試一下,如果好了就恢復(fù)

3. 自帶模塊有什么問題?

舉個生活中的例子:

  • 你派一個人去A辦公室,等了60秒(超時時間)才確認沒人,然后才轉(zhuǎn)去B辦公室

  • 這個過程浪費了60秒

  • 而且每10秒(fail_timeout)才會嘗試恢復(fù)A辦公室,不夠智能

總結(jié)缺點:

  • 反應(yīng)慢:要等超時時間到了才知道出問題
  • 浪費請求:總會先試一下有問題的服務(wù)器,失敗后才轉(zhuǎn)移
  • 不夠靈活:只能檢查連接,不能檢查業(yè)務(wù)是否正常

三、淘寶的“進階版”健康檢查

1. 這是什么?

淘寶團隊開發(fā)了一個專門的模塊:nginx_upstream_check_module,可以更智能地做健康檢查。

在Tengine(淘寶的Nginx版本)里自帶這個功能,普通Nginx需要打補丁安裝。

2. 配置示例

  • nginx
upstream cluster {
    server 192.168.0.1:80;
    server 192.168.0.2:80;
    # 重點在這里:主動健康檢查
    check interval=5000 rise=1 fall=3 timeout=4000 type=http;
    check_http_send "HEAD / HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx;
}

3. 參數(shù)都是什么意思?

  • interval=5000:每5秒檢查一次
  • rise=1:連續(xù)成功1次,就認為服務(wù)器好了
  • fall=3:連續(xù)失敗3次,才認為服務(wù)器真掛了
  • timeout=4000:等待響應(yīng)的超時時間(4秒)
  • type=http:用HTTP協(xié)議檢查(不只是檢查TCP連接)
  • check_http_send:發(fā)送什么請求去檢查(一般用HEAD減少數(shù)據(jù)量)
  • check_http_expect_alive:什么響應(yīng)碼算正常(默認2xx和3xx)

4. 進階版好在哪?

還是那個例子:

  • 你不只是派人去敲門,而是隔5秒就打個電話問問"你還好嗎?"
  • 如果連續(xù)3次沒人接,才認定真的出問題了
  • 一旦有人接了一次,馬上恢復(fù)服務(wù)

優(yōu)勢:

  • 主動檢查:不用等用戶請求來才發(fā)現(xiàn)問題
  • 反應(yīng)快:毫秒級的檢查間隔
  • 可定制:可以檢查具體某個頁面,甚至發(fā)送自定義請求
  • 監(jiān)控頁面:可以查看所有后端節(jié)點的健康狀態(tài)

四、還可以直接使用Tengine

如果不想打補丁,可以直接安裝淘寶的Tengine:

  • nginx
./configure --prefix=/usr/local/tengine --add-module=/path/to/ngx_http_upstream_check_module

配置是一樣的,而且更穩(wěn)定。

五、總結(jié)對比

對比項Nginx原生淘寶check模塊
檢查方式被動(靠用戶請求觸發(fā))主動(定時檢查)
發(fā)現(xiàn)問題的速度慢(等超時)快(幾秒內(nèi))
是否浪費請求會先發(fā)給壞節(jié)點完全避開壞節(jié)點
檢查內(nèi)容只能檢查連接可檢查具體頁面
監(jiān)控界面有(/status頁面)
配置靈活度一般

一句話總結(jié):

  • 小項目、對可用性要求不高:用Nginx自帶的就夠了
  • 正式環(huán)境、要求高可用:建議用淘寶的check模塊或直接上Tengine

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

山丹县| 安乡县| 舞钢市| 平陆县| 富蕴县| 安丘市| 苍山县| 新丰县| 安乡县| 通许县| 崇阳县| 甘泉县| 榆社县| 和田市| 湘潭县| 朝阳区| 乌兰浩特市| 永修县| 云安县| 专栏| 固镇县| 沙坪坝区| 拉萨市| 乌兰察布市| 思南县| 克什克腾旗| 岳阳县| 喀什市| 叙永县| 乐平市| 手游| 边坝县| 怀远县| 南充市| 师宗县| 原阳县| 临海市| 滕州市| 赤壁市| 日土县| 镇赉县|