Auto Scaling (AS)
Application Scenarios
AS automatically adjusts service resources to keep up with your demand based on pre-configured AS policies. With automatic resource adjustment, you can enjoy reduced costs, improved availability, and high fault tolerance. AS applies to the following scenarios:
- Heavy-traffic forums: Service load changes of a heavy-traffic forum website are difficult to predict. AS dynamically adjusts the number of cloud servers based on monitored ECS metrics, such as vCPU Usage and Memory Usage.
- E-commerce: Large-scale e-commerce promotions can attract visits that may break your website. AS automatically adds ECSs and increases bandwidth to ensure that promotions will go smoothly.
- Live streaming: A live streaming website broadcasts popular programs from 14:00 to 16:00 every day. AS automatically adds ECSs and increases bandwidth during this period to ensure smooth viewer experience.
Related Resources
Procedure
- Create an AS configuration.
Create the main.tf file, enter the following information, and save the file:
data "huaweicloud_availability_zones" "myaz" {} data "huaweicloud_compute_flavors" "myflavor" { availability_zone = data.huaweicloud_availability_zones.myaz.names[0] performance_type = "normal" cpu_core_count = 2 memory_size = 4 } data "huaweicloud_images_image" "myimage" { name = "Ubuntu 18.04 server 64bit" most_recent = true } resource "huaweicloud_as_configuration" "my_as_config" { scaling_configuration_name = "my_as_config" instance_config { flavor = data.huaweicloud_compute_flavors.myflavor.ids[0] image = data.huaweicloud_images_image.myimage.id key_name = var.my_keypair disk { size = 40 volume_type = "SSD" disk_type = "SYS" } } }
- Create an AS group.
Add the following information to the main.tf file:
data "huaweicloud_vpc" "vpc_1" { name = var.vpc_name } data "huaweicloud_vpc_subnet" "subnet_1" { name = var.subnet_name vpc_id = data.huaweicloud_vpc.vpc_1.id } data "huaweicloud_networking_secgroup" "secgroup_1" { name = var.secgroup_name } resource "huaweicloud_as_group" "my_as_group" { scaling_group_name = "my_as_group" scaling_configuration_id = huaweicloud_as_configuration.my_as_config.id desire_instance_number = 2 min_instance_number = 0 max_instance_number = 10 vpc_id = data.huaweicloud_vpc.vpc_1.id delete_publicip = true delete_instances = "yes" networks { id = data.huaweicloud_vpc_subnet.subnet_1.id } security_groups { id = data.huaweicloud_networking_secgroup.secgroup_1.id } tags = { owner = "AutoScaling" } }
- Add a scale-out policy.
In this example, add a metric-based policy. The following content that you will add to the main.tf file indicates that when the average CPU usage is greater than or equal to 80%, an ECS is automatically added.
resource "huaweicloud_ces_alarmrule" "scaling_up_rule" { alarm_name = "scaling_up_rule" metric { namespace = "SYS.AS" metric_name = "cpu_util" dimensions { name = "AutoScalingGroup" value = huaweicloud_as_group.my_as_group.id } } condition { period = 300 filter = "average" comparison_operator = ">=" value = 80 unit = "%" count = 1 } alarm_actions { type = "autoscaling" notification_list = [] } } resource "huaweicloud_as_policy" "scaling_up_policy" { scaling_policy_name = "scaling_up_policy" scaling_policy_type = "ALARM" scaling_group_id = huaweicloud_as_group.my_as_group.id alarm_id = huaweicloud_ces_alarmrule.scaling_up_rule.id cool_down_time = 300 scaling_policy_action { operation = "ADD" instance_number = 1 } }
- Add a scale-in policy.
In this example, add a metric-based policy. The following content that you will add to the main.tf file indicates that when the average CPU usage is equal to or lower than 20%, an ECS is automatically reduced.
resource "huaweicloud_ces_alarmrule" "scaling_down_rule" { alarm_name = "scaling_down_rule" metric { namespace = "SYS.AS" metric_name = "cpu_util" dimensions { name = "AutoScalingGroup" value = huaweicloud_as_group.my_as_group.id } } condition { period = 300 filter = "average" comparison_operator = "<=" value = 20 unit = "%" count = 1 } alarm_actions { type = "autoscaling" notification_list = [] } } resource "huaweicloud_as_policy" "scaling_down_policy" { scaling_policy_name = "scaling_down_policy" scaling_policy_type = "ALARM" scaling_group_id = huaweicloud_as_group.my_as_group.id alarm_id = huaweicloud_ces_alarmrule.scaling_down_rule.id cool_down_time = 300 scaling_policy_action { operation = "REMOVE" instance_number = 1 } }
- Configure variables.
Create the variables.tf file, enter the following information, and save the file. You can change the variable values based on your needs.
variable "my_keypair" { default = "default" } variable "vpc_name" { default = "vpc-default" } variable "subnet_name" { default = "subnet-default" } variable "secgroup_name" { default = "default" }
- Create resources.
- Run terraform init to initialize the environment.
- Run terraform plan to view resources.
- After you confirm that the resource information is correct, run terraform apply to start resource creation.
- Run terraform show to view the created resources.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.