端點組態 (proto)

端點探索 架構概觀

config.endpoint.v3.ClusterLoadAssignment

[config.endpoint.v3.ClusterLoadAssignment proto]

來自 RDS 的每個路由都會映射到單一叢集,或使用 RDS WeightedCluster 中表示的權重,將流量分散到多個叢集。

使用 EDS 時,每個叢集都從 LB 的角度獨立處理,LB 在叢集內的區域之間進行,並且在區域內的主機之間進行更精細的粒度處理。每個端點的流量百分比由其 load_balancing_weight 以及其區域的 load_balancing_weight 決定。首先,會選取一個區域,然後根據其權重選擇該區域內的一個端點。

{
  "cluster_name": ...,
  "endpoints": [],
  "policy": {...}
}
cluster_name

(字串, 必要) 叢集的名稱。如果叢集 EdsClusterConfig 中有指定,則此值將為 service_name 值。

endpoints

(重複 config.endpoint.v3.LocalityLbEndpoints) 要將負載平衡導向的端點清單。

policy

(config.endpoint.v3.ClusterLoadAssignment.Policy) 負載平衡策略設定。

config.endpoint.v3.ClusterLoadAssignment.Policy

[config.endpoint.v3.ClusterLoadAssignment.Policy proto]

負載平衡策略設定。

{
  "drop_overloads": [],
  "overprovisioning_factor": {...},
  "endpoint_stale_after": {...},
  "weighted_priority_health": ...
}
drop_overloads

(重複 config.endpoint.v3.ClusterLoadAssignment.Policy.DropOverload) 用於修剪整體輸入流量以保護上游主機的動作。此動作允許在主機無法從中斷中恢復、無法自動調整大小或因任何原因無法處理輸入流量時提供保護。

在用戶端,每個類別會依序應用,以產生所有輸出流量的「實際」丟棄百分比。例如

{ "drop_overloads": [
    { "category": "throttle", "drop_percentage": 60 }
    { "category": "lb", "drop_percentage": 50 }
]}
應用於用戶端流量的實際丟棄百分比將為

“throttle”_drop = 60% “lb”_drop = 20% // 剩餘「實際」負載(40%)的 50%。actual_outgoing_load = 20% // 應用所有類別後剩餘的負載。

Envoy 僅支援一個元素,如果存在多個元素,則會回覆 NACK。其他支援 xDS 的資料平面不一定會有此限制。

在 Envoy 中,此 drop_overloads 組態可由執行階段金鑰 “load_balancing_policy.drop_overload_limit” 設定覆寫。此執行階段金鑰可設定為介於 0 到 100 之間的任何整數。0 表示丟棄 0%。100 表示丟棄 100%。當 drop_overloads 組態和 “load_balancing_policy.drop_overload_limit” 設定同時存在時,將採用兩者中的最小值。

overprovisioning_factor

(UInt32Value) 優先順序層級和區域會以這個因子(以百分比表示)考慮為超額配置。這表示在健康主機的比例乘以超額配置因子低於 100 之前,我們不會將優先順序層級或區域視為不健康。使用預設值 140(1.4) 時,Envoy 不會將優先順序層級或區域視為不健康,直到其健康主機的百分比降至 72% 以下。例如

{ "overprovisioning_factor": 100 }

請在優先順序層級區域中閱讀更多資訊。

endpoint_stale_after

(Duration) 可使用此指派中端點的最長時間。如果在該時間到期之前未收到新的指派,則端點會被視為過時,應標示為不健康。預設為 0,表示端點永遠不會過時。

weighted_priority_health

(布林值) 如果為 true,則使用健康和不健康主機的負載平衡權重 來判斷優先順序層級的健康狀況。如果為 false,則使用健康和不健康主機的數量來判斷優先順序層級的健康狀況,換句話說,假設每個主機在此計算中的權重為 1。

注意:這目前未針對 區域加權負載平衡實作。

config.endpoint.v3.ClusterLoadAssignment.Policy.DropOverload

[config.endpoint.v3.ClusterLoadAssignment.Policy.DropOverload proto]

{
  "category": ...,
  "drop_percentage": {...}
}
category

(字串, 必要) 指定丟棄的策略識別碼。

drop_percentage

(type.v3.FractionalPercent) 應針對該類別丟棄的流量百分比。