如何与 Elastic Beanstalk 多容器环境共享 AWS EC2 实例

穆罕默德·雷汉·赛义德

假设我有两个 Docker 容器 1 和 2。我想使用多容器 Docker 映像将它们部署到 AWS Elastic Beanstalk,以便我拥有以下 EC2 实例来降低成本:

测试环境

  • ELB 应用程序负载均衡器(有多少?)
  • EC2 实例 1
    • Docker 容器 1
    • Docker 容器 2

生产环境

  • ELB 应用程序负载均衡器(有多少?)
  • EC2 实例 2

    • Docker 容器 1
    • Docker 容器 2
  • EC2 实例 3

    • Docker 容器 1
    • Docker 容器 2

所以我的问题是:

  1. 我需要创建多少个 Elastic Beanstalk 应用程序?从文档中不清楚。
  2. 如何让 Container 的 1 & 2 共享 EC2 实例。
  3. 负载均衡器是为您创建的,但每个 docker 容器都需要自己的端口 80,因此需要创建多少个 ELB。这是如何运作的?
底垫

我需要创建多少个 Elastic Beanstalk 应用程序?

您可以使用具有多个环境的单个应用程序获得您想要的设置这在有关环境Elastic Beanstalk 文档中进行了描述对于您的用例,您将为同一个应用程序配置一个“生产”和“测试”环境。

您的环境可以有不同的配置,因此您可以为您的测试环境使用更小(更便宜)的 EC2 实例。

您还可以有不同的自动扩展规则,因此在您描述的环境中,您将在测试环境中指定至少 1 个 EC2 实例,但在生产环境中至少指定 2 个 EC2 实例。

如何让 Container 的 1 & 2 共享 EC2 实例?

我想您是在问如何将两个 Docker 容器部署到充当 Docker 主机的单个 EC2 实例上?

这在Dockerrun.aws.json文件中定义,该文件记录在Elastic Beanstalk 指南 中注意 - 对于多容器 Docker 应用程序,您应该参考版本 2。

该文件声明了您希望如何配置您的环境。与您的问题相关的一点是containerDefinitions它包含一组 Docker 容器,您可以将这些容器部署到您的主机(底层 EC2 实例)。

当 Elastic Beanstalk 扩展您的环境时,它会将 Dockerrun 文件中的配置应用到新实例。因此,如果您的示例生产环境扩展为具有三个实例,您最终会得到第三个实例运行相同的两个容器。

需要创建多少个 ELB

根据文档,您将在每个环境中拥有一个 Elastic Load Balancer:

每个环境都有一个指向负载均衡器的 CNAME (URL)。

containerDefinition上面提到的 Dockerrun 文件部分中,您可以为容器定义端口映射。因此,如果您的示例中的容器之一正在运行 Nginx,您的 Dockerrun 文件中将具有与此类似的配置:

"name": "nginx-proxy",
      "image": "nginx",
      "essential": true,
      "memory": 128,
      "portMappings": [
        {
          "hostPort": 80,
          "containerPort": 80
        }
      ],

然后将此配置应用于运行您的容器配置的任何实例 - 当负载均衡器将请求路由到该特定实例时,它会转发到侦听端口 80 的容器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从CLI找出运行给定EC2实例的Elastic Beanstalk环境?

如何以编程方式在Elastic Beanstalk环境中更改EC2实例类型?

如何在Elastic Beanstalk环境中自定义EC2实例

AWS Elastic Beanstalk与EC2容器服务(ECS)-Docker

实际的ec2实例未获取Elastic Beanstalk创建并说环境具有的iam实例配置文件。如何做到这一点?

如何在Elastic Beanstalk中的EC2实例上重新启动httpd以启用HTTPS?

连接资源之前如何在EC2实例上运行Elastic Beanstalk命令

具有Docker容器的Amazon Elastic Beanstalk与EC2实例

AWS EC2容器服务/ Elastic Beanstalk Docker容器端口udp绑定

AWS EC2 / Elastic Beanstalk | 如何按域名白名单?

AWS并分解Elastic Beanstalk实例

Amazon ec2和AWS Elastic Beanstalk之间的区别

AWS EC2 无法通过 SSH 连接到 Elastic Beanstalk 创建的 EC2

我应该使用AWS Elastic Beanstalk还是Amazon EC2容器服务(ECS)扩展Docker容器?

如何仅增加AWS EC2上的根磁盘大小以与Elastic Beanstalk一起使用?

阻止AWS Elastic Beanstalk创建新实例

终止 AWS Elastic Beanstalk 环境

如何使用AWS CLI 2将更新的JAR上传到现有的Java Elastic Beanstalk实例?

Elastic Beanstalk Django App REST API因多个EC2实例而失败

Elastic BeanStalk EC2实例的日志用完了整个磁盘空间

将EC2安全组限制为Elastic Beanstalk实例

每次启动EC2实例时,Elastic Beanstalk是否运行所有部署命令?

如何使用Elastic Beanstalk设置实例类型?

AWS Elastic Beanstalk使用Django在已部署的EC2服务器上托管PostreSQL

负载平衡的Elastic Beanstalk中来自AWS EC2的出站请求的IP地址范围

使用AWS Elastic Beanstalk,图如何与多个实例一起使用

AWS Elastic Beanstalk(单个实例):如何为Spring Boot应用程序启用HTTPS?

如何从 aws-sdk 中的 s3 存储桶创建 Elastic Beanstalk 实例?

如何在AWS Elastic Beanstalk Docker实例中更改logrotate的设置