使用 Elastic Beanstalk 部署容器 - AWS Prescriptive Guidance

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

使用 Elastic Beanstalk 部署容器

由托马斯·斯科特 (AWS) 和让-巴蒂斯特·吉洛斯 () 创作 AWS

摘要

在亚马逊网络服务 (AWS) 云上,El AWS astic Beanstalk 支持 Docker 作为可用平台,因此容器可以在创建的环境中运行。此模式展示了如何使用 Elastic Beanstalk 服务部署容器。此模式的部署将使用基于 Docker 平台的 Web 服务器环境。

要使用 Elastic Beanstalk 部署和扩展 Web 应用程序和服务,您需要上传代码,部署就会自动处理。还包括容量预调配、负载均衡、自动扩缩和应用程序运行状况监控。当你使用 Elastic Beanstalk 时,你可以完全AWS控制它代表你创建的资源。Elastic Beanstalk 不收取额外费用。您只需为用于存储和运行应用程序的AWS资源付费。

此模式包括使用 E AWS lastic Beanstalk 命令行界面 CLI (EB) 和管理控制台进行部署的说明。AWS

使用案例

Elastic Beanstalk 的使用场景包括: 

  • 部署原型环境来演示前端应用程序。(此模式以 Dockerfile 为例。)

  • 部署API以处理对给定域的API请求。

  • 使用 Docker-Compose 部署编排解决方案(在此模式中 docker-compose.yml 未用作实际示例)。

先决条件和限制

先决条件

  • AWS 账户

  • AWSCLI本地安装了 EB

  • Docker 已安装在本地机器上

限制

  • 在免费套餐中,每个 IP 地址的 Docker 拉取限制为每 6 小时拉取 100 次。

架构

目标技术堆栈

  • 亚马逊弹性计算云 (AmazonEC2) 实例

  • 安全组

  • 应用程序负载均衡器

  • 自动扩缩组

目标架构

使用 Elastic Beanstalk 部署容器的架构。

自动化和扩缩

AWSElastic Beanstalk 可以根据发出的请求数量自动扩展。 AWS为环境创建的资源包括一个 Application Load Balancer、一个 Auto Scaling 组和一个或多个 Amazon EC2 实例。 

负载均衡器位于作为 Auto Scaling 组一部分的 Amazon EC2 实例的前面。Amazon A EC2 uto Scaling 会自动启动额外的亚马逊EC2实例,以适应应用程序不断增加的负载。如果您的应用程序的负载减少,Amazon A EC2 uto Scaling 会停止实例,但它会使至少一个实例保持运行。

自动扩缩触发器

您的 Elastic Beanstalk 环境中的 Auto Scaling 组使用 CloudWatch 两个亚马逊警报来启动扩展操作。当每个实例的平均出站网络流量在 5 分钟时间段内高于 6 MB 或低于 2 MB 时,默认触发器将扩展。要有效地使用 Amazon A EC2 uto Scaling,请配置适合您的应用程序、实例类型和服务要求的触发器。您可以根据多种统计数据进行扩展,包括延迟、磁盘 I/O、CPU利用率和请求数。有关更多信息,请参阅自动扩缩触发器

工具

AWS 服务

  • AWSCommand Line Interface (AWSCLI) 是一个开源工具,可帮助您通过命令行外壳中的命令与AWS服务进行交互。

  • AWSEB 命令行接口 (EBCLI) 是一个命令行客户端,可用于创建、配置和管理 Elastic Beanstalk 环境。

  • 弹性负载均衡在多个目标上分配传入的应用程序或网络流量。例如,您可以跨亚马逊弹性计算云 (AmazonEC2) 实例、容器以及一个或多个可用区中的 IP 地址分配流量。

其他服务

  • Docker 将软件打包成称为容器的标准化单元,其中包括库、系统工具、代码和运行时系统。

代码

此模式的代码可在 GitHub 集群示例应用程序存储库中找到。

操作说明

任务描述所需技能

克隆远程存储库。

  • 要克隆存储库,请运行 git clone https://github.com/aws-samples/cluster-sample-app.git 命令。< /p>

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

初始化 Elastic Beanstalk Docker 项目。

  1. 在根目录下创建一个名为 aws.json 的文件。

  2. aws.json 文件中,添加以下代码。

    {    "AWSEBDockerrunVersion":"1",    "Image":{       "Name":"cluster-sample-app"    },    "Ports":[       {          "ContainerPort":80,          "HostPort":8080       }    ] }
  3. 在项目的根目录下运行 eb init -p docker 命令。

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

在本地测试项目。

  1. 在项目的根目录下运行 eb local run 命令。

  2. 导航到 http://localhost,测试应用程序。

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

运行部署命令

  1. 在项目的根目录下运行 eb create docker-sample-cluster-app 命令。

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

访问已部署的版本。

部署命令完成后,使用该 eb open命令访问项目。

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

使用浏览器部署应用程序。

  1. 打开 控制台。

  2. 导航到 Elastic Beanstalk 控制台。

  3. 选择创建应用程序

  4. 应用程序名称中,输入 Cluster-Sample-App

  5. 选择 Docker 作为平台。

  6. 选择上传代码

  7. 选择您的本地.zip 文件(位于克隆项目的根目录中)或公共的亚马逊简单存储服务 (Amazon S3) Amazon S3。URL

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

访问已部署的版本。

部署后,访问已部署的应用程序,然后选择URL提供的应用程序。

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

相关资源

其他信息

使用 Elastic Beanstalk 的好处

  • 自动预调配基础设施

  • 自动管理底层平台

  • 自动修补和更新以支持应用程序

  • 自动扩缩应用程序

  • 能够自定义节点数

  • 能够在需要时访问基础设施组件

  • 与其他容器部署解决方案相比,易于部署