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/azure-monitor/autoscale/autoscale-overview.md
+67-52Lines changed: 67 additions & 52 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,71 +12,92 @@ ms.reviewer: riroloff
12
12
---
13
13
14
14
# Overview of autoscale in Microsoft Azure
15
+
15
16
This article describes Microsoft Azure autoscale and its benefits.
16
17
17
18
Azure autoscale supports many resource types. For more information about supported resources, see [autoscale supported resources](#supported-services-for-autoscale).
18
19
19
20
> [!NOTE]
20
21
> [Availability sets](/archive/blogs/kaevans/autoscaling-azurevirtual-machines) are an older scaling feature for virtual machines with limited support. We recommend migrating to [virtual machine scale sets](/azure/virtual-machine-scale-sets/overview) for faster and more reliable autoscale support.
21
22
22
-
23
23
## What is autoscale
24
-
Autoscale is a service that allows you to automatically add and remove resources according to the load on your application.
24
+
25
+
Autoscale is a service that allows you to automatically add and remove resources according to the load on your application.
25
26
26
27
When your application experiences higher load, autoscale adds resources to handle the increased load. When load is low, autoscale reduces the number of resources, lowering your costs. You can scale your application based on metrics like CPU usage, queue length, and available memory, or based on a schedule. Metrics and schedules are set up in rules. The rules include a minimum level of resources that you need to run your application, and a maximum level of resources that won't be exceeded.
27
28
28
29
For example, scale out your application by adding VMs when the average CPU usage per VM is above 70%. Scale it back in removing VMs when CPU usage drops to 40%.
29
30
30
-

31
+
:::image type="content" source="./media/autoscale-overview/AutoscaleConcept.png" alt-text="A diagram that shows scaling out by adding virtual machine instances.":::
32
+
33
+
When the conditions in the rules are met, one or more autoscale actions are triggered, adding or removing VMs. In addition, you can perform other actions like sending email notifications, or webhooks to trigger processes in other systems.
34
+
35
+
## Scaling out and scaling up
36
+
37
+
Autoscale scales in and out, which is an increase, or decrease of the number of resource instances. Scaling in and out is also called horizontal scaling. For example, for a virtual machine scale set, scaling out means adding more virtual machines. Scaling in means removing virtual machines. Horizontal scaling is flexible in a cloud situation as it allows you to run a large number of VMs to handle load.
38
+
39
+
In contrast, scaling up and down, or vertical scaling, keeps the number of resources constant, but gives those resources more capacity in terms of memory, CPU speed, disk space and network. Vertical scaling is limited by the availability of larger hardware, which eventually reaches an upper limit. Hardware size availability varies in Azure by region. Vertical scaling may also require a restart of the virtual machine during the scaling process.
40
+
41
+
:::image type="content" source="./media/autoscale-overview/vertical-scaling.png" alt-text="A diagram that shows scaling up by adding CPU and memory to a virtual machine.":::
31
42
32
-
When the conditions in the rules are met, one or more autoscale actions are triggered, adding or removing VMs. In addition, you can perform other actions like sending email notifications, or webhooks to trigger processes in other systems..
33
43
### Predictive autoscale (preview)
44
+
34
45
[Predictive autoscale](/azure/azure-monitor/autoscale/autoscale-predictive) uses machine learning to help manage and scale Azure virtual machine scale sets with cyclical workload patterns. It forecasts the overall CPU load on your virtual machine scale set, based on historical CPU usage patterns. The scale set can then be scaled out in time to meet the predicted demand.
Resources generate metrics that are used in autoscale rules to trigger scale events. Virtual machine scale sets use telemetry data from Azure diagnostics agents to generate metrics. Telemetry for Web apps and Cloud services comes directly from the Azure Infrastructure.
63
+
64
+
Resources generate metrics that are used in autoscale rules to trigger scale events. Virtual machine scale sets use telemetry data from Azure diagnostics agents to generate metrics. Telemetry for Web apps and Cloud services comes directly from the Azure Infrastructure.
49
65
50
66
Some commonly used metrics include CPU usage, memory usage, thread counts, queue length, and disk usage. See [Autoscale Common Metrics](autoscale-common-metrics.md) for a list of available metrics.
51
67
52
68
### Custom metrics
69
+
53
70
Use your own custom metrics that your application generates. Configure your application to send metrics to [Application Insights](/azure/azure-monitor/app/app-insights-overview) so you can use those metrics decide when to scale.
54
71
55
72
### Time
56
-
Set up schedule-based rules to trigger scale events. Use schedule-based rules when you see time patterns in your load, and want to scale before an anticipated change in load occurs.
57
-
73
+
74
+
Set up schedule-based rules to trigger scale events. Use schedule-based rules when you see time patterns in your load, and want to scale before an anticipated change in load occurs.
58
75
59
76
### Rules
77
+
60
78
Rules define the conditions needed to trigger a scale event, the direction of the scaling, and the amount to scale by. Rules can be:
61
-
* Metric-based
62
-
Trigger based on a metric value, for example when CPU usage is above 50%.
63
-
* Time-based
64
-
Trigger based on a schedule, for example, every Saturday at 8am.
65
79
80
+
+ Metric-based
81
+
Trigger based on a metric value, for example when CPU usage is above 50%.
82
+
+ Time-based
83
+
Trigger based on a schedule, for example, every Saturday at 8am.
66
84
67
85
You can combine multiple rules using different metrics, for example CPU usage and queue length.
68
-
* The OR operator is used when scaling out with multiple rules.
69
-
* The AND operator is used when scaling in with multiple rules.
86
+
87
+
+ The OR operator is used when scaling out with multiple rules.
88
+
+ The AND operator is used when scaling in with multiple rules.
70
89
71
90
### Actions and automation
91
+
72
92
Rules can trigger one or more actions. Actions include:
73
93
74
-
- Scale - Scale resources in or out.
75
-
- Email - Send an email to the subscription admins, co-admins, and/or any other email address.
76
-
- Webhooks - Call webhooks to trigger multiple complex actions inside or outside Azure. In Azure, you can:
77
-
+ Start an [Azure Automation runbook](/azure/automation/overview).
78
-
+ Call an [Azure Function](/azure/azure-functions/functions-overview).
79
-
+ Trigger an [Azure Logic App](/azure/logic-apps/logic-apps-overview).
94
+
+ Scale - Scale resources in or out.
95
+
+ Email - Send an email to the subscription admins, co-admins, and/or any other email address.
96
+
+ Webhooks - Call webhooks to trigger multiple complex actions inside or outside Azure. In Azure, you can:
97
+
+ Start an [Azure Automation runbook](/azure/automation/overview).
98
+
+ Call an [Azure Function](/azure/azure-functions/functions-overview).
99
+
+ Trigger an [Azure Logic App](/azure/logic-apps/logic-apps-overview).
100
+
80
101
## Autoscale settings
81
102
82
103
Autoscale settings contain the autoscale configuration. The setting including scale conditions that define rules, limits, and schedules and notifications. Define one or more scale conditions in the settings, and one notification setup.
@@ -86,7 +107,7 @@ Autoscale uses the following terminology and structure. The UI and JSON
| Scale conditions | profiles | A collection of rules, instance limits and schedules, based on a metric or time. You can define one or more scale conditions or profiles. |
89
-
| Rules | rules | A set of time or metric-based conditions that trigger a scale action. You can define one or more rules for both scalein and scaleout actions. |
110
+
| Rules | rules | A set of time or metric-based conditions that trigger a scale action. You can define one or more rules for both scale-in and scale-out actions. |
90
111
| Instance limits | capacity | Each scale condition or profile defines th default, max, and min number of instances that can run under that profile. |
91
112
| Schedule | recurrence | Indicates when autoscale should put this scale condition or profile into effect. You can have multiple scale conditions, which allow you to handle different and overlapping requirements. For example, you can have different scale conditions for different times of day, or days of the week. |
92
113
| Notify | notification | Defines the notifications to send when an autoscale event occurs. Autoscale can notify one or more email addresses or make a call one or more webhooks. You can configure multiple webhooks in the JSON but only one in the UI. |
@@ -97,49 +118,43 @@ The full list of configurable fields and descriptions is available in the [Autos
97
118
98
119
For code examples, see
99
120
100
-
*[Advanced Autoscale configuration using Resource Manager templates for virtual machine scale sets](autoscale-virtual-machine-scale-sets.md)
Autoscale scales horizontally, which is an increase, or decrease of the number of resource instances. For example, in a virtual machine scale set, scaling out means adding more virtual machines Scaling in means removing virtual machines. Horizontal scaling is flexible in a cloud situation as it allows you to run a large number of VMs to handle load.
105
-
106
-
In contrast, vertical scaling, keeps the same number of resources constant, but gives them more capacity in terms of memory, CPU speed, disk space and network. Adding or removing capacity in vertical scaling is known as scaling or down. Vertical scaling is limited by the availability of larger hardware, which eventually reaches an upper limit. Hardware size availability varies in Azure by region. Vertical scaling may also require a restart of the virtual machine during the scaling process.
107
125
126
+
Autoscale scales horizontally, which is an increase, or decrease of the number of resource instances. For example, in a virtual machine scale set, scaling out means adding more virtual machines. Scaling in means removing virtual machines. Horizontal scaling is flexible in a cloud situation as it allows you to run a large number of VMs to handle load.
108
127
128
+
In contrast, vertical scaling, keeps the same number of resources constant, but gives them more capacity in terms of memory, CPU speed, disk space and network. Adding or removing capacity in vertical scaling is known as scaling or down. Vertical scaling is limited by the availability of larger hardware, which eventually reaches an upper limit. Hardware size availability varies in Azure by region. Vertical scaling may also require a restart of the virtual machine during the scaling process.
109
129
110
130
## Supported services for autoscale
131
+
111
132
The following services are supported by autoscale:
112
133
113
134
| Service | Schema & Documentation |
114
135
| --- | --- |
115
-
| Web Apps |[Scaling Web Apps](autoscale-get-started.md)|
116
-
| Cloud Services |[Autoscale a Cloud Service](../../cloud-services/cloud-services-how-to-scale-portal.md)|
117
-
| Virtual Machines: Windows scale sets |[Scaling virtual machine scale sets in Windows](../../virtual-machine-scale-sets/tutorial-autoscale-powershell.md)|
118
-
| Virtual Machines: Linux scale sets |[Scaling virtual machine scale sets in Linux](../../virtual-machine-scale-sets/tutorial-autoscale-cli.md)|
119
-
| Virtual Machines: Windows Example |[Advanced Autoscale configuration using Resource Manager templates for virtual machine scale sets](autoscale-virtual-machine-scale-sets.md)|
120
-
| Azure App Service |[Scale up an app in Azure App service](../../app-service/manage-scale-up.md)|
121
-
| API Management service|[Automatically scale an Azure API Management instance](../../api-management/api-management-howto-autoscale.md)
136
+
| Azure Virtual machines scale sets |[Overview of autoscale with Azure virtual machine scale sets](/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-autoscale-overview)|
137
+
| Web apps |[Scaling Web Apps](autoscale-get-started.md)|
138
+
| Azure API Management service|[Automatically scale an Azure API Management instance](../../api-management/api-management-howto-autoscale.md)
122
139
| Azure Data Explorer Clusters|[Manage Azure Data Explorer clusters scaling to accommodate changing demand](/azure/data-explorer/manage-cluster-horizontal-scaling)|
123
-
| Logic Apps |[Adding integration service environment (ISE) capacity](../../logic-apps/ise-manage-integration-service-environment.md#add-ise-capacity)|
124
-
| Spring Cloud |[Set up autoscale for microservice applications](../../spring-apps/how-to-setup-autoscale.md)|
125
-
| Service Bus |[Automatically update messaging units of an Azure Service Bus namespace](../../service-bus-messaging/automate-update-messaging-units.md)|
140
+
| Azure Stream Analytics |[Autoscale streaming units (Preview)](../../stream-analytics/stream-analytics-autoscale.md)|
141
+
| Azure Machine Learning Workspace |[Autoscale an online endpoint](../../machine-learning/how-to-autoscale-endpoints.md)|
126
142
| Azure SignalR Service |[Automatically scale units of an Azure SignalR service](../../azure-signalr/signalr-howto-scale-autoscale.md)|
143
+
| Logic apps |[Adding integration service environment (ISE) capacity](../../logic-apps/ise-manage-integration-service-environment.md#add-ise-capacity)|
127
144
| Media Services |[Autoscaling in Media Services](/azure/media-services/latest/release-notes#autoscaling)|
128
-
|Logic Apps - Integration Service Environment(ISE) |[Add ISE Environment](../../logic-apps/ise-manage-integration-service-environment.md#add-ise-capacity)|
129
-
|Azure App Service Environment |[Autoscaling and App Service Environment v1](../../app-service/environment/app-service-environment-auto-scale.md)|
145
+
|Service Bus |[Automatically update messaging units of an Azure Service Bus namespace](../../service-bus-messaging/automate-update-messaging-units.md)|
146
+
|Spring Cloud |[Set up autoscale for microservice applications](../../spring-apps/how-to-setup-autoscale.md)|
130
147
| Service Fabric Managed Clusters |[Introduction to Autoscaling on Service Fabric managed clusters](../../service-fabric/how-to-managed-cluster-autoscale.md)|
131
-
| Azure Stream Analytics |[Autoscale streaming units (Preview)](../../stream-analytics/stream-analytics-autoscale.md)|
132
-
| Azure Machine Learning Workspace |[Autoscale an online endpoint](../../machine-learning/how-to-autoscale-endpoints.md)|
133
-
134
148
135
149
## Next steps
150
+
136
151
To learn more about autoscale, see the following resources:
137
152
138
-
*[Azure Monitor autoscale common metrics](autoscale-common-metrics.md)
*[Autoscale using Resource Manager templates for virtual machine scale sets](/azure/virtual-machine-scale-sets/tutorial-autoscale-powershell?toc=/azure/azure-monitor/toc.json)
141
-
*[Best practices for Azure Monitor autoscale](autoscale-best-practices.md)
142
-
*[Use autoscale actions to send email and webhook alert notifications](autoscale-webhook-email.md)
+[Autoscale using Resource Manager templates for virtual machine scale sets](/azure/virtual-machine-scale-sets/tutorial-autoscale-powershell?toc=/azure/azure-monitor/toc.json)
156
+
+[Best practices for Azure Monitor autoscale](autoscale-best-practices.md)
157
+
+[Use autoscale actions to send email and webhook alert notifications](autoscale-webhook-email.md)
0 commit comments