AWS Fargate——让容器轻松运行
AWS Fargate
当AWS在2017年底的峰会上宣布 Fargate的时候,比较直白的介绍是:有这么个新工具,它将允许ECS用户直接在云中运行容器。
纵观软件开发领域,不论是云服务(IaaS)、版本控制系统,协作工具或持续集成工具的诞生、还是容器化架构或者无服务器计算服务(PaaS)的出现,都有一个共同的特点:降低了对服务器的系统管理员,DevOps,IT支持人员等的依赖。
新事物Fargate到底能做些什么呢?
在了解Fargate之前,我们先来了解一下Amazon Elastic
Container Service (ECS)吧。
Docker使容器技术普及开来,便很快被广泛采用。随着Kubernetes的成功,AWS推出了自己的容器管理服务:Amazon Elastic Container
Service(ECS)。
ECS是一项高度可扩展的高性能容器管理服务,支持 Docker 容器,并让您能够在托管的 Amazon EC2 实例集群上轻松运行应用程序。
请参考:https://www.amazonaws.cn/ecs/
随着需求的日益复杂化,我们发现在管理EC2 Instance的同时,还必须管理一些额外的层,这让ECS变得越来越复杂。
使用ECS在集群中运行中的EC2 实例(Instance)配置弹性伸缩时,每个实例上可以承载多个不同的Task,这就要求:遵循相同的弹性伸缩规则;伸缩的EC2实例类型必须相同;不同资源的容器需要协同……这么多的任务就需要大量繁琐的工作,这时候,AWS Fargate 就应运而生了。
AWS Fargate是适用于 Amazon ECS 的计算引擎,允许您在无需管理服务器或集群的情况下运行容器。借助 AWS Fargate,您不再需要预置、配置和扩展虚拟机的集群即可运行容器。
请参考:https://www.amazonaws.cn/fargate/
从这里可以看到,Fargate是AWS ECS 支持的一种新的计算引擎。Fargate 在AWS上的部署架构,如下图所示:
从这个架构中,可以看到Fargate:
您将不用再将您的任务,运行在EC2上。
Fargate是如何工作的呢?
01需要部署一个自己的存储库,也就是Docker Image
02推送镜像
03创建任务定义,在任务定义中,选择Fargate
04任务定义完成
05运行任务,启动类型,选择Fargate
06选择好网络环境
07如此,便可以应用将启动起来。
服务启动整个过程,可以说是十分快捷简单了。
ECS EC2和ECS Fargate架构对比
使用ECS EC2,您需要维护您的集群,并可能还需要保证AMI 自身的安全,或者安装一些相应的补丁。使用Fargate,将没有这些顾虑,这也意味着:
使用Fargate,运维将更加简单。你只需为你使用的资源付费,你就能更快地迭代您的应用。Fargate 比EC2 更加轻量级。
小美
那么,需要将所有ECS任务都切换到Fargate吗?
小明
当然不是。如上所述,在某些情况下,您的成本将增加三倍以上,所以在它们降低成本之前,您可能最好使用标准EC2实例。
小明
但是,在以下情况下,Fargate可能对您更有益:
Ø 如果您无法很好地伸缩你的ECS任务,会导致大量空闲的CPU或内存,而使用Fargate,您只需为在任务中定义的资源付费。
Ø 对于按需或按定时计划运行的任务,并不需要一直运行着的EC2实例。使用Fargate,您只需在任务运行时付款。
Ø 适用于有内存和/或CPU使用率峰值的任务。有利于节省您配置和管理的时间。
Fargate的价格
您只需支付运行任务所消耗的vCPU和内存的费用,
而无需为存储等其他资源做考虑。
https://www.amazonaws.cn/fargate/pricing/
一个轻量的web应用,运行一年,
0.25vCPU来计算,一年只需要¥525.6,
快来使用Fargate吧!
Silver Lining 的御云者平台,已经实现了从EC2到容器,到Fargate+Lambda的Serverless的究极进化。只需要专注业务的开发,而无需考虑到运维的成本,在保证业务连续性的同时,大大提高的迭代业务的迭代速度。