Skip to content

Commit c2f1ad6

Browse files
Merge pull request #192912 from johnguo-msft/az-functions-portal
Add Portal Support to the AZ Redundancy EP Doc
2 parents 51d53c7 + 33c0ed1 commit c2f1ad6

File tree

5 files changed

+97
-46
lines changed

5 files changed

+97
-46
lines changed

articles/azure-functions/azure-functions-az-redundancy.md

Lines changed: 86 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,39 @@ title: Azure Functions availability zone support on Elastic Premium plans
33
description: Learn how to use availability zone redundancy with Azure Functions for high-availability function applications on Elastic Premium plans.
44
ms.topic: conceptual
55
ms.author: johnguo
6-
ms.date: 09/07/2021
6+
ms.date: 03/24/2022
77
ms.custom: references_regions
88
# Goal: Introduce AZ Redundancy in Azure Functions elastic premium plans to customers + a tutorial on how to get started with ARM templates
99
---
1010

1111
# Azure Functions support for availability zone redundancy
1212

13-
Availability zone (AZ) support for Azure Functions is now available on Elastic Premium and Dedicated (App Service) plans. A Zone Redundant Azure Function application will automatically balance its instances between availability zones for higher availability. This document focuses on zone redundancy support for Elastic Premium Function plans. For zone redundancy on Dedicated plans, refer [here](../app-service/how-to-zone-redundancy.md).
13+
Availability zone (AZ) support for Azure Functions is now available on Premium (Elastic Premium) and Dedicated (App Service) plans. A zone-redundant Functions application automatically balances its instances between availability zones for higher availability. This article focuses on zone redundancy support for Premium plans. For zone redundancy on Dedicated plans, refer [here](../app-service/how-to-zone-redundancy.md).
14+
15+
[!INCLUDE [functions-premium-plan-note](../../includes/functions-premium-plan-note.md)]
1416

1517
## Overview
1618

17-
An [availability zone](../availability-zones/az-overview.md#availability-zones) is a high-availability offering that protects your applications and data from datacenter failures. Availability zones are unique physical locations within an Azure region. Each zone is made up of one or more datacenters equipped with independent power, cooling, and networking. To ensure resiliency, there's a minimum of three separate zones in all enabled regions. You can build high availability into your application architecture by co-locating your compute, storage, networking, and data resources within a zone and replicating in other zones.
19+
An [availability zone](../availability-zones/az-overview.md#availability-zones) is a high-availability offering that protects your applications and data from datacenter failures. Availability zones are unique physical locations within an Azure region. Each zone comprises one or more datacenters equipped with independent power, cooling, and networking. To ensure resiliency, there's a minimum of three separate zones in all enabled regions. You can build high-availability into your application architecture by co-locating your compute, storage, networking, and data resources within a zone and replicating into other zones.
1820

19-
A zone redundant function app will automatically distribute load the instances that your app runs on between the availability zones in the region. For Zone Redundant Elastic Premium apps, even as the app scales in and out, the instances the app is running on are still evenly distributed between availability zones.
21+
A zone redundant function app automatically distributes the instances your app runs on between the availability zones in the region. For apps running in a zone-redundant Premium plan, even as the app scales in and out, the instances the app is running on are still evenly distributed between availability zones.
2022

2123
## Requirements
2224

23-
> [!IMPORTANT]
24-
> When selecting a [storage account](storage-considerations.md#storage-account-requirements) for your function app, be sure to use a [zone redundant storage account (ZRS)](../storage/common/storage-redundancy.md#zone-redundant-storage). Otherwise, in the case of a zonal outage, Functions may show unexpected behavior due to its dependency on Storage.
25+
When hosting in a zone-redundant Premium plan, the following requirements must be met.
2526

27+
- You must use a [zone redundant storage account (ZRS)](../storage/common/storage-redundancy.md#zone-redundant-storage) for your function app's [storage account](storage-considerations.md#storage-account-requirements). If you use a different type of storage account, Functions may show unexpected behavior during a zonal outage.
2628
- Both Windows and Linux are supported.
27-
- Must be hosted on an [Elastic Premium](functions-premium-plan.md) or Dedicated hosting plan. Instructions on zone redundancy with Dedicated (App Service) hosting plan can be found [here](../app-service/how-to-zone-redundancy.md).
29+
- Must be hosted on an [Elastic Premium](functions-premium-plan.md) or Dedicated hosting plan. Instructions on zone redundancy with Dedicated (App Service) hosting plan can be found [in this article](../app-service/how-to-zone-redundancy.md).
2830
- Availability zone (AZ) support isn't currently available for function apps on [Consumption](consumption-plan.md) plans.
29-
- Zone redundant plans must specify a minimum instance count of 3.
30-
- Function apps on an Elastic Premium plan additionally must have a minimum [always ready instances](functions-premium-plan.md#always-ready-instances) count of 3.
31-
- Can be enabled in any of the following regions:
31+
- Zone redundant plans must specify a minimum instance count of three.
32+
- Function apps hosted on a Premium plan must also have a minimum [always ready instances](functions-premium-plan.md#always-ready-instances) count of three.
33+
34+
Zone-redundant Premium plans can currently be enabled in any of the following regions:
3235
- West US 2
3336
- West US 3
3437
- Central US
38+
- South Central US
3539
- East US
3640
- East US 2
3741
- Canada Central
@@ -44,48 +48,86 @@ A zone redundant function app will automatically distribute load the instances t
4448
- Japan East
4549
- Southeast Asia
4650
- Australia East
47-
- At this time, must be created through [ARM template](../azure-resource-manager/templates/index.yml).
4851

4952
## How to deploy a function app on a zone redundant Premium plan
5053

51-
For initial creation of a zone redundant Elastic Premium Functions plan, you need to deploy via [ARM templates](../azure-resource-manager/templates/quickstart-create-templates-use-visual-studio-code.md). Then, once successfully created, you can view and interact with the Function Plan via the Azure portal and CLI tooling. An ARM template is only needed for the initial creation of the Function Plan. A guide to hosting Functions on Premium plans can be found [here](functions-infrastructure-as-code.md#deploy-on-premium-plan). Once the zone redundant plan is created and deployed, any function app hosted on your new plan will now be zone redundant.
54+
There are currently two ways to deploy a zone-redundant premium plan and function app. You can use either the [Azure portal](https://portal.azure.com) or an ARM template.
55+
56+
# [Azure portal](#tab/azure-portal)
57+
58+
1. Open the Azure portal and navigate to the **Create Function App** page. Information on creating a function app in the portal can be found [here](functions-create-function-app-portal.md#create-a-function-app).
59+
60+
1. In the **Basics** page, fill out the fields for your function app. Pay special attention to the fields in the table below (also highlighted in the screenshot below), which have specific requirements for zone redundancy.
61+
62+
| Setting | Suggested value | Notes for Zone Redundancy |
63+
| ------------ | ---------------- | ----------- |
64+
| **Region** | Preferred region | The subscription under which this new function app is created. You must pick a region that is AZ enabled from the [list above](#requirements). |
65+
66+
![Screenshot of Basics tab of function app create page.](./media/functions-az-redundancy\azure-functions-basics-az.png)
67+
68+
1. In the **Hosting** page, fill out the fields for your function app hosting plan. Pay special attention to the fields in the table below (also highlighted in the screenshot below), which have specific requirements for zone redundancy.
69+
70+
| Setting | Suggested value | Notes for Zone Redundancy |
71+
| ------------ | ---------------- | ----------- |
72+
| **Storage Account** | A [zone-redundant storage account](storage-considerations.md#storage-account-requirements) | As mentioned above in the [requirements](#requirements) section, we strongly recommend using a zone-redundant storage account for your zone redundant function app. |
73+
| **Plan Type** | Functions Premium | This article details how to create a zone redundant app in a Premium plan. Zone redundancy isn't currently available in Consumption plans. Information on zone redundancy on app service plans can be found [in this article](../app-service/how-to-zone-redundancy.md). |
74+
| **Zone Redundancy** | Enabled | This field populates the flag that determines if your app is zone redundant or not. You won't be able to select `Enabled` unless you have chosen a region supporting zone redundancy, as mentioned in step 2. |
75+
76+
![Screenshot of Hosting tab of function app create page.](./media/functions-az-redundancy\azure-functions-hosting-az.png)
5277

53-
The only properties to be aware of while creating a zone redundant Function plan are the new **zoneRedundant** property and the Function Plan instance count (**capacity**) fields. The **zoneRedundant** property must be set to **true** and the **capacity** property should be set based on the workload requirement, but no less than 3. Choosing the right capacity varies based on several factors and high availability/fault tolerance strategies. A good rule of thumb is to ensure sufficient instances for the application such that losing one zone of instances leaves sufficient capacity to handle expected load.
78+
1. For the rest of the function app creation process, create your function app as normal. There are no fields in the rest of the creation process that affect zone redundancy.
79+
80+
# [ARM template](#tab/arm-template)
81+
82+
You can use an [ARM template](../azure-resource-manager/templates/quickstart-create-templates-use-visual-studio-code.md) to deploy to a zone-redundant Premium plan. A guide to hosting Functions on Premium plans can be found [here](functions-infrastructure-as-code.md#deploy-on-premium-plan).
83+
84+
The only properties to be aware of while creating a zone-redundant hosting plan are the new `zoneRedundant` property and the plan's instance count (`capacity`) fields. The `zoneRedundant` property must be set to `true` and the `capacity` property should be set based on the workload requirement, but not less than `3`. Choosing the right capacity varies based on several factors and high availability/fault tolerance strategies. A good rule of thumb is to ensure sufficient instances for the application such that losing one zone of instances leaves sufficient capacity to handle expected load.
5485

5586
> [!IMPORTANT]
56-
> Azure function Apps hosted on an elastic premium, zone redundant Function plan must have a minimum [always ready instance](functions-premium-plan.md#always-ready-instances) count of 3. This is to enforce that a zone redundant function app always has enough instances to satisfy at least one worker per zone.
87+
> Azure Functions apps hosted on an elastic premium, zone-redundant plan must have a minimum [always ready instance](functions-premium-plan.md#always-ready-instances) count of 3. This make sure that a zone-redundant function app always has enough instances to satisfy at least one worker per zone.
5788
58-
Below is an ARM template snippet for a zone redundant, Premium Function Plan, showing the new **zoneRedundant** field and the **capacity** specification.
89+
Below is an ARM template snippet for a zone-redundant, Premium plan showing the `zoneRedundant` field and the `capacity` specification.
5990

60-
```
61-
"resources": [
62-
{
63-
"type": "Microsoft.Web/serverfarms",
64-
"apiVersion": "2021-01-15",
65-
"name": "your_plan_name_here",
66-
"location": "Central US",
67-
"sku": {
68-
"name": "EP3",
69-
"tier": "ElasticPremium",
70-
"size": "EP3",
71-
"family": "EP",
72-
"capacity": 3
73-
},
74-
"kind": "elastic",
75-
"properties": {
76-
"perSiteScaling": false,
77-
"elasticScaleEnabled": true,
78-
"maximumElasticWorkerCount": 20,
79-
"isSpot": false,
80-
"reserved": false,
81-
"isXenon": false,
82-
"hyperV": false,
83-
"targetWorkerCount": 0,
84-
"targetWorkerSizeId": 0,
85-
"zoneRedundant": true
86-
}
91+
```json
92+
"resources": [
93+
{
94+
"type": "Microsoft.Web/serverfarms",
95+
"apiVersion": "2021-01-15",
96+
"name": "your_plan_name_here",
97+
"location": "Central US",
98+
"sku": {
99+
"name": "EP3",
100+
"tier": "ElasticPremium",
101+
"size": "EP3",
102+
"family": "EP",
103+
"capacity": 3
104+
},
105+
"kind": "elastic",
106+
"properties": {
107+
"perSiteScaling": false,
108+
"elasticScaleEnabled": true,
109+
"maximumElasticWorkerCount": 20,
110+
"isSpot": false,
111+
"reserved": false,
112+
"isXenon": false,
113+
"hyperV": false,
114+
"targetWorkerCount": 0,
115+
"targetWorkerSizeId": 0,
116+
"zoneRedundant": true
87117
}
88-
]
118+
}
119+
]
89120
```
90121

91-
To learn more, see [Automate resource deployment for your function app in Azure Functions](functions-infrastructure-as-code.md).
122+
To learn more about these templates, see [Automate resource deployment in Azure Functions](functions-infrastructure-as-code.md).
123+
124+
---
125+
126+
After the zone-redundant plan is created and deployed, any function app hosted on your new plan is considered zone-redundant.
127+
128+
## Next steps
129+
130+
> [!div class="nextstepaction"]
131+
> [Improve the performance and reliability of Azure Functions](performance-reliability.md)
132+
133+

articles/azure-functions/functions-premium-plan.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ ms.custom: references_regions, fasttrack-edit, devx-track-azurecli
1212

1313
The Azure Functions Elastic Premium plan is a dynamic scale hosting option for function apps. For other hosting plan options, see the [hosting plan article](functions-scale.md).
1414

15-
>[!IMPORTANT]
16-
>Azure Functions runs on the Azure App Service platform. In the App Service platform, plans that host Premium plan function apps are referred to as *Elastic* Premium plans, with SKU names like `EP1`. If you choose to run your function app on a Premium plan, make sure to create a plan with an SKU name that starts with "E", such as `EP1`. App Service plan SKU names that start with "P", such as `P1V2` (Premium V2 Small plan), are actually [Dedicated hosting plans](dedicated-plan.md). Because they are Dedicated and not Elastic Premium, plans with SKU names starting with "P" won't scale dynamically and may increase your costs.
15+
[!INCLUDE [functions-premium-plan-note](../../includes/functions-premium-plan-note.md)]
1716

1817
Premium plan hosting provides the following benefits to your functions:
1918

51.8 KB
Loading
171 KB
Loading
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
author: ggailey777
3+
ms.service: azure-functions
4+
ms.topic: include
5+
ms.date: 03/24/2022
6+
ms.author: glenga
7+
---
8+
9+
>[!IMPORTANT]
10+
>Azure Functions runs on the Azure App Service platform. In the App Service platform, plans that host Premium plan function apps are referred to as *Elastic* Premium plans, with SKU names like `EP1`. If you choose to run your function app on a Premium plan, make sure to create a plan with an SKU name that starts with "E", such as `EP1`. App Service plan SKU names that start with "P", such as `P1V2` (Premium V2 Small plan), are actually [Dedicated hosting plans](../articles/azure-functions/dedicated-plan.md). Because they are Dedicated and not Elastic Premium, plans with SKU names starting with "P" won't scale dynamically and may increase your costs.

0 commit comments

Comments
 (0)