AWS Fargate 热门2017年〜
无需关注服务器即可运行容器的无服务器计算引擎
它能做什么
AWS Fargate 是面向容器的无服务器计算引擎。无需进行 EC2 实例的选型、预置、扩缩容和补丁管理等任何服务器管理工作即可运行 Docker 容器。可与 ECS 和 EKS 配合使用,只需指定容器所需的 CPU 和内存,Fargate 会自动分配适当的基础设施。按实际使用量计费。
使用场景
适用于微服务的无服务器运维、开发测试环境的快速构建和销毁、流量波动大的 Web 应用后端、定期批处理和数据转换作业、CI/CD 流水线的构建任务等希望省去服务器管理的容器工作负载。
日常类比
可以将其比作网约车服务。不必自己拥有和维护车辆 (服务器),只需告知目的地 (要运行的容器) 和乘客人数 (所需 CPU 和内存),合适的车辆就会自动派遣。只在乘车期间产生费用,无需担心车辆维护和油费。
什么是 Fargate
AWS Fargate 是 2017 年发布的面向容器的无服务器计算引擎。以往运行容器需要准备 EC2 实例、安装 Docker 运行时、进行操作系统补丁和容量管理。Fargate 将所有基础设施管理委托给 AWS,提供只需专注于容器定义和运行的环境。可作为 ECS 和 EKS 的启动类型使用,现有容器工作负载可以最小改动迁移。
主要特性
Fargate 最大的特点是完全无需基础设施管理。EC2 实例选型、集群容量规划、操作系统安全补丁等运维工作全部免除。每个任务在独立的执行环境中运行,不与其他任务共享内核和资源,安全性也很出色。结合自动扩缩容,可根据流量增减自动调整任务数量,避免过度预置造成的成本浪费。
与 EC2 启动类型的比较
Fargate 和 EC2 启动类型各有适合的场景。Fargate 无需服务器管理,运维负担低,但每 vCPU 单价高于 EC2。EC2 启动类型需要管理实例,但可利用预留实例和竞价实例大幅降低成本。需要 GPU 处理或特殊内核配置时也需要 EC2 启动类型。小规模且希望最小化运维负担选 Fargate,大规模且重视成本优化选 EC2。 有关与 EC2 启动类型比较的实务技巧,也可参阅 Amazon 上的解说书籍。
定价体系
Fargate 的定价基于分配给任务的 vCPU 和内存使用时间计算。按秒计费,最低计费时间为 1 分钟。vCPU 可指定 0.25 到 16 vCPU,内存可指定 0.5 GB 到 120 GB。使用 Fargate Spot 可利用 AWS 剩余容量获得最高 70% 折扣。虽然可能被中断,但适合批处理或具有容错性的工作负载。
入门指南
要开始使用 Fargate,创建 ECS 集群并在任务定义中指定 Fargate 作为启动类型。任务定义中描述 Docker 镜像 URL、vCPU 和内存分配、网络设置。Fargate 为每个任务分配 ENI (Elastic Network Interface),因此使用 awsvpc 网络模式。创建服务并指定任务数量后,Fargate 会自动确保基础设施并启动容器。
注意事项
- Per-vCPU costs are higher than EC2, so for large always-on workloads, compare costs and consider using the EC2 launch type
- Fargate task storage is ephemeral - data is lost when the task stops. Store persistent data in EFS or S3