Concept and mechanism
Retiring a target requires knowing the semantics of its state. In HAProxy 3.2, DRAIN can still accept persistence-associated connections; it means neither zero connections nor session replication. In Kubernetes, a terminating endpoint can remain in EndpointSlice with ready=false while the application finishes existing requests. The grace period is finite and can end in forced shutdown. In AWS ALB, deregistration delay helps in-flight requests finish, but the target must retain necessary connections. If the application stops first, the delay does not execute its work. Define criteria and observe the actual transition.
Guided application
For release validation, identify backend, version, and attempts alongside the final client status. Success after retry can hide a failing instance; a global mean can conceal tail latency. Affinity can also send every operator sample to the old version. Use a controlled path observing the changed component with representative data and authorization. At RUN handover, record owners, health, capacity, retirement, recovery criteria, and validation evidence. Course examples are fictional and no labs or load tests were executed. Check documentation, version, and edition before applying options because capabilities and defaults change across releases.
DRAIN is a state to interpret; session completion is an outcome to observe.
Common pitfalls
A state as zero traffic; delay as backend execution; ignored test cookies; global mean as complete diagnosis.
Related topics: Routing and TLS boundaries · Algorithms, affinity, and state · Health checks and readiness
Accept change using evidence from the actual target and operational completion.
Reference: HAProxy 3.2 configuration manual · DR load balancing 2026-09; selected NGINX, HAProxy 3.2, Kubernetes and AWS ALB behavior