Skip to content

Commit 72a6e3d

Browse files
committed
feat(autoscaling): finished concepts
1 parent 71df052 commit 72a6e3d

File tree

1 file changed

+41
-5
lines changed

1 file changed

+41
-5
lines changed

compute/instance-scaling-groups/concepts.mdx

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Instance Scaling Groups are groups of Instances all based on the same defined te
3535

3636
## Instance template
3737

38-
Instance templates define the model for Instances in a given group. When scaling up, the Instance group will create Instances based on this template.
38+
An Instance template defines the model for Instances in a given group. When scaling up, the Instance group will create Instances based on this template.
3939

4040
When creating an Instance template, you define an Availability Zone, [Instance type](/compute/instances/reference-content/choosing-instance-type/), [image](##image), [volumes](/compute/instances/concepts/#volumes), network connectivity (public IP address and/or Private Network connections), [security group](#security-group) and [placement group](#placement-group) for the templated Instance.
4141

@@ -49,28 +49,64 @@ It is recommended to attach the Instances in an Instance Scaling Group to a plac
4949

5050
## Private Network
5151

52-
When creating an [Instance template](#instance-template), you have the option to attach the model Instance to a Private Network. All Instances created by the Instance Scaling Group from this template will then be attached to the Private Network defined here.
53-
52+
When creating an [Instance template](#instance-template), you have the option to attach a [Private Network](/network/vpc/concepts/#private-networks). All Instances created by the Instance Scaling Group from this template will then be attached to the defined Private Network(s).
5453

54+
When creating an [Instance Scaling Group](#instance-scaling-group), you have the option to attach its [Load Balancer](#load-balancer) to a Private Network. This must be one of the Private Networks already attached to the associated Instance template. When such a Private Network is attached to the Load Balancer, the Load Balancer uses this network to communicate with the Instances in the group, via their private IP addresses. If no Private Network is attached, the Load Balancer uses the Instances' public IP addresses.
5555

5656
## Resource deletion error
5757

58+
Resource deletion errors occur when a resource that was defined as part of an [Instance template](#instance-template), is deleted. This happens if you specify a given [image](#image), [placement group](#placement-group), [security group](#security-group) or [Private Network](#private-network) within a template, then later delete it without updating the template to specify an alternative resource.
59+
60+
To fix a resource deletion error, either delete the Instance template that is using the deleted resource, or update the template to specify an alternative resource for the one that has been deleted.
61+
62+
## Scaling metric
63+
64+
A scaling metric is defined in each [scaling policy](#scaling-policy). It specifies the metric that should be sampled and aggregated: based on the value of the aggregated metric compared to the scaling condition, a scaling action will either be carried out or not. Available metrics are:
65+
- **CPU usage**: CPU usage across the whole Instance group
66+
- **Network in**: Rate input (bytes/sec) of the public interfaces of all Instances in the group
67+
- **Network out**: Rate output (bytes/sec) of the public interfaces of all Instances in the group
68+
- **Load Balancer backend throughput**: Rate, in bytes/s, of all traffic forwarded to all backend servers of the group's Load Balancer
69+
- **Load Balancer backend connection rate**: Cumulative number of connections made to the group's Load Balancer
70+
5871
## Sampling range
5972

73+
A sampling range is defined in each [scaling policy](#scaling-policy). It defines the length of time in minutes during which metric data is collected for the Instances in the group. The data collected during this period is then aggregated and compared to the defined threshold condition in order to determine whether a scaling action should be taken.
74+
6075
## Scaling action
6176

77+
A scaling action is defined in each [scaling policy](#scaling-policy). It defines the action that should be taken if the condition for scaling is met: either **scale up** or scale down**. Instances are then added to or removed from the group, based on the defined [scaling type](#scaling-type).
78+
6279
## Scaling policy
6380

64-
Scaling policies define how the number of Instances in the group is adjusted in response to changes in demand. Whether based on real-time resource metrics or scheduled actions, these policies ensure your infrastructure scales efficiently to maintain performance while optimizing costs.
81+
Scaling policies define how the number of Instances in a group is adjusted in response to changes in load/demand. Currently, scaling policies are based on real-time resource metrics, in the future it will also be possible to scale at scheduled times.
82+
83+
Scaling policies collect data for a defined [metric](#scaling-metric), e.g. the CPU usage across the whole Instance group, over a duration of time specified by the [sampling range](#sampling-range). All the data collected is [aggregated](#aggregation-method) according to the defined method, and then compared against the defined threshold. If the condition for scaling is met (i.e. the aggregated real-time value is greater than or lower than than the threshold value, based on the chosen operator), then a [scaling action](#scaling-action) is taken, and Instances are either added to or removed from the group, based on the [scaling type](#scaling-type).
6584

6685
## Scaling type
6786

68-
## Scaling value
87+
A scaling type is defined in each [scaling policy](#scaling-policy). It determines the scaling action that will be taken if the condition is met. Possible scaling types are:
88+
- **Flat count**: A fixed number of Instances are added to or deleted from the group
89+
- **Percentage of total group**: A percentage of the total number of Instances in the group is added or deleted
90+
- **Set total group**: The total number of Instances in the group is set to a specific value
91+
92+
In each case, a **scaling value** is set, which defines either the number of Instances to add/delete, the percentage value to add/delete, or the number to set to.
6993

7094
## Security group
7195

96+
It is recommended to attach the Instances in an Instance Scaling Group to a security group. Security groups control public traffic to and from their Instances, dropping or allowing such traffic based on defined rules. You choose the security group when creating your [Instance template](#instance-template). [Read more about security groups](/compute/instances/concepts/#security-groups).
97+
7298
## Trigger
7399

100+
The trigger of a [scaling policy](#scaling-policy) defines the condition that must be bet for a scaling action to occur. The trigger consists of:
101+
- A [metric](#scaling metric), e.g. CPU usage across the Instance group, which is sampled during the specified [sampling range](#sampling-range) time and then [aggregated](#aggregation-method) to a single value
102+
- An **operator**, either `greater than` or `lower than`
103+
- A **threshold**, which is a value to measure the aggregated metric value against
104+
105+
If the aggregated value is greater/lower than the threshold value, a scaling action is triggered, and Instances are added to or removed from the group.
106+
107+
74108
## Volume
75109

110+
When creating an [Instance template](#instance-template), you must define the volume specification for Instances in the group. Volumes are storage spaces used by Instances, and can be either of [block](#/compute/instances/concepts/#block-volumes) or [local](#/compute/instances/concepts/#local-volumes) type. The overall volume configuration must remain coherent with the Instance type and [image](#image) or snapshot defined for the template.
111+
76112

0 commit comments

Comments
 (0)