Add ZoneAwareLB settings for MeshConfig and DestinationRule#3733
Add ZoneAwareLB settings for MeshConfig and DestinationRule#3733sschepens wants to merge 1 commit into
Conversation
|
😊 Welcome @sschepens! This is either your first contribution to the Istio api repo, or it's been You can learn more about the Istio working groups, Code of Conduct, and contribution guidelines Thanks for contributing! Courtesy of your friendly welcome wagon. |
|
@ramaraochavali @keithmattix @howardjohn could you take a look at this please? |
d14020f to
97dd888
Compare
|
@sschepens: The following test failed, say
DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
ramaraochavali
left a comment
There was a problem hiding this comment.
Added some comments. @hzxuzhonghu can you PTAL as well?
| // | ||
| // - The downstream proxy is configured with `ISTIO_META_ENABLE_SELF_DISCOVERY=true` | ||
| // (set via `proxyMetadata`). | ||
| // - The upstream cluster has at least `minClusterSize` hosts (default 6). Below |
There was a problem hiding this comment.
What is the significance of minClusterSize and the default value 6? Does it mean if a service has two pods per AZ - we can not use zone aware load balancing?
| // this threshold zone-aware load balancing is disabled entirely, regardless of other | ||
| // settings. | ||
| // - The upstream cluster spans more than one zone. | ||
| // - There is at least one healthy endpoint in the local zone. |
There was a problem hiding this comment.
So if all endpoints in the local zone are unhealthy would the traffic spill over to other zones as per the zone aware load balancing calculations or is it completely disabled? Which load balancing is used if it is disabled?
| // apply. This is useful when failing over traffic across regions would not | ||
| // improve service health or may need to be restricted for other reasons | ||
| // like regulatory controls. | ||
| message Failover { |
There was a problem hiding this comment.
Should we call this FailoverRegion or call from and to as from_region and to_region to be explicit?
| // Minimum number of hosts in the upstream cluster required for zone-aware | ||
| // load balancing to be enabled. If the total number of upstream hosts falls below | ||
| // this value, zone-aware load balancing is disabled for this cluster regardless of | ||
| // other settings. This guards against zone-skew issues that can occur with |
There was a problem hiding this comment.
This is confusing. Is it total number of hosts in upstream cluster or is it per zone? How is zone-skew identified based on upstream cluster hosts count?
This is needed to implement Zone Aware Routing support in Istio.
I'm adding a
zone_aware_lb_settinginDestinationRuleto allow configuring enabling Zone Aware LB,it's mutually exclusive withlocality_lb_settingand it's settings are very similar, with the following differences:distributeis not actually needed here because Envoy distributes traffic automaticallyfailoverPrioritycannot specifyregion,zoneorsubZonetopology labels because we always partition byregionandzoneandsubZonedon't make sense with Zone Aware because envoy automatically shifts traffic between zones.I'm also adding a mesh-wide
zone_aware_lb_settingto enable zone aware routing globally. For practical reasons, there is no way to simply reject this setting being enabled together withlocality_lb_settingbecauselocality_lb_settingis actually enabled by default and validation occurs with the defaults merged.Issue: istio/istio#35102 (comment)
RFC: https://docs.google.com/document/d/1nPVSTIy_s0s9cRBS7DNwHZkDXhHO1qW4x9F9W7y_gyo/edit?tab=t.0#heading=h.xw1gqgyqs5b