溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Kong 的健康檢查和監(jiān)控

發(fā)布時間:2020-04-11 09:55:25 來源:網(wǎng)絡(luò) 閱讀:405 作者:erdongx 欄目:系統(tǒng)運維

您可以讓 Kong 代理的 API 使用 ring-balancer , 通過添加包含一個或多個目標實體的upstream 實體來配置,每個目標指向不同的IP地址(或主機名)和端口。ring-balancer 將在不同的target之間平衡負載,并基于 uptream 配置對目標執(zhí)行健康檢查,使它們成為健康或不健康的,無論它們是否響應(yīng),ring-balancer 將只把流量路由到健康的target。

Kong 支持兩種健康檢查方式,可以單獨使用,也可以組合使用。

  • active checks:其中定期請求目標中的特定 HTTP 或 HTTPS 端點,并根據(jù)其響應(yīng)確定目標的健康狀態(tài);

  • passive checks: Kong 分析正在代理的通信,并根據(jù)目標的行為響應(yīng)請求來確定目標的健康狀況。

健康和不健康的 target

健康檢查功能的目標是為給定的 Kong 節(jié)點動態(tài)地將 target 標記為健康或不健康。沒有集群范圍內(nèi)的健康信息同步,每個 Kong 節(jié)點分別確定其 target 的健康狀況。這是可以取到的,因為在給定的點上,一個 Kong 節(jié)點可能能夠成功地連接到一個目標,而另一個節(jié)點則無法到達。這樣第一個節(jié)點將認為它是健康的,而第二個則會將其標記為不健康,并開始將流量路由到upstream 的其他 target。

無論是主動探測(針對主動健康檢查)還是代理請求(針對被動健康檢查),都會生成用于確定目標是否健康的數(shù)據(jù)。請求可能會產(chǎn)生TCP錯誤、超時或HTTP狀態(tài)代碼?;诖诵畔ⅲ】禉z查器更新了一系列內(nèi)部計數(shù)器:

  • 如果返回的狀態(tài)碼配置為 “healthy”,則將增加目標的 “Successes” 計數(shù)器,并清除其所有其他計數(shù)器;
  • 如果連接失敗,將增加目標的 “TCP failure”計數(shù)器,并清除 “Successes” 計數(shù)器;
  • 如果超時,將增加目標的 “timeouts” 計數(shù)器并清除 “Successes” 計數(shù)器;
  • 如果返回的狀態(tài)代碼配置為 “unhealthy”,它將增加目標的 “HTTP failures” 計數(shù)器,并清除 “Successes” 計數(shù)器。

如果任何 “TCP failure”、“HTTP failure” 或 “timeout” 計數(shù)器達到其配置的閾值,則target 將被標記為不健康。

如果 “success” 計數(shù)器達到其配置的閾值,則 target 將被標記為健康。
如果一個 upstream 的所有 target 都是不健康,Kong 會將 upstream 的請求返回 503 Service Unavailable 。

  1. 健康檢查只對狀態(tài)是 active 的 target 執(zhí)行,不修改 Kong 數(shù)據(jù)庫中目標的活動狀態(tài)。

  2. 不健康的 target 不會從 loadbalancer 中刪除,因此在使用哈希算法時不會對balancer 布局產(chǎn)生任何影響(只會跳過它們)。

  3. DNS警告和 Balancer 警告也適用于健康檢查。如果對 target 使用主機名,需要確保DNS服務(wù)器始終為完整的 IP地址和名稱,并且不限制響應(yīng)。如果不這樣做,可能會導(dǎo)致沒有執(zhí)行健康檢查。

健康檢查的類型

健康檢查有兩種類型,分別是 Active health checksPassive health checks

Active health checks

Active health checks 就是主動探測他們的健康狀態(tài)。當(dāng) upstream 實體啟用活動健康檢查時,Kong 將定期向 upstream 的每個 target 的配置路徑發(fā)出 HTTP 或 HTTPS 請求。這允許 Kong 根據(jù)探測結(jié)果自動啟用和禁用 balancer 中的 target 。

Active health checks 的周期性是可以被配置的,當(dāng) target 是健康還是不健康。如果其中一個的interval值設(shè)置為零,則在相應(yīng)的場景中禁用檢查。如果兩者都為零,則完全禁用活動健康檢查。

Passive health checks

Passive health checks 是否基于由 Kong 代理的請求(HTTP/HTTPS/TCP)執(zhí)行檢查,而不生成額外的流量。當(dāng) target 變得無響應(yīng)時,被動健康檢查器將檢測到這一點,并將目標標記為不健康。Ring-balancer 將開始跳過這個 target ,因此不會有更多的流量被路由到它。

當(dāng)目標的問題解決,并準備再次接收流量時,Kong管理員可以手動通知health checker目標應(yīng)該再次啟用,通過一個Admin API端點:

$ curl -i -X POST http://localhost:8001/upstreams/my_upstream/targets/10.1.2.3:1234/healthy
HTTP/1.1 204 No Content

這個命令將廣播一個集群范圍的消息,以便將 “health” 狀態(tài)傳播到整個 Kong 集群。這將導(dǎo)致 Kong 節(jié)點重置在 Kong 節(jié)點的所有 worker 中運行的健康檢查器的健康計數(shù)器,從而允許環(huán)平衡器再次將流量路由到目標。

被動健康檢查的優(yōu)點是不會產(chǎn)生額外的流量,但它們不能自動將 target 重新標記為健康狀態(tài):“circuit is broken”,需要由系統(tǒng)管理員重新啟用目標。

Kong 的監(jiān)控

Kong 支持使用 Prometheus 進行監(jiān)控數(shù)據(jù)采集,并且官方提供了采集方式和 Grafana 的Dashboard 模板

官方的 Kong Plugin Prometheus 會定期更新,看上去比較活躍。

除了官網(wǎng)以外,有網(wǎng)友也提供了一個監(jiān)控模板,不過最后一次更新時間是2018 年 5 月 17 日,之后就沒有更新了,大家也可以參考。kong-prometheus-plugin

小結(jié)

Kong 的健康檢查主要介紹了健康檢查的類型,這兩類的健康檢查是可以打開和關(guān)閉的,打開和關(guān)閉的具體方法請參考官網(wǎng)文檔。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI