本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
ECS使用亚马逊ECR和 AWS Fargate 在亚马逊上部署 Java 微服务
由 Vijay Thompson (AWS) 和 Sandeep Bondugula () 创作 AWS
摘要
此模式将指导您完成在亚马逊弹性容器服务 (Amazon) 中将 Java 微服务部署为容器化应用程序的步骤。ECS该模式还使用亚马逊弹性容器注册表 (亚马逊ECR) 来管理您的容器,并使用 AWS Fargate 来运行您的容器。
先决条件和限制
先决条件
在本地 Docker 上运行的现有 Java 微服务应用程序
一个活跃的AWS账户
熟悉亚马逊ECR、亚马ECS逊、Far AWS gate AWS 和命令行界面 () AWS CLI
熟悉 Java 和 Docker 软件
产品版本
AWSCLI版本 1.7 或更高版本
架构
源技术堆栈
(例如,使用 Spring Boot 开发的)和在本地部署的 Java 微服务
Docker
源架构

目标技术堆栈
Amazon ECR
Amazon ECS
AWS Fargate
目标架构

工具
工具
Amazon Elastic Container Registry (AmazonECR) 是一个完全托管的注册表,可让开发人员轻松存储、管理和部署 Docker 容器镜像。亚马逊ECR已与亚马逊集成ECS,以简化您的 development-to-production工作流程。Amazon 将您的映像ECR托管在高度可用且可扩展的架构中,因此您可以可靠地为应用程序部署容器。与 Ident AWS ity and Access Management (IAM) 的集成提供了对每个存储库的资源级控制。
Amazon 弹性容器服务 (AmazonECS) 是一项高度可扩展、高性能的容器编排服务,它支持 Docker 容器,并允许您轻松地在其上运行和扩展容器化应用程序。AWSAmazon 使您ECS无需安装和操作自己的容器编排软件、管理和扩展虚拟机集群或在这些虚拟机上调度容器。
AWSFargat e 是一款适用于 Amazon 的计算引擎ECS,它允许您运行容器,而无需管理服务器或集群。有了 AWS Fargate,您无需再为运行容器而预置、配置和扩展虚拟机集群。这样一来,您就无需再选择服务器类型、确定扩展集群的时间和优化集群打包。
Docker
是一个平台,允许您在名为容器的包中构建、测试和交付应用程序。
代码
以下内容 DockerFile 指定了所使用的 Java 开发套件 (JDK) 版本、Java archive (JAR) 文件所在的版本、公开的端口号以及应用程序的入口点。
FROM openjdk:8
ADD target/Spring-docker.jar Spring-docker.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","Spring-docker.jar"]
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
创建存储库。 | 登录AWS管理控制台,然后在https://console.aws.amazon.com/ecr/存储库 | 开发人员、系统管理员 |
上传项目。 | 打开存储库并选择查看推送命令。然后按照显示的步骤上传项目。(这些步骤仅在您使用 1.7 或更高AWSCLI版本时才起作用。) 上传完成后,将版本URL的版本复制到存储库中。当你在 Amazon 中创建容器URL时,你将使用它ECS。 | 开发人员、系统管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
创建任务定义。 | 在亚马逊上运行 Docker 容器ECS需要任务定义。打开 Amazon ECS 控制台 https://console.aws.amazon.com/ecs/ | 开发人员、系统管理员 |
请选择启动类型。 | 选择 Fargate 作为启动类型。 | 开发人员、系统管理员 |
配置任务。 | 定义任务名称并使用适当数量的任务内存和配置应用程序CPU。 | 开发人员、系统管理员 |
定义容器。 | 添加容器,提供名称、Amazon ECR 存储库URL的名称、内存限制和端口映射。已针对端口映射配置了端口 8080 和 80。根据您的应用程序要求配置其余设置。 | 开发人员、系统管理员 |
创建任务。 | 任务和容器配置到位后,创建任务。有关详细说明,请查看相关资源部分的链接。 | 开发人员、系统管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
创建或选择集群。 | Amazon ECS 集群提供任务或服务的逻辑分组。您可以选择使用现有集群或创建新集群。如果您决定创建新集群,请根据您的要求选择集群类型。在我们的示例中,我们选择了一个网络集群。为集群提供一个名称,然后选择是否要创建新的虚拟私有云 (VPC) 以用于 Fargate 任务。 | 开发人员、系统管理员 |
创建服务。 | 在集群内部,选择创建服务。 | 开发人员、系统管理员 |
请选择启动类型。 | 选择 Fargate 作为启动类型。 | 开发人员、系统管理员 |
选择任务定义、修订版和平台版本。 | 选择要运行的任务,然后选择任务定义的修订版和平台版本。 | 开发人员、系统管理员 |
选择 集群。 | 从下拉列表中选择要在其中创建服务的集群。 | 开发人员、系统管理员 |
提供服务名称。 | 为您正在创建的服务提供唯一名称。 | 开发人员、系统管理员 |
指定任务数量。 | 配置服务启动时应运行的任务数。如果您启动时有两个或更多任务,则需要负载均衡器来平衡这些任务。要配置的最小任务数为 1。 | 开发人员、系统管理员 |
设置最小和最大运行状况正常百分比。 | 为应用程序配置最小和最大运行状况正常百分比,或者接受提供的默认选项。 | 开发人员、系统管理员 |
配置部署设置。 | 根据要求选择部署类型。您可以选择滚动更新或蓝绿部署。 | 开发人员、系统管理员 |
配置集群VPC、子网和安全组。 | 配置集群VPC、要在其上部署应用程序的子网以及用于提供入站/出站连接访问权限的安全组(HTTPHTTPS、和端口 8080)。 | 开发人员、系统管理员 |
配置公有 IP 设置。 | 启用或禁用公有 IP,具体取决于您是否要使用公有 IP 地址执行 Fargate 任务。 | 开发人员、系统管理员 |
配置负载均衡。 | 如果您使用多个任务启动服务,请配置负载均衡器。在启动该服务之前,您必须创建负载均衡器及其目标组。 | 开发人员、系统管理员 |
配置自动扩缩。 | 将您的服务配置为使用 Amazon S ECS ervice Auto Scaling 根据您的要求向上或向下调整所需的任务数量。 | 开发人员、系统管理员 |
检查设置,然后创建服务。 | 检查服务设置,然后选择创建服务。 | 开发人员、系统管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
测试您的应用程序。 | 使用部署任务时创建DNS的公共数据库来测试应用程序。如果应用程序有负载均衡器,请使用它来测试应用程序,然后割接。 | 开发人员、系统管理员 |
相关资源
亚马逊 Docker 基础知识ECS(亚马逊ECS文档)
AWSFargate ECS 上的亚马逊(亚马逊ECS文档)
创建私有存储库(Amazon ECR 文档)
创建任务定义(Amazon ECS 文档)
容器定义(亚马逊ECS文档)
创建集群(亚马逊ECS文档)
配置基本服务参数(Amazon ECS 文档)
配置网络(Amazon ECS 文档)
将@@ 您的服务配置为使用负载均衡器(Amazon ECS 文档)
将@@ 您的服务配置为使用 Service Auto Scaling(亚马逊ECS文档)