Do not close health check connections when draining
#20,748 opened on Apr 8, 2022
Repository metrics
- Stars
- (27,997 stars)
- PR merge metrics
- (Avg merge 8d) (378 merged PRs in 30d)
Description
Description:
When Envoy is draining (via /healthcheck/fail) the HttpConnectionManager will send a GOAWAY or Connection:close on both application and health check connections – even if the health check requests are setting Connection: keep-alive.
In an active health checking setup, this causes unnecessary connection churn for health check connections – clients will continue to send health check requests, but will need to open a new connection each time.
This is problematic for servers that (a) receive a lot of health checks (b) use mTLS even for health check requests.
I would expect that if the health check filter is configured, Envoy would keep these connections alive.
Repro steps:
- Configure Envoy as below
- Drain Envoy with
healthcheck/fail - Send HTTP/1 health check request with
Connection: keep-alive - Observe 503 response with
Connection: closeheader
Config:
- HttpConnectionManager
- HTTP Health Check filter
If this behaviour seems reasonable to folks, would love to hear how to approach adding this to Envoy.