使用 Container 进行 Auto Scaling Group 二部曲

本文介绍了如何通过Amazon ECS和AutoScalingGroup构建动态伸缩的容器服务。首先,建立了基础环境,包括VPC、EC2实例、Docker Container Image、ECR和ALB。接着,配置了ECS集群,定义了Task Definition,并创建了ECS服务,将任务分配到集群中。然后,设置了Application Load Balancer并将容器连接到负载均衡器。最后,通过AutoScalingGroup实现了服务的自动扩缩,确保在需求变化时能自动调整资源。文章还强调了查看系统事件和验证服务运行的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用 Container 进行 Auto Scaling Group 二部曲

目标是要透过 ECS 来进行 Auto Scaling Group 的规划

基础环境建置

基础环境指的是网络环境、容器的内容以及负载均衡器。接下来的操作其实跟 ASG 步进缩放政策 Step scaling policies 笔记 类似,可以参照该网址,但为方便起见我们还是操作一遍

  1. 建置 VPC 与相关的子网 - 请参阅 Amazon VPC 实操
  2. 新增 EC2 实例 - 请参阅 Amazon Elastic Compute Cloud (EC2) 笔记
  3. 建立 Docker Container Image - 请参阅 Amazon Elastic Container Service (Amazon ECS) 简介
  4. 将 Docker Container Image 上传至储存库 - 请参阅 Amazon Elastic Container Registry (ECR) 笔记
  5. 新增 Application Load Balancer (ALB) - 请参阅 Elastic Load Balancing (ELB) 笔记

ECS 相关建置

  1. 建置 ECS 丛集 - 请参阅 使用 Container 进行 Auto Scaling Group 首部曲

  2. 建置 Amazon ECS Task Definitions
    此步骤最重要的目的是定义容器要如何运行。进入 ECS 控制台,在左手选单选择 Task Definition,并在右边按下 Create new Task Definition

选择任务启动模式,请选择 EC2 模式

Select launch type compatibility: EC2

Configure task and container definitions
Task Definition Name: ithometask1
Task Role: EcsTaskExecutionRole
Network Mode: Bridge
Task execution role: EcsTaskExecutionRole

定义任务名称与网络模式
图 1. 定义任务名称与网络模式

接下来要定义容器内容,按下 Add container 后,请输入容器相关的信息

Container Definitions
Standard
Container name: ithomeContainer
Image: 950646218716.dkr.ecr.ap-southeast-1.amazonaws.com/ithome-repo:latest
Memory Limits (MiB): Hard Limit - 150, Soft limit - 100
Port mappings
Host port, Container port, Protocol
0, 80, tcp

映像档 (Image)指的是先前在 ECR 所放置的容器映像档;内存限制 (memory limit) 可以参阅 Amazon Elastic Container Registry (ECR) 笔记,透过docker stats 查出整个 Container 执行时至少需要 17.7MB 的内存,所以先设定为 100M 的内存供 Container 使用;埠号对应 (Port mappings) 因为一台主机会开启多个容器,所以将主机端口号设为 0,让系统自行决定。

容器定义
图 2. 容器定义

  1. 建立 ECS 的服务
    接下来就是把上面定义好的任务放到丛集里去运行,这个动作称之为新增服务 (create service)。进入 ECS 控制台,在左手选单选择 Clusters,并在右边按下刚刚建立的丛集 ithomeCluster,选择下方页签 Services,并按下 Create

建立丛集的服务
图 3. 建立丛集的服务

建立丛集的服务需要四个步骤:
步骤 1. Configure service
Launch type: EC2
Task Definition: ithometask1
Cluster: ithomeCluster
Service name: ithomeService
Service type: REPLICA
Number of tasks: 4
Deployment type: Rolling update
Placement Templates: AZ balanced spread

服务的一般组态设定
图 4. 服务的一般组态设定

步骤 2. Configure network
Load balancer type: Application Load Balancer
Service IAM role: AWSServiceRoleForECS
Load balancer name: ithomeALB

Container to load balance
将 ithomeContainer 设定给 ALB,所以按下 Add to load Balancer,并完成以下设定
Production listener port: 80:HTTP
Target group name: ithomeTargetGroup

指定负载均衡器
图 5. 指定负载均衡器

将 Container 指定给负载均衡器
图 6. 将 Container 指定给负载均衡器

步骤 3. Set Auto Scaling (optional)
设定自动扩缩

Service Auto Scaling: Do not adjust the service’s desired count

步骤 4. Review
再次确认内容

完成后会启动服务器。进入 ECS 控制台,在左手选单选择 Clusters,并在右边按下 ithomeCluster,在 Services 页签可以看到启动的任务(tasks),这些任务就是由 Container 所负责,可以发现 EC2 的实例只有两个,,但 task 却有四个,这四个 task 会分布在这两个实例中。

检视在丛集里的服务器
图 7. 检视在丛集里的服务器

透过检视事件可以清楚的知道发生了甚么事,做系统不会永远的是那么顺利的,所以务必要学会看系统的事件。

检视在服务器内的事件
图 8. 检视在服务器内的事件

最重要的就是提供服务的网页是否可以正常执行,所以一定要用 ALB 所提供的网址检视网页服务是否正常?

检视网页
图 9. 检视网页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值