弹性伸缩 AS
应用场景
弹性伸缩服务可根据用户的业务需求,通过策略自动调整其业务的资源。具有自动调整资源、节约成本开支、提高可用性和容错能力的优势。适用以下场景:
- 访问流量较大的论坛网站,业务负载变化难以预测,需要根据实时监控到的云服务器CPU使用率、内存使用率等指标对云服务器数量进行动态调整。
- 电商网站,在进行大型促销活动时,需要定时增加云服务器数量和带宽大小,以保证促销活动顺利进行。
- 视频直播网站,每天14:00~16:00播出热门节目,每天都需要在该时段增加云服务器数量,增大带宽大小,保证业务的平稳运行。
相关资源
操作步骤
- 创建伸缩配置。
创建main.tf文件,输入以下内容,并保存在当前的执行目录中。
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" } } }
- 创建弹性伸缩组。
在main.tf文件中增加以下内容。
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" } }
- 添加扩容策略。
本教程使用告警策略,当平均CPU使用率>=80%时自动扩容一个ECS实例,在main.tf文件中增加以下内容。
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 } }
- 添加缩容策略。
本教程使用告警策略,当平均CPU使用率<=20%时自动缩容一个ECS实例,在main.tf文件中增加以下内容。
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 } }
- 配置变量。
创建variables.tf文件,输入以下内容,并保存在当前的执行目录中。您可以根据实际情况修改变量值。
variable "my_keypair" { default = "default" } variable "vpc_name" { default = "vpc-default" } variable "subnet_name" { default = "subnet-default" } variable "secgroup_name" { default = "default" }
- 创建资源。
- 运行 terraform init 初始化环境。
- 运行 terraform plan 查看资源。
- 确认资源无误后,运行 terraform apply 开始创建。
- 运行 terraform show 查看已创建的资源。