云计算中auto-scaling 最早的来源

什么是弹性?首先,整合计算资源,将计算资源池化,通过虚拟机按需使用计算资源;其次,按量计费,让用户能够根据使用量按月按时甚至按秒来进行付费。

  不过,光有了这两条还不够。为什么?我举个例子:

  很多做运维的朋友都深有体会,比如因为一个系统的警告,你就得立即去调度更多的资源,哪怕是深更半夜也得爬起来。

  应对的解决方案有很多种,比如加大冗余,让计算资源不至于因为突发性的访问量激增或计算负载的激增而宕机。但是,这样做就和传统的物理机区别不大了。因为云计算的核心优势之一就是客户弹性适应计算需求的变化。

  为什么云计算最早是亚马逊做出来的,而不是IBM、惠普、Oracle、SAP这些IT巨头?就是因为亚马逊为了应对圣诞节网上购物需求的激增,不得不一再扩容其数据中心,而除了圣诞节、感恩节这些购物高峰季节,平时的购物请求仅仅是峰值的1/5,大量闲置的计算资源不得不让亚马逊思考是否能够将其出租给其他零散计算中心级需求的中小企业。

  如果仅仅是满足零散需求的用户,其实前两个弹性也就足够了。但关键是,亚马逊需要对自己的弹性计算需求进行近乎实时的加载和释放,这样才能完全清楚能够有多少计算资源进行出租。于是,亚马逊开发了自动伸缩(AutoScaling)功能,不过这一功能主要是针对主机,毕竟,满足亚马逊自身的需求是第一位的。

  或许亚马逊当初开发这一功能的架构师是因为离职还是什么别的原因,没有将自动伸缩功能延伸到更多领域,我们不得而知。但公有云提供商如果不是对这一功能有着深刻理解,真正为弹性的用户需求,减轻用户的运维负担,或许连主机的AutoScaling也不会做。

 

 

 

ref: http://www.chinacloud.cn/show.aspx?id=20088&cid=18

首先,您需要确保已经创建了ECS集群和服务。然后,您可以使用Terraform编写一个自动扩展组件,以便在需要时自动扩展ECS任务。 以下是一个示例Terraform配置文件,其包含自动扩展组件的定义: ``` resource "aws_autoscaling_group" "ecs" { name = "ecs-autoscaling-group" launch_configuration = aws_launch_configuration.ecs.id min_size = 1 max_size = 10 desired_capacity = 1 vpc_zone_identifier = [aws_subnet.private.*.id] tag { key = "Name" value = "ecs-autoscaling-group" propagate_at_launch = true } lifecycle { create_before_destroy = true } depends_on = [ aws_security_group_rule.egress, aws_security_group_rule.ingress, ] } resource "aws_launch_configuration" "ecs" { name_prefix = "ecs-launch-config" image_id = data.aws_ami.ecs.id instance_type = "t2.micro" iam_instance_profile = "${aws_iam_instance_profile.ecs.id}" security_groups = [aws_security_group.ecs.id] user_data = <<-EOF #!/bin/bash echo ECS_CLUSTER=${var.ecs_cluster_name} >> /etc/ecs/ecs.config EOF } data "aws_ami" "ecs" { most_recent = true filter { name = "name" values = ["amazon-ecs-optimized"] } owners = ["amazon"] } resource "aws_iam_instance_profile" "ecs" { name = "ecs-instance-profile" role = "${aws_iam_role.ecs.id}" } resource "aws_iam_role" "ecs" { name = "ecs-role" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Allow" Principal = { Service = "ec2.amazonaws.com" } } ] }) } resource "aws_security_group" "ecs" { name_prefix = "ecs-security-group" ingress { from_port = 0 to_port = 65535 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } egress { from_port = 0 to_port = 65535 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } } resource "aws_security_group_rule" "ingress" { security_group_id = "${aws_security_group.ecs.id}" type = "ingress" from_port = 0 to_port = 65535 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } resource "aws_security_group_rule" "egress" { security_group_id = "${aws_security_group.ecs.id}" type = "egress" from_port = 0 to_port = 65535 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } ``` 这个配置文件会创建一个自动扩展组件,其包含一个启动配置和一个安全组。它还使用了一个IAM角色和IAM实例配置文件,以便ECS任务可以访问必要的资源。 在这个示例,自动扩展组件将最小容量设置为1,最大容量设置为10。您可以根据需要调整这些值。 要应用此配置,请使用以下命令: ``` terraform init terraform apply ``` 这将创建自动扩展组件并将其应用于ECS集群。如果您需要更新配置,请使用`terraform apply`命令进行更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值