使用 AWS Fargate 在 Amazon ECS 上部署 Java 微服务 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 AWS Fargate 在 Amazon ECS 上部署 Java 微服务

创建者:Vijay Thompson(AWS)和 Sandeep Bondugula(AWS)

环境:PoC 或试点

源:容器

目标:Amazon ECS

R 类型:不适用

技术:容器和微服务;Web 和移动应用程序

Amazon Web Services: Amazon ECS

Summary

此模式为使用 AWS Fargate 在 Amazon Elastic Container Service (Amazon ECS) 上部署容器化 Java 微服务提供了指导。该模式不使用 Amazon Elastic Container Registry (Amazon ECR) 进行容器管理;相反,Docker 映像是从某 Docker 中心提取的。

先决条件和限制

先决条件

  • 在 Docker 中心上的现有 Java 微服务应用程序

  • 公共 Docker 存储库

  • 一个有效的 Amazon Web Services account

  • 熟悉 Amazon Web Services,包括 Amazon ECS 和 Fargate

  • Docker、Java 和 Spring Boot 框架

  • Amazon Relational Database Service(Amazon RDS)已启动并运行(可选)

  • 如果应用程序需要 Amazon RDS(可选),则为虚拟私有云(VPC)

架构

源技术堆栈

  • Java 微服务(例如,在 Spring Boot 中实施)并部署在 Docker 上

源架构

部署在 Docker 上的 Java 微服务的源架构

目标技术堆栈

  • 使用 Fargate 托管每项微服务的 Amazon ECS 集群

  • 用于托管 Amazon ECS 集群和相关安全组的 VPC 网络 

  • 使用 Fargate 启动容器的每个微服务的集群/任务定义

目标架构

Amazon ECS 上 Java 微服务的目标架构

工具

工具

  • Amazon ECS 使您无需安装和操作自己的容器编排软件、管理和扩展虚拟机集群,也不需要在这些虚拟机上调度容器。 

  • AWS Fargate 可帮助您运行容器,无需管理服务器或 Amazon Elastic Compute Cloud(Amazon EC2)实例。它与 Amazon Elastic Container Service(Amazon ECS)配合使用。

  • Docker 软件平台可以快速构建、测试和部署应用程序。Docker 将软件打包成称为容器的标准化单元,容器拥有软件运行所需的一切,包括库、系统工具、代码和运行时系统。 

Docker 代码

以下 Dockerfile 指定了所使用的 Java 开发套件(JDK)版本、Java 存档(JAR)文件所在的版本、公开的端口号以及应用程序的入口点。

FROM openjdk:11 ADD target/Spring-docker.jar Spring-docker.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","Spring-docker.jar"]

操作说明

任务描述所需技能

创建任务定义。

在 Amazon ECS 中运行 Docker 容器需要任务定义。在 https://console.aws.amazon.com/ecs/ 上打开 Amazon ECS 控制台,选择任务定义,然后创建新的任务定义。有关更多信息,请参阅 Amazon ECS 文档

AWS 系统管理员、应用程序开发人员

选择启动类型。

选择 Fargate 作为启动类型。

AWS 系统管理员、应用程序开发人员

配置任务。

定义任务名称并使用适当数量的任务内存和 CPU 配置应用程序。

AWS 系统管理员、应用程序开发人员

定义容器。

指定容器名称。对于映像,输入 Docker 站点名称、存储库名称和 Docker 映像的标签名称(docker.io/sample-repo/sample-application:sample-tag-name)。为应用程序设置内存限制,为允许的端口设置端口映射(8080, 80)。

AWS 系统管理员、应用程序开发人员

创建任务。

任务和容器配置到位后,创建任务。有关详细说明,请查看相关资源部分的链接。

AWS 系统管理员、应用程序开发人员
任务描述所需技能

创建和配置集群。

选择仅限网络作为集群类型,配置名称,然后创建集群或使用现有集群(如果有)。有关更多信息,请参阅 Amazon ECS 文档

AWS 系统管理员、应用程序开发人员
任务描述所需技能

创建任务。

在集群中,选择运行新任务

AWS 系统管理员、应用程序开发人员

选择启动类型。

选择 Fargate 作为启动类型。

AWS 系统管理员、应用程序开发人员

选择任务定义、修订版和平台版本。

选择要运行的任务,然后选择任务定义的修订版和平台版本。

AWS 系统管理员、应用程序开发人员

选择 集群。

选择要在其中运行任务的集群。

AWS 系统管理员、应用程序开发人员

指定任务数量。

配置应运行的任务数。如果您启动时有两个或更多任务,则需要负载均衡器在这些任务中分发流量。

AWS 系统管理员、应用程序开发人员

指定任务组。

(可选)指定任务组名称以将一组相关任务标识为任务组。

AWS 系统管理员、应用程序开发人员

配置集群 VPC、子网和安全组。

配置集群 VPC 和要在其中部署应用程序的子网。创建或更新安全组(HTTP、HTTPS 和端口 8080)以提供对入站和出站连接的访问权限。

AWS 系统管理员、应用程序开发人员

配置公有 IP 设置。

启用或禁用公有 IP,具体取决于您是否要使用公有 IP 地址执行 Fargate 任务。推荐的默认选项为启用

AWS 系统管理员、应用程序开发人员

查看设置并创建任务

查看设置,然后选择运行任务

AWS 系统管理员、应用程序开发人员
任务描述所需技能

复制应用程序 URL。

当任务状态更新为正在运行时,选择该任务。在“网络”部分中,复制公有 IP。

AWS 系统管理员、应用程序开发人员

测试您的应用程序。

在浏览器中,输入公有 IP 以测试应用程序。

AWS 系统管理员、应用程序开发人员

相关资源