Zone-redundant front-ends: the basics
What does a single-zone load balancer actually look like?
A load balancer is the front door to a workload: it owns the IP that clients connect to and decides which backend instance serves each request. An Azure Standard Load Balancer can place that front-end in one of three states. It can be zone-redundant, where the front-end IP is served by independent infrastructure in several availability zones at once. It can be zonal, where the front-end is pinned to one named zone. Or it can be left without a zone configuration at all on an older or hand-built deployment. The first survives the loss of a zone. The other two do not: if the zone holding that front-end has an outage, the IP stops answering and the whole service behind it goes dark, however healthy the backends are.
Azure Advisor surfaces this as a reliability recommendation: configure Standard Load Balancer, and the public IP or front-end IP configuration it depends on, to use availability zones. A zone-redundant front-end keeps traffic distribution working if a single zone fails, because the data path is spread across zones rather than anchored to one. Advisor raises it per resource, so an estate with a dozen load balancers can show the same recommendation a dozen times. They read as separate findings, but they are one job: make sure the thing that receives your traffic is not itself a single point of failure.
Most of this exposure is drift, not a decision. A load balancer created before zone-redundancy was the default, a Bicep module that never set the zones property, a front-end built on a public IP that was provisioned without zones. Nobody chose to make the front door fragile; it simply inherited the shape of whatever template or click-path created it. The work is to find every Standard Load Balancer whose front-end is pinned to one zone or has no zone redundancy, decide which genuinely need to be zonal, and give the rest a zone-redundant front-end.
In this lesson you will learn how an Azure Standard Load Balancer expresses zone redundancy, why the front-end is the part that decides whether a zone fault is survivable, how to find every load balancer in a subscription that is pinned to a single zone, and how to give them zone-redundant front-ends without an unplanned outage. You will also see the one constraint that catches teams out: zone redundancy cannot be switched on in place, so a fragile front-end has to be rebuilt rather than edited.
The healthy app that still went dark
The counter-intuitive part of zone redundancy is that you can do everything else right and still take an outage. Teams routinely spread their virtual machines across all three availability zones, watch the backend pool stay healthy through a zone fault, and then discover the service was unreachable the whole time because the single front-end IP in front of it happened to sit in the zone that failed. Azure makes a Standard public IP zone-redundant by default when you create it without specifying a zone, but every front-end built before that behaviour, or pinned to a single zone on purpose, or carried over from a Basic SKU, is still a single point of failure sitting in front of a perfectly resilient backend.
Finding single-zone load balancers across a subscription
Priya is the platform lead at a payments company that just had a near miss: an Azure zone in their primary region degraded for forty minutes, the backends rode it out, but one internal service went fully offline. The post-incident review traced it to a load balancer whose front-end was pinned to the affected zone.
Rather than wait for the next incident, Priya starts by listing which Standard Load Balancers have a zone-redundant front-end and which are pinned to a single zone, so the fragile front doors can be separated from the resilient ones before anything changes.
Start by listing every load balancer's front-end and the zones it is configured for. A front-end with all three zones is zone-redundant; one zone, or none, is a single point of failure.
A front-end listing one zone, or no zones, is a single point of failure in front of the service. These are the front doors that need a zone-redundant rebuild.
How Azure decides a load balancer front-end is zone-redundantdeep dive
Zone redundancy lives on the front-end, and where the zones property sits depends on the load balancer type. For a public load balancer, the front-end IP configuration points at a Standard public IP, and it is that public IP that carries the zones: a public IP created with all three zones is zone-redundant, and the load balancer in front of it inherits that resilience. For an internal load balancer there is no public IP, so the zones property sits directly on the front-end IP configuration of the load balancer itself. In both cases the rule is the same: a front-end spread across multiple zones survives the loss of any one of them, and a front-end with a single zone, or pinned to a Basic SKU that has no zone concept at all, does not.
The constraint that catches teams out is that zones cannot be changed after the resource is created. You cannot edit a single-zone front-end IP into a zone-redundant one, and you cannot flip a public IP from zonal to zone-redundant in place. The supported path is to create a new zone-redundant front-end IP, attach it to the load balancer, re-point the load-balancing and inbound NAT rules at it, and remove the old one. For an internal load balancer this can often be done with no change to the address. For a public load balancer the IP address itself changes, which is exactly why public front-ends need a planned cutover rather than an in-place edit.
The strongest position pairs the per-resource fix with prevention. Once the existing front-ends are zone-redundant, an Azure Policy in audit or deny mode against the load-balancer and public-IP availability-zone rules, or simply a shared module that always sets the zones property, means no new front door enters the estate as a single point of failure. That is the difference between fixing the load balancers you can see today and guaranteeing the next one is born resilient.
What is the impact of a single-zone front-end?
The direct impact is a single point of failure in front of an otherwise resilient service. You can spread every backend instance across all three availability zones, pass every backend health check, and still go completely offline when one zone fails, because the front-end IP that receives client traffic was anchored to that zone. The whole point of running across zones, to absorb the loss of a data centre without an outage, is silently undone by the one component that sits in front of everything else.
The second-order impact is that the failure mode is invisible until it happens. A single-zone front-end behaves identically to a zone-redundant one every single day that all three zones are healthy, which is almost always. It looks fine in every test, every demo and every normal week. The gap only reveals itself during the rare zone fault, which is precisely the moment you most need the front door to stay open, and precisely when it is hardest to fix under pressure.
There is also a commitment dimension. Microsoft documents that zone-redundant deployments are how you reach the higher availability tiers for fronting a workload, and many internal and customer availability commitments are written assuming the service can survive a single-zone loss. A front-end pinned to one zone undercuts that commitment quietly: the number on the page says one thing, and the actual resilience of the front door says another. Making the front-end zone-redundant is the cheapest way to make the architecture match the promise.
How do you make front-ends zone-redundant safely?
Work the capability as one loop rather than chasing individual findings. The order matters: zone redundancy cannot be switched on in place, so for public load balancers you are rebuilding the front-end and changing the IP, which must be a planned cutover, not a live edit.
1. Inventory every load balancer by front-end zones
List every Standard Load Balancer and the zones on its front-end. A front-end with all three zones is zone-redundant; one zone is zonal; none, or a Basic SKU, is a single point of failure. Treat this inventory as the source of truth rather than the Advisor finding count, and note for each whether the front-end is public, whose IP will change on rebuild, or internal, where the address can often be preserved.
2. Order by cost of downtime, not by finding count
Map each fragile front-end to the service behind it and what an hour of that service being unreachable would cost. A front-end on a revenue or customer path is a different priority from one on an internal tool, even though they show as the same finding. Rebuild the highest cost-of-downtime front-ends first.
3. Rebuild the front-end as zone-redundant, with a planned cutover for public IPs
Create a new zone-redundant front-end IP across all available zones, attach it to the load balancer, re-point the load-balancing and inbound NAT rules at it, and remove the old front-end. For internal load balancers this can often be done without changing the address. For public ones the IP changes, so schedule the cutover, update DNS or the upstream Front Door origin, and check that backends are also spread across zones, because a zone-redundant front-end in front of single-zone backends still fails when that zone does.
4. Make the next front door born resilient
Once the estate is fixed, prevent regressions. Set the zones property in the shared load-balancer and public-IP modules so every new front-end is zone-redundant by default, and back it with an Azure Policy in audit or deny mode against the availability-zone rules so a single-zone front-end cannot quietly re-enter the estate.
# A public LB front-end cannot be made zone-redundant in place. Create a new
# zone-redundant public IP, attach it as a second front-end, move the rule,
# then remove the old front-end. Run this as a PLANNED cutover: the IP changes.
RG=rg-payments
LB=lb-payments-prod
LOCATION=uksouth
# 1. New zone-redundant Standard public IP (all three zones = zone-redundant).
az network public-ip create \
--resource-group "$RG" \
--name pip-payments-zr \
--sku Standard \
--allocation-method Static \
--zone 1 2 3
# 2. Add it as a new front-end on the existing load balancer.
az network lb frontend-ip create \
--resource-group "$RG" \
--lb-name "$LB" \
--name fe-public-zr \
--public-ip-address pip-payments-zr
# 3. Re-point the load-balancing rule at the new zone-redundant front-end.
az network lb rule update \
--resource-group "$RG" \
--lb-name "$LB" \
--name rule-https \
--frontend-ip-name fe-public-zr
# 4. Once DNS / Front Door points at the new IP, remove the old front-end.
az network lb frontend-ip delete \
--resource-group "$RG" \
--lb-name "$LB" \
--name fe-public-old Quick quiz
Question 1 of 5Azure Advisor raises the same load-balancer reliability recommendation across a dozen resources in the estate. What is the most efficient way to think about them?
You scored
0 / 5
Keep learning
Go deeper on how Azure Load Balancer expresses zone redundancy and how to migrate an existing front-end onto availability zones.
- Reliability in Azure Load Balancer How zone-redundant and zonal front-ends behave during a zone fault, and why zone-redundant is recommended for all workloads.
- Migrate Load Balancer to availability zone support The supported path for rebuilding an existing front-end onto a zone-redundant IP, including why the public IP changes.
- Azure Advisor reliability recommendations The full list of reliability recommendations Advisor raises, including configuring load balancers to use availability zones.
You can now treat load-balancer zone redundancy as one capability rather than a scatter of findings: inventory which front-ends are pinned to a single zone, order them by the cost of downtime of the service behind each one, rebuild the fragile ones as zone-redundant on a planned cutover, and make the shared modules ship a zone-redundant front-end by default so the next front door is born resilient. Remember the two traps: zones cannot be changed in place, so public front-ends need a planned IP cutover, and a zone-redundant front-end over single-zone backends still goes down, so the backends must span zones too.
Back to the library