AWS ECS 的auto scaling

自动缩放是雲端電腦技術上一個新里程碑的技術,相信有研究過使用AWS的夥伴們,都應該會對Auto缩放有相对的认识,然而亚马逊精英能够在码头工人集装箱作为一种服务的基礎上,進行一個高性能,有效率並且高拓展性的服務,並能夠在EC2上建立一套易於管理的應用程序。

使用亚马逊精英,首先要明白它本身的架构,ECS主要是包含两个运行中的泊坞Containter的集群,来作为管理应用的服务器;然而亦可以透过ECS API來用作為驅動第三方編程的方法來使用。當然現在的ECS已經可以擁有管理長期運行的應用服務的能力。透過服務程序,用戶可以因應應用程序的設定,並允許擴充或縮減容器的數量,來滿足應用程序的容量需求。

然而究竟如何能在ECS上面实现自动缩放的部署,其中一项是本身在精英的架构中已经包含了一个服务程序,并且长期监控着运行在ECS上的应用服务,当流量到达某一个标准后就会自动扩展或缩减容器的数目。

以下是一个很好利用AWS的lambda的集装箱缩放的实践

首先当然要建立好ECS的服务,然后透过ELB作为本身两个Docker的 load balancing,利用云表去监控着ELB,一旦到达某个指标,SNS服务就会触发在LAMBDA上运行的部署,然后就能够在ECS的自动缩放集团上扩展或缩减容器服务的数量,详细设定可参阅以下博客。
https://aws.amazon.com/tw/blogs/compute/scaling-amazon-ecs-services-automatically-using-amazon-cloudwatch-and-aws-lambda/

首先,您需要确保已经创建了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、付费专栏及课程。

余额充值