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

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

ECS使用 AWS Fargate 在亚马逊上部署 Java 微服务

由 Vijay Thompson (AWS) 和 Sandeep Bondugula () 创作 AWS

摘要

此模式为使用 Fargate 在亚马逊弹性容器服务 (亚马逊ECS) 上部署容器化 Java 微服务提供了指导。AWS该模式不使用亚马逊弹性容器注册表 (AmazonECR) 进行容器管理;相反,Docker 镜像是从 Docker 中心提取的。

先决条件和限制

先决条件

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

  • 公共 Docker 存储库

  • 一个活跃的AWS账户

  • 熟悉AWS服务,包括 Amazon ECS 和 Fargate

  • Docker、Java 和 Spring Boot 框架

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

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

架构

源技术堆栈

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

源架构

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

目标技术堆栈

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

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

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

目标架构

亚马逊 Java 微服务上的目标架构 ECS

工具

工具

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

  • AWSFargate 可帮助您运行容器,而无需管理服务器或亚马逊弹性计算云 (AmazonEC2) 实例。它与亚马逊弹性容器服务 (AmazonECS) 配合使用。

  • 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"]

操作说明

任务描述所需技能

创建任务定义。

在亚马逊上运行 Docker 容器ECS需要任务定义。打开 Amazon ECS 控制台 https://console.aws.amazon.com/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和子网。创建或更新安全组(HTTPHTTPS、和端口 8080)以提供对入站和出站连接的访问权限。

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

配置公有 IP 设置。

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

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

查看设置并创建任务

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

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

复制应用程序URL。

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

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

测试您的应用程序。

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

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

相关资源