全域性上游
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 或更新版本,再發布排隊配置。