Use Health Probes for Front Door backends#
Reliability · Front Door · 2021_03
Configure and enable health probes for each backend pool.
Description#
The health and performance of an application can degrade over time. Degradation might not be noticeable until the application fails.
Azure Front Door can use periodic health probes against backend endpoints to determine health status. When one or more backend in a pool is healthy traffic is routed to healthy endpoints only. If all endpoints in a pool is unhealthy Front Door sends the request to any enabled endpoint.
Health probes allow Front Door to select a backend endpoint able to respond to the request.
Recommendation#
Consider enabling a health probe for each Front Door backend endpoint.
Examples#
Configure with Azure CLI#
Azure CLI snippet
az network front-door probe update --front-door-name '<front_door>' -n '<probe_name>' -g '<resource_group>' --enabled 'Enabled'
Configure with Azure PowerShell#
Azure PowerShell snippet
$probeSetting = New-AzFrontDoorHealthProbeSettingObject -Name '<probe_name>' -EnabledState 'Enabled'
Set-AzFrontDoor -Name '<front_door>' -ResourceGroupName '<resource_group>' -HealthProbeSetting $probeSetting
Configure with Azure PowerShell#
Azure PowerShell snippet
$probeSetting = New-AzFrontDoorHealthProbeSettingObject -Name '<probe_name>' -Path '<path>'
Set-AzFrontDoor -Name '<front_door>' -ResourceGroupName '<resource_group>' -HealthProbeSetting $probeSetting
Configure with Azure template#
To deploy a Front Door resource that passes this rule:
- Configure the healthProbeSettings on the OriginGroup
For example:
Azure Template snippet
"resources": [
{
"type": "Microsoft.Cdn/profiles",
"apiVersion": "2021-06-01",
"name": "[parameters('frontDoorName')]",
"location": "Global",
"sku": {
"name": "Standard_AzureFrontDoor"
}
},
{
"type": "Microsoft.Cdn/profiles/afdEndpoints",
"apiVersion": "2021-06-01",
"name": "[format('{0}/{1}', parameters('frontDoorName'), variables('frontDoorEndpointName'))]",
"location": "Global",
"properties": {
"enabledState": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Cdn/profiles', parameters('frontDoorName'))]"
]
},
{
"type": "Microsoft.Cdn/profiles/originGroups",
"apiVersion": "2021-06-01",
"name": "[format('{0}/{1}', parameters('frontDoorName'), variables('frontDoorDefaultOriginGroupName'))]",
"properties": {
"loadBalancingSettings": {
"sampleSize": 4,
"successfulSamplesRequired": 3
},
"healthProbeSettings": {
"probePath": "/",
"probeRequestType": "HEAD",
"probeProtocol": "Http",
"probeIntervalInSeconds": 100
}
},
"dependsOn": [
"[resourceId('Microsoft.Cdn/profiles', parameters('frontDoorName'))]"
]
}
]
```
### Configure with Bicep
To deploy a Front Door resource that passes this rule:
- Configure the healthProbeSettings on the OriginGroup
For example:
```bicep title="Azure Bicep snippet"
resource frontDoorResource 'Microsoft.Cdn/profiles@2021-06-01' = {
name: frontDoorName
location: 'Global'
sku: {
name: 'Standard_AzureFrontDoor'
}
}
resource frontDoorEndpoint 'Microsoft.Cdn/profiles/afdendpoints@2021-06-01' = {
parent: frontDoorResource
name: frontDoorEndpointName
location: 'Global'
properties: {
enabledState: 'Enabled'
}
}
resource frontDoorOriginGroup 'Microsoft.Cdn/profiles/origingroups@2021-06-01' = {
name: frontDoorDefaultOriginGroupName
parent: frontDoorResource
properties: {
loadBalancingSettings: {
sampleSize: 4
successfulSamplesRequired: 3
}
healthProbeSettings: {
probePath: '/'
probeRequestType: 'HEAD'
probeProtocol: 'Http'
probeIntervalInSeconds: 100
}
}
}
Links#
- Creating good health probes
- Health probes
- How Front Door determines backend health
- Health Endpoint Monitoring pattern
- Azure resource template
Last update:
2022-10-17