全域性上游

OpenResty Edge 提供了“全域性上游”,允許定義公共的上游,這些上游可以被多個不同的 HTTP 應用直接引用,而無需在不同的應用中都定義一遍上游。 下面將介紹如何在 Edge Admin 中配置“全域性上游”。

OpenResty Edge 提供了“全域性上游”,允許定義公共的上游,這些上游可以被多個不同的 HTTP 應用直接引用,而無需在不同的應用中都定義一遍上游。

下面將介紹如何在 Edge Admin 中配置“全域性上游”。

首先進入頁面 全域性配置 > 全域性上游:

如上圖所示,在左側標籤頁就能找到全域性上游的入口。

接著點選 新建上游 按鈕,開始建立新的全域性上游。

輸入上游的資訊:

填寫上游名稱為即將建立的上游進行命名,協議根據需要可以選擇 HTTP 或者 HTTPS,當選擇是 HTTPS 時,還可以配置是否啟用 SSL 驗證,預設是開啟的。 健康檢查的配置可以根據這裡進行配置。 接著填入上游伺服器的資訊,可以設定一個或多個上游伺服器。

如果需要修改上游的屬性,可以點選列表中對應記錄的右側 編輯 按鈕進行編輯:

修改屬性後,就可以點選 儲存 按鈕(如果不想儲存,點選 取消 即可)。

如果某個上游不再需要了,可以點選列表中對應記錄的右側 刪除 按鈕進行刪除:

需要注意的是,如果上游還被其他應用使用中,則無法被刪除。

上游健康檢查

上游健康檢查可以用於檢查上游服務是否正常執行,有利於提高系統的可用性、穩定性。

在 OpenResty Edge 中,無論是全域性上游還是 HTTP 應用上游,都支援健康檢查。

啟用方式也很簡單,在新增或者是編輯上游時,點選“健康檢查”開關進行開啟。

在 OpenResty Edge 的上游健康檢查中, 如果開啟 一直檢查,那麼將會定期去檢查上游是否可用。預設是不開啟的,只有在請求傳送到了對應上游,才會進行檢查。 健康檢查的協議當前支援“HTTP”和“TCP”,對於 HTTP 服務,選擇 HTTP 協議是更常見的做法。 請求方法中,可以選擇“HEAD”或者是“GET”方法。“HTTP 請求主機”和“HTTP 請求 URI”將決定健康檢查請求的目的地,同時也可以指定使用的 HTTP 協議版本以及設定 User-Agent 請求頭部。 請求間隔是指相鄰兩個請求之前的時間間隔,預設是 3 秒,當傳送的請求超過超時時間時,將判定請求為失敗。超時時間預設為 1 秒。如果請求沒有超時,但是請求的狀態不在指定的狀態中,那麼請求也會被判定為失敗。當連續失敗的請求數量超過了設定的不健康閾值,那麼上游將被判定為“不健康”;當前連續成功的請求數量超過了設定的健康閾值,上游被判定為健康。 最後一個選項“上報間隔”用於配置 Edge Node 多久向 Edge Admin 上報上游的狀態,預設是 3 秒。

當上遊伺服器狀態是健康時:

當上遊伺服器狀態不健康時:

同時,點選健康檢查詳情,可以看到上游伺服器的詳細狀態:

上游連線限制與排隊

此功能在 OpenResty Edge 26.12.1-1 中首次引入,適用於 HTTP 應用上游、全域性上游及其 Kubernetes 變體。

可以為上游設定以下引數,並通過正常的應用或全域性上游釋出流程使其生效:

引數含義
max_conns活躍上游連線使用數的上限,整數 0 到 2147483647。0 或省略表示不限制,也不排隊。空閒 keepalive 連線不計入。
max_queue達到連線限制後允許等待的請求數,整數 0 到 2147483647,預設 0。為 0 或佇列已滿時,額外請求返回 502。
queue_timeout最長排隊時間,單位為秒,範圍 0.001 到 2147483.647,預設 60。等待時間同時受上游連線超時限制;排隊超時返回 504。

例如,設定 max_conns=100、max_queue=200、queue_timeout=0.5,表示達到連線限制後, 最多允許 200 個請求等待,最長等待 0.5 秒。

這些計數按 worker 程序分別維護,相同目標套接字地址、主機名和本地繫結地址的請求會共享計數, 即使它們來自不同上游配置。因此應對共享同一目標的請求使用一致設定;繞過排隊機制的流量不計入。 這不是整個閘道器或叢集共享的連線總上限。

每次選擇上游(包括重試)都會應用設定;切換到備用上游時使用備用上游自己的設定。 更新配置不會修改已在等待請求的定時器,也不會立即喚醒它們。將 max_conns 設為 0 可關閉排隊。

此功能僅適用於 HTTP 回源,TCP/UDP 上游不支援這些配置。先升級閘道器到 26.12.1-1 或更新版本,再發布排隊配置。