You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/frontdoor/high-availability.md
+37-38Lines changed: 37 additions & 38 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,11 +27,11 @@ This guide presents two proven architectures that use Traffic Manager to provide
27
27
28
28
| Aspect | Scenario 1 (Azure Front Door + Application Gateway) | Scenario 2 (Azure Front Door + other CDN) |
29
29
| ---- | ---- | ---- |
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.|
| 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.|
35
35
36
36
## Considerations for production environments
37
37
@@ -51,13 +51,13 @@ When you're implementing HA architectures for production workloads, consider the
51
51
52
52
- 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.
53
53
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.
55
55
56
56
- 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).
57
57
58
58
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.
59
59
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).
61
61
62
62
- Document WAF rule differences between Azure Front Door and failover solutions.
63
63
@@ -69,7 +69,7 @@ When you're implementing HA architectures for production workloads, consider the
69
69
70
70
- Edit the sample commands listed in this guide so that they're tailored to your environment for automation and runbooks.
71
71
72
-
- Establish clear runbooks and test failover and failback procedures.
72
+
- Establish clear runbooks. Test failover and failback procedures.
73
73
74
74
- Configure comprehensive monitoring and alerting for all endpoints.
75
75
@@ -95,7 +95,7 @@ This DNS-based load-balancing solution uses multiple Azure Traffic Manager profi
95
95
96
96
### Pre-deployment: Azure Front Door vs. Application Gateway
97
97
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.
99
99
100
100
> [!IMPORTANT]
101
101
> 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
111
111
|**Core architecture and features**|||
112
112
| Service scope | Global service | Regional service |
| Load-balancing level | Across regions | Within region or virtual network |
114
+
| Load-balancing level | Across regions | Within a region or virtual network |
115
115
| Deployment model | Single global instance | Per-region instances |
116
116
| 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 |
117
117
| Content edge caching | Yes | No |
@@ -170,9 +170,9 @@ It's important to understand the feature differences between Azure Front Door an
170
170
171
171
- Recommended: /24 (256 addresses) for autoscaling and hitless maintenance
- Example: 20 max instances → (20 \* 10) + 5 = 205 IPs → use /24
175
+
- Example: 20 maximum instances → (20 \* 10) + 5 = 205 IPs → use /24
176
176
177
177
- For optimal security, use a dedicated subnet for Application Gateway (no other resources).
178
178
@@ -196,7 +196,7 @@ For capacity planning and autoscaling strategy, see [Architecture best practices
196
196
197
197
- Azure Front Door configured with a custom domain and BYO certificate.
198
198
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.
200
200
201
201
- Azure subscription with permissions to create virtual networks, an Application Gateway instance, and a Traffic Manager instance.
202
202
@@ -231,7 +231,7 @@ For capacity planning and autoscaling strategy, see [Architecture best practices
231
231
--query ipAddress -o tsv
232
232
Write-Host "Application Gateway IP: $APPGW_IP"
233
233
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)
235
235
Invoke-WebRequest -Uri "https://$APPGW_IP/index.html" -Method Head -SkipCertificateCheck
236
236
```
237
237
@@ -262,7 +262,7 @@ Evaluate your global traffic patterns and deploy Application Gateway instances i
262
262
263
263
| Setting | Value | Notes |
264
264
| ---- | ---- | ---- |
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. |
266
266
| **Protocol** | **HTTPS** | Validates Application Gateway health via HTTPS. |
267
267
| **Port** | **443** | Standard HTTPS port. |
268
268
| **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
271
271
> [!NOTE]
272
272
> 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.
273
273
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).
275
275
276
276
For both endpoints, use these configurations:
277
277
@@ -291,9 +291,9 @@ Evaluate your global traffic patterns and deploy Application Gateway instances i
291
291
292
292
- **Name**: **endpoint-afd-primary**
293
293
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`)
295
295
296
-
- **Enable endpoint**: Selected (enabled)
296
+
- **Enable Endpoint**: Selected (enabled)
297
297
298
298
- **Custom Header settings**: `Host=$CUSTOM_DOMAIN` (required for Azure Front Door to route to correct custom domain)
299
299
@@ -307,7 +307,7 @@ Evaluate your global traffic patterns and deploy Application Gateway instances i
307
307
308
308
- **Name**: **endpoint-appgw-secondary**
309
309
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`)
311
311
312
312
- **Enable Endpoint**: Cleared (disabled)
313
313
@@ -330,7 +330,7 @@ Evaluate your global traffic patterns and deploy Application Gateway instances i
330
330
> [!WARNING]
331
331
> 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:
332
332
>
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.
334
334
> - Reduce your DNS CNAME TTL to the lowest value possible (for example, 60-300 seconds) at least 24 hours before you make changes.
335
335
> - Plan for a maintenance window during low-traffic periods if possible.
336
336
> - Have rollback procedures ready in case problems arise.
@@ -342,18 +342,16 @@ Evaluate your global traffic patterns and deploy Application Gateway instances i
342
342
| **Name/Host** | **www** | **www** (no change) |
343
343
| **Value/Points to** | Host name of the Azure Front Door endpoint | `$ATM_DNS_NAME.trafficmanager.net` |
344
344
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:
348
346
349
347
```
350
348
# Verify Traffic Manager profile is resolving
351
349
nslookup "$ATM_DNS_NAME.trafficmanager.net"
352
350
```
353
351
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.
355
353
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.
357
355
358
356
```
359
357
# Check DNS from different resolvers
@@ -491,11 +489,11 @@ Configure your secondary CDN provider with:
491
489
492
490
- An alternative CDN account.
493
491
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.
495
493
496
494
- Origin servers that both Azure Front Door and the alternative CDN can access.
497
495
498
-
- A custom domain with the ability to modify DNS records.
496
+
- A custom domain that can modify DNS records.
499
497
500
498
> [!IMPORTANT]
501
499
> 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:
504
502
505
503
Configure your secondary CDN provider:
506
504
507
-
- Set up the CDN zone/property with your custom domain.
505
+
- Set up the CDN zone or property with your custom domain.
508
506
509
507
- Configure origin servers the same way that you configured the Azure Front Door backend pool.
510
508
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.
512
510
513
511
- Configure CDN caching rules to match Azure Front Door behavior. For example, configure cache durations and query string handling.
514
512
@@ -518,7 +516,7 @@ Configure your secondary CDN provider:
518
516
519
517
- Configure a custom domain to match your Azure Front Door custom domain (for example, `www.contoso.com`).
520
518
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`).
522
520
523
521
#### Step 3: Create a Traffic Manager profile
524
522
@@ -535,35 +533,36 @@ Apply the following configurations to create the Traffic Manager profile. For mo
535
533
536
534
#### Step 4: Configure Traffic Manager endpoints
537
535
538
-
Create two endpoints within the Traffic Manager profile. Use the following configurations.
536
+
Create two endpoints within the Traffic Manager profile.
539
537
540
538
Use these configurations for the primary endpoint (Azure Front Door):
541
539
542
540
- **Type**: **External endpoint**
543
541
544
542
- **Name**: **endpoint-afd-primary**
545
543
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`)
- **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
+
556
552
- **Health Checks**: **Always serve traffic** (disable health checks)
557
553
558
554
:::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":::
559
555
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
+
560
559
Use these configurations for the secondary endpoint (alternative CDN):
561
560
562
561
- **Type**: **External endpoint**
563
562
564
563
- **Name**: **endpoint-cdn-secondary**
565
564
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`)
567
566
568
567
- **Weight**: **100**
569
568
@@ -576,7 +575,7 @@ Use these configurations for the secondary endpoint (alternative CDN):
576
575
> [!WARNING]
577
576
> The following steps will redirect your production traffic from Azure Front Door directly to Traffic Manager. Before you proceed:
578
577
>
579
-
> - Test these steps in a non-production environment.
578
+
> - Test these steps in a non-production environment first.
580
579
> - Reduce your DNS CNAME TTL to the lowest value possible (for example, 60-300 seconds) at least 24 hours before you make changes.
581
580
> - Plan for a maintenance window during low-traffic periods if possible.
582
581
> - Have rollback procedures ready in case problems arise.
@@ -590,7 +589,7 @@ Use these configurations for the secondary endpoint (alternative CDN):
590
589
591
590
DNS propagation typically takes 5-10 minutes but can take up to 48 hours globally.
592
591
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.
0 commit comments