Skip to main content
emnode
Site Reliability

Deploy Application Gateway across availability zones

One reliability capability: make sure the gateway that fronts your web traffic survives the loss of a single datacentre, so a zone outage degrades into a few seconds of redistribution rather than a full front-door failure.

13 min·10 sections·AZURE

Last reviewed

Zone-redundant Application Gateway: the basics

What does a single-zone gateway actually expose you to?

Application Gateway is the layer-7 load balancer that fronts a web application: it terminates TLS, routes by path or host, and often runs the web application firewall. Because every request enters through it, the gateway is a single point of failure unless it is spread across the physically separate datacentres that Azure calls availability zones. Azure Advisor surfaces exactly this gap with the reliability recommendation 'Deploy your Application Gateway across Availability Zones', whose own words are that zone redundancy 'ensures continuity even if one zone is affected and enhances overall reliability'.

A zone-redundant gateway runs its instances across two or more availability zones in the region. If one zone is lost, the platform redistributes traffic to the healthy instances in the other zones automatically, and connections typically see only a few seconds of interruption. A zonal gateway, by contrast, pins every instance into one zone you choose, so it does nothing for a zone outage: if that single zone goes down, the gateway is unavailable until the zone recovers. Microsoft is explicit that a zonal gateway, by itself, does not provide resiliency to an availability zone outage.

The good news is that this is mostly a question of which gateways pre-date the current default. New Standard_v2 and WAF_v2 gateways are created zone-redundant by default, and availability zone support costs nothing beyond the standard capacity unit pricing you already pay. The work is to find the gateways that are still pinned to one zone, or still on the legacy V1 SKU that cannot use zones at all, and bring them onto a zone-redundant footing before a datacentre incident does it for you.

In this lesson you will learn how Application Gateway expresses zone redundancy, how to find every gateway that is still pinned to a single zone or stuck on a SKU that cannot use zones, and how to move them onto a zone-redundant footing without dropping live traffic. You will see the exact Azure Advisor recommendation behind this, the difference between zonal and zone-redundant behaviour during an outage, and the capacity planning that keeps a zone failure from becoming an overload.

Fun fact

The default that quietly fixed itself

For a long time, getting a zone-redundant Application Gateway meant remembering to specify zones at create time, and plenty of production gateways were stood up without them. Microsoft eventually flipped the behaviour so that new Standard_v2 and WAF_v2 gateways are zone-redundant by default, spread across the availability zones of the region with no extra charge. The catch is that the default only protects gateways created after it landed: every gateway provisioned before then, and every legacy V1 gateway that cannot use zones at all, still carries the old single-zone risk until someone checks and redeploys it. The Advisor recommendation exists precisely to surface that backlog.

Finding single-zone gateways across a subscription

Priya is the platform reliability lead at a retailer heading into its peak trading season. Azure Advisor has raised 'Deploy your Application Gateway across Availability Zones' against the gateway that fronts the checkout service, and she wants to know how many other gateways share the same exposure before she touches anything.

Rather than open each gateway in the portal, she lists every Application Gateway in the subscription with its SKU and its zones, so she can separate the genuinely zone-redundant ones from the ones still pinned to a single zone or stuck on the legacy SKU.

List every gateway with its SKU tier and the zones it occupies. A gateway showing one zone, or no zones on a V1 SKU, is the exposure.

$ az network application-gateway list --query "[].{name:name, sku:sku.name, zones:zones}" -o table
Name Sku Zones
---------------- ----------- ---------
checkout-appgw Standard_v2 ['2']
legacy-appgw Standard None
marketing-appgw WAF_v2 ['1', '2', '3']
# checkout-appgw is pinned to a single zone; legacy-appgw is V1 and cannot use zones at all.

A v2 gateway with a single zone, or any V1 gateway, is exposed to a zone outage. The gateway listing all three zones is the one already doing the right thing.

How a zone outage plays out for each gateway typedeep dive

Zone redundancy is set at the SKU and zone level. The gateway must be Standard_v2 or WAF_v2: the legacy V1 SKU cannot use availability zones at all, which is why migrating off V1 is a prerequisite, not an option. On a v2 gateway, the 'zones' property decides the behaviour. Omit it, or list two or more zones, and the gateway is zone-redundant, with the platform spreading its instances across the region's zones. Pin it to a single zone and it is zonal, with every instance in one datacentre. Microsoft recommends omitting the zone list so the gateway can use all of the region's availability zones unless you have a specific reason not to.

During a zone outage the two configurations diverge sharply. For a zone-redundant gateway, Microsoft manages detection and failover with no customer action: traffic is immediately redistributed to instances in the healthy zones, the platform spins up temporary instances elsewhere to hold capacity, and in-flight requests on the lost zone are terminated and should be retried as transient faults. Connections typically see a few seconds of interruption. For a zonal gateway, the gateway is simply unavailable until the zone recovers, and you are responsible for any failover to a separate gateway you built in another zone.

Two details matter for getting the change right. First, you cannot toggle a running gateway from zonal to zone-redundant in place: the zone configuration is fixed at creation, so moving to zone-redundant means deploying a new gateway and cutting traffic over. Second, the SLA has conditions. To be eligible for the Application Gateway availability SLA, a gateway must be configured correctly for HTTP load balancing and must either be zone-redundant or be configured to use autoscale, so pairing zone redundancy with autoscale is the configuration that both survives a zone loss and stays inside the SLA.

What is the impact of leaving the gateway in a single zone?

The direct impact is a front-door outage on a single datacentre fault. Because every request enters through the gateway, a single-zone gateway converts one zone's loss into total unavailability for everything behind it, however resilient those backend services are. Availability zones exist precisely to contain a datacentre incident inside one zone; a gateway pinned to that zone hands the incident the keys to your whole application. Microsoft is clear that a zonal gateway, on its own, gives no resiliency to a zone outage, and that the gateway stays down until the zone recovers.

The second-order impact is the SLA and the blast radius around it. A gateway that is neither zone-redundant nor autoscale-configured is not even eligible for the Application Gateway availability SLA, so you carry the downtime with no platform commitment behind it. And because the gateway is the choke point, its outage ripples outward: every downstream service that was healthy is now unreachable, support load spikes, and any commitments you made to your own customers are at risk on a fault you could have contained.

On the resilience side, the trade is unusually clean. Zone redundancy for Application Gateway adds no Azure cost over the capacity you already run, and turns a hours-long single-zone outage into a few seconds of automatic redistribution that Microsoft manages for you. A zone-redundant front door is one of the cheapest reliability artefacts you can put in place for the component with the widest blast radius in the stack.

How do you move a gateway to zone-redundant safely?

Work this as a controlled cutover rather than an in-place toggle, because the zone configuration is fixed at creation. The order matters: build and validate the zone-redundant gateway before you move live traffic, so the front door is never down during the change.

1. Inventory every gateway by SKU and zones

List every Application Gateway with its SKU and its zones. A v2 gateway showing a single zone is zonal; any V1 gateway cannot use zones at all and needs a SKU migration first. Treat this inventory as the source of truth, and order it by the value of the service each gateway fronts.

2. Size autoscale for the loss of a zone

A zone-redundant gateway redistributes traffic to surviving zones during an outage, so those zones must have headroom to absorb it. Enable autoscale with a maximum instance count high enough to carry peak load when a zone is gone, and set a minimum that keeps capacity ready. Autoscale also keeps the gateway inside the availability SLA.

3. Deploy a new zone-redundant gateway alongside the old one

Because you cannot flip a running gateway from zonal to zone-redundant in place, deploy a new Standard_v2 or WAF_v2 gateway with no zone list, so it uses all of the region's zones, and replicate the listeners, rules, WAF policy and backend pools. Validate it against the same backends before any traffic moves.

4. Cut traffic over, then retire the single-zone gateway

Move traffic to the zone-redundant gateway by repointing DNS or the upstream global load balancer, drain the old one, and only then delete it. Once the estate is zone-redundant, keep new gateways on the v2 default and treat any future single-zone gateway as a deliberate, documented exception.

# Build a zone-redundant gateway by OMITTING --zones, so it uses all of the
# region's availability zones (Microsoft's recommended default), paired with
# autoscale so it stays inside the availability SLA.
az network application-gateway create \
  --name checkout-appgw-zr \
  --resource-group rg-checkout \
  --sku Standard_v2 \
  --min-capacity 2 \
  --max-capacity 10 \
  --vnet-name vnet-checkout \
  --subnet snet-appgw \
  --public-ip-address pip-checkout-appgw
# Note: zones are fixed at creation. There is no in-place flip from zonal to
# zone-redundant; build this new gateway, validate it, then cut traffic over.

Quick quiz

Question 1 of 5

Azure Advisor raises 'Deploy your Application Gateway across Availability Zones' against a production v2 gateway. What does moving it to zone-redundant actually change?

You can now treat Application Gateway zone redundancy as one reliability capability rather than a single recommendation: inventory every gateway by SKU and zones, size autoscale for the loss of a zone, deploy a zone-redundant gateway alongside any single-zone one, and cut traffic over before retiring the old one. The front door that every request passes through now survives the loss of a whole datacentre, at no extra Azure charge for the redundancy itself.

Back to the library