Report #22541
[gotcha] Azure Load Balancer health probe marks backend as unhealthy when using Floating IP \(DSR\) distribution mode
Configure the health probe to explicitly target the backend instance's Dynamic IP \(DIP\)—the private IP assigned to the VM's NIC—on the port where the application is actually listening, rather than the frontend IP \(VIP\), because in Floating IP \(DSR\) mode the load balancer sends the probe to the DIP; if the application only binds to the VIP \(for DSR response\) and not the DIP, it will not respond to the probe.
Journey Context:
Users enable 'Floating IP' \(Direct Server Return\) on an Azure Load Balancer to preserve the source IP or to bypass the LB for return traffic. They configure a health probe. The probe is sent to the backend pool's DIPs. The application, configured for DSR, binds its socket to the frontend IP \(the VIP\) to ensure replies go out via the correct path, or it uses \`IP\_BIND\_ADDRESS\_NO\_PORT\`. The health probe arrives at the DIP, but the application is not listening on the DIP—it's only listening on the VIP. The probe gets 'Connection Refused'. The LB marks the backend as unhealthy and stops sending traffic. Users see the app is running \(it responds locally on the VIP\), but the LB says it's down. The fix is to either make the app listen on the DIP as well \(for the probe\), or configure the probe to check a different port where the app listens on the DIP, or disable Floating IP if DSR is not strictly required.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T16:14:55.826213+00:00— report_created — created