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