Skip to content

Commit 2f383da

Browse files
committed
edit pass: azure-front-door-ha-implementation-guide
1 parent d9dcceb commit 2f383da

1 file changed

Lines changed: 37 additions & 38 deletions

File tree

articles/frontdoor/high-availability.md

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ This guide presents two proven architectures that use Traffic Manager to provide
2727

2828
| Aspect | Scenario 1 (Azure Front Door + Application Gateway) | Scenario 2 (Azure Front Door + other CDN) |
2929
| ---- | ---- | ---- |
30-
| Failover target | Secondary Traffic Manager instance and multiple Application Gateway instances | Single other CDN endpoint |
31-
| Caching during failover | No (Application Gateway doesn't cache) | Yes |
32-
| Geographic distribution | Specific Azure regions (two in Scenario 1 of this article) | Other CDN's global edge network |
33-
| WAF protection | Azure Web Application Firewall (consistent rule sets) | Other CDN's WAF (different rule sets) |
34-
| Cost during standby | Fixed compute costs (Application Gateway charges even when idle: ~\$200-400/month for WAF_v2 with minimal capacity) | Dependent on CDN vendor's pricing |
30+
| Failover target | Secondary Traffic Manager instance and multiple Application Gateway instances. | Single other CDN endpoint. |
31+
| Caching during failover | No. Application Gateway doesn't cache. | Yes. |
32+
| Geographic distribution | Two specific Azure regions. | Other CDN's global edge network. |
33+
| WAF protection | Azure Web Application Firewall (consistent rule sets). | Other CDN's WAF (different rule sets). |
34+
| Cost during standby | Fixed compute costs. Application Gateway charges even when idle: ~\$200-400/month for WAF_v2 with minimal capacity. | Dependent on the CDN vendor's pricing. |
3535

3636
## Considerations for production environments
3737

@@ -51,13 +51,13 @@ When you're implementing HA architectures for production workloads, consider the
5151

5252
- Traffic Manager doesn't support CNAME flattening at the DNS zone apex (root domain). If you require Traffic Manager at the apex, you must use DNS providers that support alias records or similar mechanisms. [Azure DNS](/azure/dns/dns-alias) is one such DNS provider.
5353

54-
- Use short DNS time-to-live (TTL) values (300-600 seconds), and monitor DNS TTL propagation times.
54+
- Use short DNS time-to-live (TTL) values of 300-600 seconds. Monitor DNS TTL propagation times.
5555

5656
- Lock down Application Gateway with network security groups (NSGs) and access control lists (ACLs). Allow required platform ranges and inbound application ports. Keep origins secured for all ingress paths. For more information, see [Network security groups](/azure/application-gateway/configuration-infrastructure#network-security-groups).
5757

5858
Although an Application Gateway WAF mitigates HTTP/L7 attacks, NSGs provide packet filtering only and don't protect against volumetric or protocol-level (L3/L4) DDoS attacks. All Azure public endpoints benefit from baseline, always-on DDoS protection in the Azure platform. It helps protect the Azure infrastructure but doesn't include workload-specific tuning, telemetry, cost protection, or availability guarantees.
5959

60-
For production and mission-critical workloads, consider the Azure DDoS Protection service to help protect Application Gateway public IPs. For more information, see [Azure DDoS Protection pricing](https://azure.microsoft.com/pricing/details/ddos-protection).
60+
For production and mission-critical workloads, consider using the Azure DDoS Protection service to help protect Application Gateway public IPs. For more information, see [Azure DDoS Protection pricing](https://azure.microsoft.com/pricing/details/ddos-protection).
6161

6262
- Document WAF rule differences between Azure Front Door and failover solutions.
6363

@@ -69,7 +69,7 @@ When you're implementing HA architectures for production workloads, consider the
6969

7070
- Edit the sample commands listed in this guide so that they're tailored to your environment for automation and runbooks.
7171

72-
- Establish clear runbooks and test failover and failback procedures.
72+
- Establish clear runbooks. Test failover and failback procedures.
7373

7474
- Configure comprehensive monitoring and alerting for all endpoints.
7575

@@ -95,7 +95,7 @@ This DNS-based load-balancing solution uses multiple Azure Traffic Manager profi
9595

9696
### Pre-deployment: Azure Front Door vs. Application Gateway
9797

98-
It's important to understand the feature differences between Azure Front Door and an Application Gateway WAF, in case you're using any features that an Application Gateway WAF doesn't offer. The following two tables provide an overview.
98+
It's important to understand the feature differences between Azure Front Door and an Application Gateway WAF, in case you're using any features that an Application Gateway WAF doesn't offer. The following tables provide an overview.
9999

100100
> [!IMPORTANT]
101101
> This solution assumes that you're currently using Azure Front Door to serve traffic across multiple regions or globally. In this design, the steps that follow introduce a secondary Traffic Manager instance that's configured with performance routing between the primary Traffic Manager instance and regional Application Gateway instances.
@@ -111,7 +111,7 @@ It's important to understand the feature differences between Azure Front Door an
111111
| **Core architecture and features** | | |
112112
| Service scope | Global service | Regional service |
113113
| OSI layer | Layer 7 (application layer) | Layer 7 (application layer) |
114-
| Load-balancing level | Across regions | Within region or virtual network |
114+
| Load-balancing level | Across regions | Within a region or virtual network |
115115
| Deployment model | Single global instance | Per-region instances |
116116
| Backend scope | Any public endpoint (Azure or external), and selected Private Link endpoints | Any public endpoint (Azure or external), private IP addresses, and Kubernetes pods in a virtual network |
117117
| Content edge caching | Yes | No |
@@ -170,9 +170,9 @@ It's important to understand the feature differences between Azure Front Door an
170170

171171
- Recommended: /24 (256 addresses) for autoscaling and hitless maintenance
172172

173-
- Formula: (max instances \* 10) + 5 Azure reserved IPs
173+
- Formula: (maximum instances \* 10) + 5 Azure reserved IPs
174174

175-
- Example: 20 max instances → (20 \* 10) + 5 = 205 IPs → use /24
175+
- Example: 20 maximum instances → (20 \* 10) + 5 = 205 IPs → use /24
176176

177177
- For optimal security, use a dedicated subnet for Application Gateway (no other resources).
178178

@@ -196,7 +196,7 @@ For capacity planning and autoscaling strategy, see [Architecture best practices
196196

197197
- Azure Front Door configured with a custom domain and BYO certificate.
198198

199-
- A lower DNS TTL for your CNAME so that Azure Front Door serves traffic to the lowest time setting.
199+
- A lower DNS TTL for your CNAME record so that Azure Front Door serves traffic to the lowest time setting.
200200

201201
- Azure subscription with permissions to create virtual networks, an Application Gateway instance, and a Traffic Manager instance.
202202

@@ -231,7 +231,7 @@ For capacity planning and autoscaling strategy, see [Architecture best practices
231231
    --query ipAddress -o tsv
232232
Write-Host "Application Gateway IP: $APPGW_IP"
233233
234-
# Test Application Gateway directly (SkipCertificateCheck because cert is for domain, not IP)
234+
# Test Application Gateway directly (SkipCertificateCheck because certificate is for domain, not IP)
235235
Invoke-WebRequest -Uri "https://$APPGW_IP/index.html" -Method Head -SkipCertificateCheck
236236
```
237237
@@ -262,7 +262,7 @@ Evaluate your global traffic patterns and deploy Application Gateway instances i
262262
263263
| Setting | Value | Notes |
264264
| ---- | ---- | ---- |
265-
| **Routing method** | **Performance** (multi-region) or **Priority** (single-region) | Performance optimizes latency for a multi-region configuration. |
265+
| **Routing method** | **Performance** (multi-region) or **Priority** (single-region) | **Performance** optimizes latency for a multi-region configuration. |
266266
| **Protocol** | **HTTPS** | Validates Application Gateway health via HTTPS. |
267267
| **Port** | **443** | Standard HTTPS port. |
268268
| **Path** | `/health` or `/index.html` | Must match the path of the Application Gateway backend health probe. |
@@ -271,7 +271,7 @@ Evaluate your global traffic patterns and deploy Application Gateway instances i
271271
> [!NOTE]
272272
> By default, Azure public IPs for Application Gateway don't have DNS names configured. You must use the public IP address directly in Traffic Manager endpoints, not a DNS name. The `--endpoint-location` parameter is required for performance routing to enable geographic routing.
273273
274-
1. Create a primary weighted/always-serve Traffic Manager instance, as shown earlier in the diagram for this scenario. For more information, see [Create a Traffic Manager profile](/azure/traffic-manager/traffic-manager-create-profile)
274+
1. Create a primary weighted/always-serve Traffic Manager instance, as shown earlier in the diagram for this scenario. For more information, see [Create a Traffic Manager profile](/azure/traffic-manager/traffic-manager-create-profile).
275275
276276
For both endpoints, use these configurations:
277277
@@ -291,9 +291,9 @@ Evaluate your global traffic patterns and deploy Application Gateway instances i
291291
292292
- **Name**: **endpoint-afd-primary**
293293
294-
- **Target**: Host name of the Azure Front Door endpoint (for example, `myapp-12345.z01.azurefd.net`)
294+
- **Fully-qualified domain name (FQDN) or IP address**: Host name of the Azure Front Door endpoint (for example, `myapp-12345.z01.azurefd.net`)
295295
296-
- **Enable endpoint**: Selected (enabled)
296+
- **Enable Endpoint**: Selected (enabled)
297297
298298
- **Custom Header settings**: `Host=$CUSTOM_DOMAIN` (required for Azure Front Door to route to correct custom domain)
299299
@@ -307,7 +307,7 @@ Evaluate your global traffic patterns and deploy Application Gateway instances i
307307
308308
- **Name**: **endpoint-appgw-secondary**
309309
310-
- **Target**: Secondary Traffic Manager FQDN (for example, `myapp-appgw.trafficmanager.net`)
310+
- **Fully-qualified domain name (FQDN) or IP address**: Secondary Traffic Manager FQDN (for example, `myapp-appgw.trafficmanager.net`)
311311
312312
- **Enable Endpoint**: Cleared (disabled)
313313
@@ -330,7 +330,7 @@ Evaluate your global traffic patterns and deploy Application Gateway instances i
330330
> [!WARNING]
331331
> The following steps will redirect your production traffic from Azure Front Door directly to Traffic Manager and cause a potential service impact. Before you proceed:
332332
>
333-
> - Test these steps in a non-production environment. For example, temporarily modify the local `hosts` file on a non‑production workstation to resolve the custom domain to the Traffic Manager endpoint. This modification allows validation without affecting live traffic.
333+
> - Test these steps in a non-production environment first. For example, temporarily modify the local `hosts` file on a non‑production workstation to resolve the custom domain to the Traffic Manager endpoint. This modification allows validation without affecting live traffic.
334334
> - Reduce your DNS CNAME TTL to the lowest value possible (for example, 60-300 seconds) at least 24 hours before you make changes.
335335
> - Plan for a maintenance window during low-traffic periods if possible.
336336
> - Have rollback procedures ready in case problems arise.
@@ -342,18 +342,16 @@ Evaluate your global traffic patterns and deploy Application Gateway instances i
342342
| **Name/Host** | **www** | **www** (no change) |
343343
| **Value/Points to** | Host name of the Azure Front Door endpoint | `$ATM_DNS_NAME.trafficmanager.net` |
344344
345-
1. Verify Traffic Manager resolution. Wait for DNS propagation and test.
346-
347-
DNS propagation typically takes 5-10 minutes but can take up to 48 hours globally. Monitor propagation progress:
345+
1. Verify Traffic Manager resolution:
348346
349347
```
350348
# Verify Traffic Manager profile is resolving
351349
nslookup "$ATM_DNS_NAME.trafficmanager.net"
352350
```
353351
354-
The test should return the IP address of Azure Front Door endpoint.
352+
The test should return the IP address of the Azure Front Door endpoint.
355353
356-
Now, test HTTPS connectivity:
354+
1. Wait for DNS propagation, and then test HTTPS connectivity. DNS propagation typically takes 5-10 minutes but can take up to 48 hours globally.
357355
358356
```
359357
# Check DNS from different resolvers
@@ -491,11 +489,11 @@ Configure your secondary CDN provider with:
491489
492490
- An alternative CDN account.
493491
494-
- A lower DNS TTL for your CNAME so that Azure Front Door serves traffic to the lowest time setting.
492+
- A lower DNS TTL for your CNAME record so that Azure Front Door serves traffic to the lowest time setting.
495493
496494
- Origin servers that both Azure Front Door and the alternative CDN can access.
497495
498-
- A custom domain with the ability to modify DNS records.
496+
- A custom domain that can modify DNS records.
499497
500498
> [!IMPORTANT]
501499
> If you're currently using Azure Front Door-managed certificates, you must migrate to BYO certificates before implementing this HA solution. Azure Front Door-managed certificates can't be exported and installed on alternative CDNs. For more information and configuration instructions for BYO certificates, see [Configure HTTPS on an Azure Front Door custom domain](/azure/frontdoor/standard-premium/how-to-configure-https-custom-domain).
@@ -504,11 +502,11 @@ Configure your secondary CDN provider with:
504502
505503
Configure your secondary CDN provider:
506504
507-
- Set up the CDN zone/property with your custom domain.
505+
- Set up the CDN zone or property with your custom domain.
508506
509507
- Configure origin servers the same way that you configured the Azure Front Door backend pool.
510508
511-
- Upload the BYO SSL/TLS certificate. This cerficate is the same one that you used in Azure Front Door.
509+
- Upload the BYO SSL/TLS certificate. This certificate is the same one that you used in Azure Front Door.
512510
513511
- Configure CDN caching rules to match Azure Front Door behavior. For example, configure cache durations and query string handling.
514512
@@ -518,7 +516,7 @@ Configure your secondary CDN provider:
518516
519517
- Configure a custom domain to match your Azure Front Door custom domain (for example, `www.contoso.com`).
520518
521-
- Record the CDN edge host name for Traffic Manager configuration (for example, `your-site.cdn.provider.net`).
519+
- Record the CDN edge's host name for Traffic Manager configuration (for example, `your-site.cdn.provider.net`).
522520
523521
#### Step 3: Create a Traffic Manager profile
524522
@@ -535,35 +533,36 @@ Apply the following configurations to create the Traffic Manager profile. For mo
535533
536534
#### Step 4: Configure Traffic Manager endpoints
537535
538-
Create two endpoints within the Traffic Manager profile. Use the following configurations.
536+
Create two endpoints within the Traffic Manager profile.
539537
540538
Use these configurations for the primary endpoint (Azure Front Door):
541539
542540
- **Type**: **External endpoint**
543541
544542
- **Name**: **endpoint-afd-primary**
545543
546-
- **Target**: Azure Front Door endpoint hostname (for example, `myapp-endpoint-12345.z01.azurefd.net`)
544+
- **Fully-qualified domain name (FQDN) or IP address**: Host name of the Azure Front Door endpoint (for example, `myapp-endpoint-12345.z01.azurefd.net`)
547545
548546
- **Weight**: **100**
549547
550548
- **Enable Endpoint**: Selected (enabled) initially
551549
552550
- **Custom Header settings**: `Host=$CUSTOM_DOMAIN` (required for Azure Front Door to route to the correct custom domain)
553-
554-
The `--custom-headers "Host=$CUSTOM_DOMAIN"` parameter is critical for Azure Front Door endpoints. Without it, Azure Front Door might not properly route requests to your custom domain configuration. It's a supported feature of Azure Traffic Manager.
555-
551+
556552
- **Health Checks**: **Always serve traffic** (disable health checks)
557553
558554
:::image type="content" source="./media/high-availability/traffic-manager-primary-endpoint.png" alt-text="Screenshot of configurations for adding a Traffic Manager primary endpoint in the Azure portal." lightbox="./media/high-availability/traffic-manager-primary-endpoint.png":::
559555
556+
> [!NOTE]
557+
> The `--custom-headers "Host=$CUSTOM_DOMAIN"` parameter is critical for Azure Front Door endpoints. Without it, Azure Front Door might not properly route requests to your custom domain configuration. It's a supported feature of Azure Traffic Manager.
558+
560559
Use these configurations for the secondary endpoint (alternative CDN):
561560
562561
- **Type**: **External endpoint**
563562
564563
- **Name**: **endpoint-cdn-secondary**
565564
566-
- **Target**: CDN edge host name (for example, `myapp.cdn.net`)
565+
- **Fully-qualified domain name (FQDN) or IP address**: CDN edge's host name (for example, `myapp.cdn.net`)
567566
568567
- **Weight**: **100**
569568
@@ -576,7 +575,7 @@ Use these configurations for the secondary endpoint (alternative CDN):
576575
> [!WARNING]
577576
> The following steps will redirect your production traffic from Azure Front Door directly to Traffic Manager. Before you proceed:
578577
>
579-
> - Test these steps in a non-production environment.
578+
> - Test these steps in a non-production environment first.
580579
> - Reduce your DNS CNAME TTL to the lowest value possible (for example, 60-300 seconds) at least 24 hours before you make changes.
581580
> - Plan for a maintenance window during low-traffic periods if possible.
582581
> - Have rollback procedures ready in case problems arise.
@@ -590,7 +589,7 @@ Use these configurations for the secondary endpoint (alternative CDN):
590589
591590
DNS propagation typically takes 5-10 minutes but can take up to 48 hours globally.
592591
593-
2. Verify Traffic Manager resolution. Wait for DNS propagation and test HTTPS connectivity.
592+
2. Verify Traffic Manager resolution. Wait for DNS propagation, and then test HTTPS connectivity.
594593
595594
```
596595
# Verify Traffic Manager profile is resolving

0 commit comments

Comments
 (0)