ECS使用亚马逊ECR和负载平衡在亚马逊上部署 Java 微服务 - AWS Prescriptive Guidance

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

ECS使用亚马逊ECR和负载平衡在亚马逊上部署 Java 微服务

由 Durga Prasad Cheepuri 创作 () AWS

摘要

此模式概述了在亚马逊弹性容器服务 (AmazonECS) 上部署容器化 Java 微服务架构的步骤,以便更轻松地扩展和更快地开发应用程序。这有助于实现创新并加快新功能 time-to-market的开发速度。 

该模式还使用亚马逊弹性容器注册表 (AmazonECR) 来存储和管理基于 Docker 的容器,并使用带有 Python 脚本的AWS CloudFormation 模板来自动设置基础设施。该模式基于在 Comp AWS ute 博客上发布的 “在亚马逊弹性容器服务上部署 Java 微服务” 一文。

微服务为软件开发提供了一种架构和组织方法,其中软件由小型的独立服务组成,这些服务通过定义明确的应用程序编程接口进行通信()APIs。自给自足的小团队拥有这些服务。 

Amazon ECS 是一项高度可扩展、高性能的容器编排服务。它支持 Docker 容器,使您能够快速运行和扩展容器化应用程序。AWS借助 AmazonECS,您不再需要安装和操作容器编排软件、管理和扩展虚拟机集群 (VMs) 或在这些VMs虚拟机上调度容器。

通过简单的API调用,您可以启动和停止支持 Docker 的应用程序,查询请求的完整状态,并访问许多自然功能,例如AWS身份和访问管理 (IAM) 角色、安全组、负载均衡器、A CloudWatch mazon Events AWS CloudFormation 、模板和日志。AWS CloudTrail

先决条件和限制

先决条件

  • 一个活跃的AWS账户  

  • Java 开发套件版本 1.7或更高版本的 Java 微服务源代码

  • 账户中用户的访问密钥和秘密访问密钥

  • AWS命令行界面 (AWSCLI)

  • Java、适用于 Python 的AWS软件开发套件 (SDK) (Boto3) 和 Docker 软件

  • 熟悉前述技术的使用

  • 熟悉亚马逊ECS和 Elastic Load B AWS CloudFormation alancing 等AWS服务

架构

源技术堆栈

  • 在本地环境中于 Java 中实现并部署至 Apache Tomcat 的微服务

目标技术堆栈

  • 检查客户端请求的应用程序负载均衡器。根据路由规则,负载均衡器将请求定向至目标组中与状态匹配的实例和端口。

  • 每项微服务的目标群体。相应服务使用目标组注册可用容器实例。每个目标组都包含一个路径,因此,当您为特定微服务调用该路径时,其会映射至正确的目标组。这允许您使用应用程序负载均衡器为通过路径访问的所有微服务提供服务。例如,https:///owner/* 将映射并定向至 Owner 微服务。

  • 托管每项微服务的容器的 Amazon ECS 集群。

  • 用于托管亚马逊ECS集群和相关安全组的亚马逊虚拟私有云 (AmazonVPC) 网络。

  • 每个微服务的亚马逊弹性容器注册表 (AmazonECR) 存储库。

  • 每项微服务的服务或任务定义,用于在 Amazon 集ECS群的实例上启动容器。

目标架构

在 Amazon 上部署容器化 Java 微服务架构的步骤。ECS

工具

  • Ama zon ECS — Amazon ECS 允许您通过简单的API调用启动和停止基于容器的应用程序,使您能够从集中式服务获取集群的状态,并允许您访问许多熟悉的亚马逊弹性计算云 (AmazonEC2) 功能。

  • 亚马逊 ECR — Amazon Elastic Container Registry (AmazonECR) 是一个完全托管的注册表,可让开发人员轻松存储、管理和部署 Docker 容器镜像。亚马逊ECR已与亚马逊集成ECS,以简化您的 development-to-production工作流程。Amazon 将您的映像ECR托管在高度可用且可扩展的架构中,因此您可以可靠地为应用程序部署容器。与 Ident AWS ity and Access Management (IAM) 的集成提供了对每个存储库的资源级控制。

操作说明

任务描述所需技能

预置亚马逊 EC2 Linux 实例,安装 Docker,然后为每项微服务创建一个 Docker 文件。

Ops

在亚马逊ECR上设置 Docker 镜像。

使用 Dockerfile 推送、构建映像,并为新存储库标记映像。对每项微服务执行同一操作。将新标记的映像推送到此存储库。

Ops

创建AWS CloudFormation 模板。

创建AWS CloudFormation 模板来配置虚拟私有云 (VPC)、Amazon ECS 集群和亚马逊关系数据库服务 (AmazonRDS)。

Ops
任务描述所需技能

使用您之前创建的 CloudFormation 模板创建AWS基础架构。

使用 https://github.com/awslabs/amazon-ecs-java-microservices/blob/master/2_ECS_Java_Spring_PetClinic_Microservices/setup.py 处的 Python 脚本来调用你之前创建的AWS CloudFormation 模板。此模板创建了目标环境所需的AWS基础架构。

Ops

创建 Amazon ECR 存储库、任务、服务、Application Load Balancer 和目标群组。

Python 脚本读取AWS CloudFormation 模板的输出,并使用BOTO3API调用来创建 Amazon ECR 存储库、任务、服务、Application Load Balancer 和目标组。

Ops

相关资源