Skip to content

zone aware routing: latency by zone + rps by zone #4111

Merged
MustafaSaber merged 7 commits into
masterfrom
observability/zone-aware-rotuing
Jul 8, 2026
Merged

zone aware routing: latency by zone + rps by zone #4111
MustafaSaber merged 7 commits into
masterfrom
observability/zone-aware-rotuing

Conversation

@greeshma1196

@greeshma1196 greeshma1196 commented Jul 3, 2026

Copy link
Copy Markdown
Member

This PR introduces two changes:

  1. When I operate skipper-ingress controller across multiple availability zones, I want backend request latency labeled by the destination endpoint's zone, So that I can plot per-zone latency and RPS by zone

RPS by zone:
image

Latency by zone:
image

  1. When I run skipper-ingress that consume routes from RouteSRV, I want each backend endpoint's availability zone to survive the eskip wire format, So that per-zone backend latency can be plotted when RouteSRV is used, the same as in the in-process kubernetes dataclient mode - ref: RouteSRV: keep zone information while serializing to eskip #4103

Result: In the test cluster, there were 2 instances of skipper-ingress one set to Zone-A, the other to Zone-B

route-dump of skipper-ingress in zone A

kube_rg__skipper_loadtest_target__loadtest_target__all__0_0: Host(/^(skipper-loadtest[.]pg9-test[.]zalan[.]do[.]?(:[0-9]+)?)$/) && PathSubtree("/")
  -> disableAccessLog(2, 3, 404, 429)
  -> fifo(2000, 20, "1s")
  -> disableAccessLog()
  -> oauthTokeninfoValidate("{optOutAnnotations: [iam.zalando.org/public], optOutHosts: [\"^.*[.]ingress[.]cluster[.]local\"], unauthorizedResponse: \"Authentication required, see https://cloud.docs.zalando.net/howtos/authenticate-requests/#default-authentication\\n\"}")
  -> stateBagToTag("auth-user", "client.uid")
  -> <powerOfRandomNChoices, "http://[2a05:d024:90:1103:6d8f::4]:9090?zone=eu-central-1a", "http://[2a05:d024:90:1103:931f::b]:9090?zone=eu-central-1a", "http://[2a05:d024:90:1103:931f::c]:9090?zone=eu-central-1a">;

route-dump of skipper-ingress in zone B

kube_rg__skipper_loadtest_target__loadtest_target__all__0_0: Host(/^(skipper-loadtest[.]pg9-test[.]zalan[.]do[.]?(:[0-9]+)?)$/) && PathSubtree("/")
  -> disableAccessLog(2, 3, 404, 429)
  -> fifo(2000, 20, "1s")
  -> disableAccessLog()
  -> oauthTokeninfoValidate("{optOutAnnotations: [iam.zalando.org/public], optOutHosts: [\"^.*[.]ingress[.]cluster[.]local\"], unauthorizedResponse: \"Authentication required, see https://cloud.docs.zalando.net/howtos/authenticate-requests/#default-authentication\\n\"}")
  -> stateBagToTag("auth-user", "client.uid")
  -> <powerOfRandomNChoices, "http://[2a05:d024:90:1104:99f6::20]:9090?zone=eu-central-1b", "http://[2a05:d024:90:1104:99f6::24]:9090?zone=eu-central-1b", "http://[2a05:d024:90:1104:99f6::c]:9090?zone=eu-central-1b">;

@greeshma1196 greeshma1196 added routesrv monitoring Metrics related changes and removed documentation labels Jul 3, 2026
@greeshma1196 greeshma1196 force-pushed the observability/zone-aware-rotuing branch from 44a2ec1 to b27286a Compare July 3, 2026 10:56
….Metrics interface

- populate zone information while parsing the endpoints
- provide a flag to enable measurements of latency by zone; default is disabled
- provide integrations for all metrics

Signed-off-by: greeshma1196 <greeshma.mathew@gmail.com>
- serialize the zone information into the lbEndpoints by setting zone as a query parameter
- parse the zone in eskip and json
- add relevant tests

Signed-off-by: greeshma1196 <greeshma.mathew@gmail.com>
Signed-off-by: greeshma1196 <greeshma.mathew@gmail.com>
Signed-off-by: greeshma1196 <greeshma.mathew@gmail.com>
@greeshma1196 greeshma1196 force-pushed the observability/zone-aware-rotuing branch from 34a3a40 to 8c509c2 Compare July 7, 2026 08:36
@MustafaSaber MustafaSaber mentioned this pull request Jul 7, 2026
15 tasks
- remove duplicate test case
- add newline

Signed-off-by: greeshma1196 <greeshma.mathew@gmail.com>
Signed-off-by: greeshma1196 <greeshma.mathew@gmail.com>
@greeshma1196 greeshma1196 changed the title zone aware routing: latency by zone zone aware routing: latency by zone + rps by zone Jul 7, 2026
@greeshma1196 greeshma1196 marked this pull request as ready for review July 7, 2026 17:53
Comment thread eskip/eskip.go Outdated
@szuecs

szuecs commented Jul 7, 2026

Copy link
Copy Markdown
Member

Rest is good to go from my side.

@szuecs

szuecs commented Jul 7, 2026

Copy link
Copy Markdown
Member

👍

@szuecs

szuecs commented Jul 7, 2026

Copy link
Copy Markdown
Member

If you want you can merge and create a new PR to refactor the const

Comment thread eskip/eskip.go
Comment thread CONTEXT.md
Signed-off-by: greeshma1196 <greeshma.mathew@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants