走近 Fargate,动手配置属于自己的 Fargate 集群

发布于:2019 年 11 月 4 日 08:00

走近Fargate,动手配置属于自己的Fargate集群

Fargate 简介

就在大约三年前,AWS 宣布 Amazon Elastic Container Service(Amazon ECS)在 AWS 上大规模运行和管理容器。 利用 Amazon ECS,您可以高规模和高可用性地运行您的工作负载,而无需担心运行自己的集群管理和容器编排软件。

现在,AWS 宣布推出 AWS Fargate ,使您能够将容器作为基本的计算单元,而无需管理底层实例。 借助 Fargate,您不需要在集群中配置,部署或扩展虚拟机来运行容器。 今天,Fargate 可以与 Amazon ECS 一起使用,计划在未来支持 Kubernetes(Amazon EKS )的亚马逊弹性容器服务。

Fargate 具有灵活的配置选项,因此您可以紧密匹配您的应用程序需求和精确的每秒计费。

走近Fargate,动手配置属于自己的Fargate集群

  • 无需管理任何 EC2 实例
  • 基于任务的源生 API
  • 计费到 CPU 和 Memory 级别,按照 Task 使用的这些资源按秒计费

Fargate 优势

无需管理群集

使用 AWS Fargate,您只需考虑容器,以便能够集中精力构建和运行应用程序。AWS Fargate 消除了管理 Amazon EC2 实例群集的需要。您不必再选择实例类型、管理群集调度和优化群集利用率。使用 Fargate,所有这些麻烦都将不复存在。

无缝扩展

借助 Fargate,您可以轻松扩展应用程序。您不必再担心是否为容器应用程序预置了足够多的计算资源的问题。在您指定应用程序要求 (例如 CPU、内存等) 后,AWS Fargate 会以高度可用的方式管理运行您的容器所需的所有扩展和基础设施。您不再需要决定何时扩展群集,也不需要将其打包即可实现最佳利用率。使用 Fargate,您可以在几秒钟内启动数以万计的容器,并轻松扩展以运行最重要的关键任务型应用程序。

与 AMAZON ECS 和 EKS 集成

AWS Fargate 与 Amazon ECS 无缝集成。您只需按照定义 Amazon ECS 的方式定义您的应用程序。您可以将应用程序打包到任务定义中,指定所需的 CPU 和内存,定义每个容器需要的联网和 IAM 策略,并将所有这些内容上传至 Amazon ECS。完成所有设置后,AWS Fargate 就会为您启动和管理容器。

ECS 和 Fargate 集成的优势总结:

走近Fargate,动手配置属于自己的Fargate集群

开始动手配置Fargate 集群

在之前配置基于EC2 的AWS ECS 服务时,您需要首先创建包含几个EC2 实例的ECS 集群。在这个集群中,您需要根据所有运行的容器性能选择合适的EC2 实例, 配置好自动扩展策略,以保证底层的EC2 实例可以完全有效的承载上层容器。

但是在Fargate 中,您可以直接跳过配置底层EC2 实例的细节,直接根据您的需要配置您希望使用的容器任务参数。而将承载容器的底层EC2 实例交给AWS 来维护。

走近Fargate,动手配置属于自己的Fargate集群

下面就让我们来亲手配置一个属于自己的Fargate 集群,来体验Fargate 给我们带来的容器配置和管理的便利性。

目前Fargate 已经可以在AWS 的控制台上正式使用了,不过现在仅支持us-east-1 区域。我们登录后切换到us-east-1 进行配置。Docker 镜像采用的是Docker 官方的Nginx 镜像。

Fargate 基本配置步骤

1. 在 Amazon ECS 服务下面的 Task Definition 创建界面可以选择 Fargate。

如果希望创建原来使用的普通 ECS 集群,则是选择 EC2 类型

走近Fargate,动手配置属于自己的Fargate集群

2. 设置 Task 和 Container 细节

目前 Fargate 的网络类型只能选择 awsvpc 类型。awsvpc 网络类型会给每一个任务单独分配一个 ENI 网卡,可以使得在网络层面访问每个任务容器和访问 VPC 内部的 EC2 一个。详细关于 awsvpc 网络类型的介绍,可以参考下面两篇文档:

Under the Hood: Task Networking for Amazon ECS Introducing Cloud Native Networking for Amazon ECS Containers

走近Fargate,动手配置属于自己的Fargate集群

因为没有EC2 的概念了,所以需要给Task 设定内存和CPU。而且在配置的时候下面有推荐的CPU 和内存数量

走近Fargate,动手配置属于自己的Fargate集群

Container 配置部分和普通的 ECS 一样

走近Fargate,动手配置属于自己的Fargate集群

配置容器名称,容器镜像的URL,容器占用的内存大小以及容器内部希望暴露的端口等。

走近Fargate,动手配置属于自己的Fargate集群

使用Fargate 创建的任务,容器日志会自动启用。启用后容器的日志会在CloudWatch 创建并直接打入CloudWatch 日志流中。因为用户使用Fargate 时不会创建EC2 实例,所以推荐打开容器日志,可以更好的监控容器的状态。

走近Fargate,动手配置属于自己的Fargate集群

3. 设置 ECS Cluster

在 Cluster 配置中选择 AWS Fargate 使用的集群

走近Fargate,动手配置属于自己的Fargate集群

在配置集群和网络中,如果要创建新的VPC,那么需要勾选该选项。如果希望利用现有的VPC,那么不勾选该选项即可。后面在创建任务时,会进入分配任务到某个VPC 的步骤。

走近Fargate,动手配置属于自己的Fargate集群

在创建好了集群之后,在总界面上可以看见,每个Cluster 可以混搭Fargate 以及普通基于EC2 的ECS 主机。而我们刚才通过Fargate 创建的集群,从控制台可以看见,是无需我们维护底层的EC2 实例信息的。也不会在这里出现。

走近Fargate,动手配置属于自己的Fargate集群

集群创建完毕之后。开始创建Fargate 的任务。在集群中启动Task,Launch 类型选择Fargate

走近Fargate,动手配置属于自己的Fargate集群

网络部分选择对应希望放入的VPC,如果希望Fargate 创建的Task 可以被公网访问的话,勾选auto-assign public IP。全部设置完毕之后,点击Run Task,启动任务

走近Fargate,动手配置属于自己的Fargate集群

4. 查看 Fargate 相关 Task 细节

在 Task 处可以看见运行了 Fargate 的容器,

走近Fargate,动手配置属于自己的Fargate集群

点入Task,可以看见该Task 绑定的网卡细节,包括私网IP 地址和MAC 地址。但是如果要看公网地址,那么需要进一步点击ENI

走近Fargate,动手配置属于自己的Fargate集群

走近Fargate,动手配置属于自己的Fargate集群

访问该界面发现Nginx 已经启动

走近Fargate,动手配置属于自己的Fargate集群

5. 增加负载均衡器 (ALB/NLB)

多个任务创建完毕之后。我们需要给新创建的任务添加负载均衡器。因为 Fargate 没有 EC2 实例会暴露出来。只会暴露 ENI 网卡的 IP 地址。所以在负载均衡器方面,仅支持可以添加 IP 地址的 ALB 和 NLB。

添加 Target Group,再次注意,因为 Fargate 没有 Instance 的概念,所以 Target Type 需要选择 IP

走近Fargate,动手配置属于自己的Fargate集群

针对这个Target Group 添加目标

走近Fargate,动手配置属于自己的Fargate集群

走近Fargate,动手配置属于自己的Fargate集群

创建ALB,Target Group 选择之前创建的组

走近Fargate,动手配置属于自己的Fargate集群

创建ALB 结束之后,已经可以通过ALB 的域名可以正常访问Fargate 创建的容器了

走近Fargate,动手配置属于自己的Fargate集群

6. Fargate 容器日志查看

前面说到可以通过 CloudWatch Logs 的方式记录任务容器的日志。打开 CloudWatch 服务,在 Logs 界面写,可以找到新创建的 ECS Fargate 任务的日志流。

走近Fargate,动手配置属于自己的Fargate集群

在该日志流中记录了 Fargate 生成的 2 个容器的日志

走近Fargate,动手配置属于自己的Fargate集群

点击进入其中一个容器的日志,可以看见刚才 MAC 笔记本通过 firefox 浏览器通过 ALB 访问容器的日志记录

走近Fargate,动手配置属于自己的Fargate集群

至此,一个前端通过 ALB 做负载均衡,后端由 Fargate 生成的由 Nginx 组成的集群搭建完成。整个过程不需要您维护任何 EC2 的实例。完全由 AWS 来帮您维护 EC2 实例,您只需要关系您的容器即可。

作者介绍:

姚远

亚马逊 AWS 解决方案架构师,负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广。现致力于网络和 DevOps 相关领域的研究。在加入 AWS 之前,在思科中国担任系统工程师,负责方案咨询和架构设计,在企业私有云和基础网络方面有丰富经验。

本文转载自 AWS 技术博客。

原文链接:
https://amazonaws-china.com/cn/blogs/china/approached-fargate-hands-on-configuration-belongs-to-their-own-fargate-cluster/

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

阅读数:433 发布于:2019 年 11 月 4 日 08:00

更多 语言 & 开发、技术管理、AWS 相关课程,可下载【 极客时间 】App 免费领取 >

评论

发布
暂无评论