端點組態 (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,表示端點永遠不會過時。
config.endpoint.v3.ClusterLoadAssignment.Policy.DropOverload
[config.endpoint.v3.ClusterLoadAssignment.Policy.DropOverload proto]
{
"category": ...,
"drop_percentage": {...}
}
- category
(字串, 必要) 指定丟棄的策略識別碼。
- drop_percentage
(type.v3.FractionalPercent) 應針對該類別丟棄的流量百分比。