列表
在上游服務列表頁面,可以清楚看到所有的服務名稱
、標籤
、建立時間
以及建立者
的資訊,並且可以新增上游服務以及對既有上游服務做編輯或刪除的動作。如果對某項上游服務想知道更詳細的資訊,可以點擊上游服務名稱,即可得到更詳細的訊息以及健康狀態資訊。
#
新增上游服務從網站左邊 Menu 中點選
上游服務列表
頁面,進入上游服務列表的畫面。點選右上角的
新增
後,填入相關資訊後送出。
note
新增上游服務時只會有名稱及標籤欄位。其它詳細設定請按「編輯」進入更新頁面設定。
#
欄位配置說明變數 | 類型 | 預設值 | 說明 | 必填 |
---|---|---|---|---|
name | string | 上游服務名稱。 | V | |
algorithm | string | round-robin | 負載平衡使用的演算法。 此欄位接受輸入的值為以下其一: consistent-hashing 、 least-connections 、 round-robin 。 | |
hash_on | string | none | 用來當作雜湊輸入。選擇 none 的結果為無使用雜湊之 weighted-round-robin 結構。此欄位接受輸入的值為以下其一: none 、consumer 、ip 、header 、cookie 。 | |
hash_fallback | string | none | 如主要 hash_on 沒有返回雜湊,則用來當作雜湊輸入的類型。如果 hash_on 設為 cookie 則無法使用此欄位。此欄位接受輸入的值為以下其一: none 、consumer 、ip 、header 、cookie 。 | |
hash_on_header | string | 用來當作雜湊輸入的標頭。只有當 hash_on 設定為 header 時可使用此欄位。 | ||
hash_fallback_header | string | 用來當作雜湊輸入的標頭。只有當 hash_fallback 設定為 header 時可使用此欄位。 | ||
hash_on_cookie | string | 用來當作雜湊輸入的 cookie。只有當 hash_on 或是 hash_fallback 設定為 cookie 時可使用此欄位。如果指定的 cookie 沒有出現在請求中,會自動產生一個值並且將其帶入回應的 cookie 中。 | ||
hash_on_cookie_path | string | / | 設定在回應標頭中的 cookie 路徑。只有當 hash_on 或是 hash_fallback 設定為 cookie 時可使用此欄位。填入的路徑起始值必須為 / ,例如 /api/v1 。 | |
slots | number | 10000 | 負載平衡運算時的槽數量。 此欄位接受輸入的值區間為 10 至 65536。 | |
healthchecks.active.https_verify_certificate | boolean | true | 決定當使用 HTTPS 運行主動健康檢查時是否檢查遠端主機之 SSL 憑證。 | V |
healthchecks.active.unhealthy.http_statuses | array of number | [429, 404, 500, 501, 502, 503, 504, 505] | 會被作為檢查結果失敗或被判定狀態為不健康的回應狀態碼。 此欄位接受輸入的值區間為 100 至 999。 | |
healthchecks.active.unhealthy.tcp_failures | number | 0 | TCP 失敗到達會被認定狀態不健康的次數。 此欄位接受輸入的值區間為 0 至 255。 | |
healthchecks.active.unhealthy.timeouts | number | 0 | 連線逾時到達會被認定狀態不健康的次數。 此欄位接受輸入的值區間為 0 至 255。 | |
healthchecks.active.unhealthy.http_failures | number | 0 | HTTP失敗到達會被認定狀態不健康的次數。(根據 healthchecks.active.unhealthy.http_statuses 設定的狀態做判定)此欄位接受輸入的值區間為 0 至 255。 | |
healthchecks.active.unhealthy.interval | number | 0 | 對不健康目標做自動健康檢查的時間區間(單位為秒)。如設定為 0 則代表不會對不健康目標執行健康檢查之動作。 此欄位接受輸入的值區間為 0 至 65535。 | |
healthchecks.active.http_path | string | / | 做自動健康檢查時之請求的路徑。 填入的路徑起始值必須為 / ,例如 /api/v1 。 | |
healthchecks.active.timeout | number | 1 | 自動健康檢查之 socket 連線逾時時間。 此欄位接受輸入的值區間為 0 至 65535。 | |
healthchecks.active.healthy.http_statuses | array of number | [200, 302] | 會被作為檢查結果成功或被判定狀態為健康的回應狀態碼。 此欄位接受輸入的值區間為 100 至 999。 | |
healthchecks.active.healthy.interval | number | 0 | 對健康目標做自動健康檢查的時間區間(單位為秒)。如設定為0則代表不會對健康目標執行健康檢查之動作。 此欄位接受輸入的值區間為 0 至 65535。 | |
healthchecks.active.healthy.successes | number | 0 | HTTP 成功到達會被認定狀態健康的次數。(根據 healthchecks.active.healthy.http_statuses 設定的狀態做判定)此欄位接受輸入的值區間為 0 至 255。 | |
healthchecks.active.https_sni | string | 使用 HTTPS 執行自動健康檢查時用作 SNI(服務器名稱標識)的主機名。當使用 IP 配置目標時,此功能特別有用,以便可以使用正確的 SNI 驗證目標主機的證書。 | ||
healthchecks.active.concurrency | number | 10 | 同時做健康檢查之目標數量。 此欄位接受輸入的值區間為 1 至 2147483648。 | |
healthchecks.active.type | string | http | 做健康檢查時使用之協定。 此欄位接受輸入的值為以下其一: tcp 、 http 、 https 、 grpc 以及 grpcs 。 | |
healthchecks.passive.unhealthy.http_failures | number | 0 | HTTP失敗到達會被認定狀態不健康的次數。(根據 healthchecks.passive.unhealthy.http_statuses 設定的狀態做判定)此欄位接受輸入的值區間為 0 至 255。 | |
healthchecks.passive.unhealthy.http_statuses | array of number | [429, 500, 503] | 會被作為檢查結果失敗或被判定狀態為不健康的回應狀態碼。 此欄位接受輸入的值區間為 100 至 999。 | |
healthchecks.passive.unhealthy.tcp_failures | number | 0 | TCP失敗到達會被認定狀態不健康的次數。 此欄位接受輸入的值區間為 0 至 255。 | |
healthchecks.passive.unhealthy.timeouts | number | 0 | 連線逾時到達會被認定狀態不健康的次數。 此欄位接受輸入的值區間為 0 至 255。 | |
healthchecks.passive.type | string | http | 做健康檢查時使用之協定。在被動檢查中, http 及 https 被認為是相等的。此欄位接受輸入的值為以下其一: tcp 、 http 、 https 、 grpc 以及 grpcs 。 | |
healthchecks.passive.healthy.successes | number | 0 | HTTP成功到達會被認定狀態健康的次數。(根據 healthchecks.passive.healthy.http_statuses 設定的狀態做判定)此欄位接受輸入的值區間為 0 至 255。 | |
healthchecks.passive.healthy.http_statuses | array of number | [200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 304, 305, 306, 307, 308] | 會被作為檢查結果成功或被判定狀態為健康的回應狀態碼。 此欄位接受輸入的值區間為 100 至 999。 | |
healthchecks.threshold | number | 0 | 健康目標占整體上游服務被判定為健康狀態的最小百分比。 此欄位接受輸入的值區間為 0 至 100。 | |
tags | array of string | 可填入任意字串來做分類使用。 | ||
host_header | string | 會在代理請求帶入標頭 Host 的值。 | ||
client_certificate | string | 當對上游服務做 TLS handshaking 時可做為用戶端憑證做認證使用。必須填入憑證的ID。 |
#
預覽頁面點擊上游服務名稱後即會跳出預覽視窗。可以看到上游服務詳細資訊和其擁有的目標資訊,較為特殊的是有此上游服務之健康狀態顯示在資訊頁面的左上方。
info
上游服務的健康檢查設定是根據 healthchecks.thredshold
以及目標中 weight(capacity)
的百分比設定決定上游服務是否健康。
舉例來說:
- 現在擁有一個上游服務設定 healthchecks.threshold=55 (%)。
- 此上游服務擁有 5 個目標,每個目標設定 weight=100,所以此上游服務的總 weight 為 500。
當其中有一個目標發生問題時,代表 100/500 weight,也就是 20% 的 capacity 是不健康的,80% 是健康的,高於設定的 threshold 55%,因此其餘健康的目標會接收不健康的目標流量。所以對於這個上游服務本身來說,狀態為健康。
當有 2 個目標發生問題,代表 200/500 weight,也就是 40% 不健康,剩 60% 健康,但仍高於設定的 threshold 55%,所以對於這個 上游服務本身來說,狀態依然是健康。
但如果其中 3 個目標都發生問題時,代表只有 2 個目標健康,這時,健康的目標比例只佔 40%,已經低於設定的 threshold 55%,因此這個上游服務會被自動標記成不健康的狀態。
當上游服務被標記成不健康狀態時,任何要求的回覆都會是 503 Service Unavailable 的錯誤,而這時 目標/服務 會開始修復這一連串的失敗狀態。當目標復原其失敗狀態並且將錯誤率降低至 threshold 以下,上游服務的健康狀態也將會更新為健康。
#
編輯及刪除如想對某個特定上游服務做編輯或刪除可按右邊的動作按鈕。
按下刪除鍵後會出現確認對話視窗,選擇刪除即可刪除。
選擇列表左方的框,再選擇右上角的垃圾筒,可以一次多筆刪除。
note
多筆刪除會直接動作,不會有確認對話框出現。