您好,登錄后才能下訂單哦!
您可以讓 Kong 代理的 API 使用 ring-balancer , 通過添加包含一個或多個目標實體的upstream 實體來配置,每個目標指向不同的IP地址(或主機名)和端口。ring-balancer 將在不同的target之間平衡負載,并基于 uptream 配置對目標執行健康檢查,使它們成為健康或不健康的,無論它們是否響應,ring-balancer 將只把流量路由到健康的target。
Kong 支持兩種健康檢查方式,可以單獨使用,也可以組合使用。
active checks:其中定期請求目標中的特定 HTTP 或 HTTPS 端點,并根據其響應確定目標的健康狀態;
健康檢查功能的目標是為給定的 Kong 節點動態地將 target 標記為健康或不健康。沒有集群范圍內的健康信息同步,每個 Kong 節點分別確定其 target 的健康狀況。這是可以取到的,因為在給定的點上,一個 Kong 節點可能能夠成功地連接到一個目標,而另一個節點則無法到達。這樣第一個節點將認為它是健康的,而第二個則會將其標記為不健康,并開始將流量路由到upstream 的其他 target。
無論是主動探測(針對主動健康檢查)還是代理請求(針對被動健康檢查),都會生成用于確定目標是否健康的數據。請求可能會產生TCP錯誤、超時或HTTP狀態代碼。基于此信息,健康檢查器更新了一系列內部計數器:
如果任何 “TCP failure”、“HTTP failure” 或 “timeout” 計數器達到其配置的閾值,則target 將被標記為不健康。
如果 “success” 計數器達到其配置的閾值,則 target 將被標記為健康。
如果一個 upstream 的所有 target 都是不健康,Kong 會將 upstream 的請求返回 503 Service Unavailable
。
健康檢查有兩種類型,分別是 Active health checks
和 Passive health checks
Active health checks 就是主動探測他們的健康狀態。當 upstream 實體啟用活動健康檢查時,Kong 將定期向 upstream 的每個 target 的配置路徑發出 HTTP 或 HTTPS 請求。這允許 Kong 根據探測結果自動啟用和禁用 balancer 中的 target 。
Active health checks 的周期性是可以被配置的,當 target 是健康還是不健康。如果其中一個的interval值設置為零,則在相應的場景中禁用檢查。如果兩者都為零,則完全禁用活動健康檢查。
Passive health checks 是否基于由 Kong 代理的請求(HTTP/HTTPS/TCP)執行檢查,而不生成額外的流量。當 target 變得無響應時,被動健康檢查器將檢測到這一點,并將目標標記為不健康。Ring-balancer 將開始跳過這個 target ,因此不會有更多的流量被路由到它。
當目標的問題解決,并準備再次接收流量時,Kong管理員可以手動通知health checker目標應該再次啟用,通過一個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” 狀態傳播到整個 Kong 集群。這將導致 Kong 節點重置在 Kong 節點的所有 worker 中運行的健康檢查器的健康計數器,從而允許環平衡器再次將流量路由到目標。
被動健康檢查的優點是不會產生額外的流量,但它們不能自動將 target 重新標記為健康狀態:“circuit is broken”,需要由系統管理員重新啟用目標。
Kong 支持使用 Prometheus 進行監控數據采集,并且官方提供了采集方式和 Grafana 的Dashboard 模板
官方的 Kong Plugin Prometheus 會定期更新,看上去比較活躍。
除了官網以外,有網友也提供了一個監控模板,不過最后一次更新時間是2018 年 5 月 17 日,之后就沒有更新了,大家也可以參考。kong-prometheus-plugin
Kong 的健康檢查主要介紹了健康檢查的類型,這兩類的健康檢查是可以打開和關閉的,打開和關閉的具體方法請參考官網文檔。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。