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

Nginx后端節(jié)點(diǎn)健康檢查實(shí)踐

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

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

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

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

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

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

1. 默認(rèn)配置是什么樣?

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

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

但其實(shí)默認(rèn)背后隱藏著這些參數(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)鍵機(jī)制:

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

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

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

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

② 健康檢查(max_fails + fail_timeout)

  • max_fails=1:允許1次失敗

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

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

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

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

舉個生活中的例子:

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

  • 這個過程浪費(fèi)了60秒

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

總結(jié)缺點(diǎn):

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

三、淘寶的“進(jìn)階版”健康檢查

1. 這是什么?

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

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

2. 配置示例

  • nginx
upstream cluster {
    server 192.168.0.1:80;
    server 192.168.0.2:80;
    # 重點(diǎn)在這里:主動健康檢查
    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次,就認(rèn)為服務(wù)器好了
  • fall=3:連續(xù)失敗3次,才認(rèn)為服務(wù)器真掛了
  • timeout=4000:等待響應(yīng)的超時時間(4秒)
  • type=http:用HTTP協(xié)議檢查(不只是檢查TCP連接)
  • check_http_send:發(fā)送什么請求去檢查(一般用HEAD減少數(shù)據(jù)量)
  • check_http_expect_alive:什么響應(yīng)碼算正常(默認(rèn)2xx和3xx)

4. 進(jìn)階版好在哪?

還是那個例子:

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

優(yōu)勢:

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

四、還可以直接使用Tengine

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

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

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

五、總結(jié)對比

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

一句話總結(jié):

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

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

相關(guān)文章

最新評論

宁河县| 永年县| 邓州市| 长沙市| 神池县| 曲沃县| 滦平县| 砀山县| 余姚市| 武穴市| 六安市| 东乡县| 凤阳县| 大洼县| 冀州市| 梅河口市| 邢台市| 镇沅| 甘洛县| 含山县| 民丰县| 南投县| 临沧市| 汕尾市| 新绛县| 临城县| 永丰县| 宁河县| 平潭县| 汶川县| 阜南县| 安岳县| 手机| 石狮市| 礼泉县| 乌拉特前旗| 溆浦县| 承德县| 青岛市| 西丰县| 阜阳市|