问题标签 [amazon-ecs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5081 浏览

amazon-web-services - Amazon AWS EC2 容器服务是否支持卷?

文档建议不要。他们的任务定义页面上有更多信息,包括一个 mysql 示例,其中数据量通常是一个相当不错的主意,即:

0 投票
3 回答
2771 浏览

node.js - 在 Amazon ECS 上的 Docker 中运行节点 API 的最佳方式是什么?

随着 docker 以及 Amazon ECS 等调度和编排服务的出现,我正在尝试确定部署 Node API 的最佳方式。除了 Docker 和 ECS,我想利用 Node 集群库,通过创建一个主进程和多个工作处理器来优雅地处理在文档中建议的异步错误事件中节点应用程序的崩溃。

除了优雅地处理错误之外,集群方法的好处之一是为每个可用的 CPU 创建一个工作处理器。但这在 docker 世界中有意义吗?在一个 Docker 容器中运行多个节点进程是否有意义,该容器将被扩展到 ECS 上的 EC2 实例集群中?

如果没有 Node 集群方法,我将失去优雅处理错误的能力,因此我认为至少应该为每个 docker 容器运行一个主进程和一个工作进程。我仍然对在 ECS 的任务定义中定义多少 CPU 感到困惑。ECS 文档说明了每个容器实例每个 CPU 有 1024 个单元;但这与 EC2 计算单元不同,是吗?话虽如此,我需要选择具有适当数量的 vCPU 的 EC2 实例类型来实现这一点吗?

我知道实现最佳配置可能需要对我的特定 Node API 应用程序进行某种程度的基准测试,但如果能更好地了解从哪里开始,那就太棒了。也许我需要做一些学习/研究?任何指导我的路径或建议的指针将不胜感激!

编辑:回顾一下我的具体问题:

  1. 如此处所述在docker 容器内运行主/从集群以实现优雅崩溃是否有意义?

  2. 使用集群文档中描述的几乎相同的代码来“扩展”到可用的 CPU 是否有意义require('os').cpus().length

  3. 亚马逊在 ECS 任务定义的文档中是什么意思,它对cpus设置说,a container instance has 1024 units per CPU?这个设置的一个好的起点是什么?

  4. 将实例类型用于 ECS 集群的一个好的起点是什么,该集群旨在为基于上述内容的节点 API 提供服务?可用的 vCPU 对前面的问题有何影响?

0 投票
2 回答
33841 浏览

amazon-web-services - 我应该使用 AWS Elastic Beanstalk 还是 Amazon EC2 Container Service (ECS) 来扩展 Docker 容器?

我开发了一个由多个微服务组成的基于 Docker 的应用程序。它必须使用 Amazon SQS 消息并对其进行处理。起初我想使用 AWS Elastic Beanstalk,但后来我被 EC2 容器服务迷住了。现在不知道选哪个。

截至目前,Elastic Beanstalk 支持多容器环境。这很棒,因为每个微服务在 docker 容器中都有自己的应用程序服务器。下一个问题是缩放:

我不知道缩放机制是如何工作的。例如:我的 Elastic Beanstalk 环境中有 5 个 docker 容器。现在只有第五个 docker 容器处于重负载状态,因为它有大量的 SQS 消息要处理,其他四个几乎空闲,因为它们不需要太多 CPU 或者可能没有很多 SQS 消息。假设第 5 个容器运行 JBoss 应用程序服务器。据我所知,即使有足够的 CPU/内存可用,服务器也只能消耗有限数量的并行请求。

如果 JBoss Docker 容器无法处理大量请求,但有足够的 CPU/内存可用,当然我想在同一个实例上自动启动第二个 Docker/JBoss 容器。但是,如果我没有足够的 CPU/内存,会发生什么?当然,我想使用第二个实例,它可以通过 EB 中的自动缩放组进行配置。现在第二个实例启动了,但是除了第 5 个容器之外的每个容器几乎都处于空闲状态,当然我不希望它们在第二个实例中也产生 4 个不必要的容器,这会浪费资源。只有第 5 个应该产生,其他的应该根据可配置的参数像第 5 个比例一样缩放,例如:CPU/内存/SQS。

我不完全知道 Amazon ECS 是否正在这样做,或者是否有可能,但我真的无法在互联网上找到任何关于这个主题的资料,一般来说,这是基于实例/容器的扩展。

0 投票
1 回答
4741 浏览

amazon-web-services - 如何在 Amazon EC2 容器服务 (ECS) 中使用不安全的 docker 注册表?

我们在 AWS VPC 中使用了一个外部无法访问的 Docker 注册表。我们希望能够从此注册表中启动 ECS 中的任务,但是我们看到该服务仅处于 PENDING 状态,因为 Docker 守护程序无法访问注册表。

我通过更改启动配置的用户数据找到了一种解决方法,但感觉并不是最好的方法:

这完美地工作,我可以看到我的任务按预期运行。我只是不认为这一定是最好的方法。

AWS 向我介绍了这篇讨论使用私有注册表进行身份验证的文章,但我不打算进行身份验证,只是为了让 Docker 忽略我正在使用不安全(即不是 HTTPS)注册表的事实。

有没有人有更好的解决方案?

谢谢

0 投票
2 回答
1565 浏览

amazon-web-services - 如何在没有 docker hub 集成的情况下配置 Amazon 容器服务

我正在尝试设置一个新的基于 springboot+docker(microservices) 的项目。该部署针对 aws。每个服务都有一个与之关联的 Dockerfile。我正在考虑使用亚马逊容器服务进行部署,但据我所知,它只从 docker hub 中提取图像。我不希望 ECS 从 docker-hub 中提取,而是从 docker 文件构建映像,然后接管部署这些容器。可以吗?如果是的话如何。

0 投票
3 回答
774 浏览

amazon-web-services - AWS EC2 容器服务/Elastic Beanstalk Docker 容器端口 udp 绑定

根据 ECS 任务定义的文档,这就是我们定义端口映射的方式。

默认情况下,这是绑定端口tcp。如何实现udp与在 AWS Elastic Beanstalk(多容器)或 AWS ECS 中运行的 docker 容器的端口绑定?

0 投票
1 回答
11217 浏览

amazon-web-services - 如何使用cloudformation创建ecs集群?

我想使用 cloudformation 模板来创建我的 ecs 集群,而不是手动旋转它,但我还没有找到方法。这是否还没有实现,您可以在其中创建一个 ecs 集群作为您的 cloudformation 模板中的资源,似乎有点奇怪,他们没有包含它。

0 投票
3 回答
1901 浏览

amazon-web-services - AWS ECS 容器实例

我尝试使用 Ansible EC2 模块启动 ECS 容器实例。

我的剧本如下。

结果,启动了两个实例;其中一个按我的意图配置,但另一个有以下我不打算设置的标签。

  • aws:自动缩放:组名
  • aws:cloudformation:逻辑 ID
  • aws:cloudformation:stack-id
  • aws:cloudformation:stack-name

另外,我可以在 ECS Dashboard 上找到这两个实例。

在此处输入图像描述

但它只对集群“默认”可见,对其他集群不可见。


我真正想做的是;

  • 启动 ECS 容器实例
  • 将容器实例注册到集群

如果我可以使用 aws-cli 完成上述过程会更好,但首先我应该了解容器实例的奇怪行为并手动执行。

0 投票
6 回答
16791 浏览

amazon-web-services - 为什么我的 ECS 服务无法向我的 ELB 注册可用的 EC2 实例?

我有一个构建 ECS 优化 AMI 的 EC2 启动配置。我有一个 Auto Scaling 组,可确保我始终拥有至少两个可用实例。最后,我有一个负载均衡器。

我正在尝试创建一个 ECS 服务,将我的任务分配给负载均衡器中的实例。

在阅读了 ECS 负载均衡的文档后,我的理解是我的 ASG 不应该自动向 ELB 注册我的 EC2 实例,因为 ECS 会处理这个问题。所以,我的 ASG 没有指定 ELB。同样,我的 ELB 没有任何已注册的 EC2 实例。

创建 ECS 服务时,我选择 ELB 并选择 ecsServiceRole。创建服务后,我从未在 ECS 实例选项卡中看到任何可用的实例。该服务也无法启动任何任务,出现一个非常普遍的错误......

服务无法放置任务,因为找不到资源。

我已经在这里待了大约两天,似乎无法弄清楚哪些配置设置没有正确配置。有没有人知道什么可能导致这不起作用?

更新@ 2015 年 6 月 25 日:

我认为这可能与ECS_CLUSTER用户数据设置有关。

ECS_CLUSTER在我的 EC2 Auto Scaling 启动配置中,如果我将用户数据输入完全留空,则会使用“默认”值创建实例。发生这种情况时,我会看到一个自动创建的集群,名为“default”。在这个默认集群中,我看到了实例,并且可以像预期的那样向 ELB 注册任务。一旦任务向 ELB 注册,我的 ELB 健康检查 (HTTP) 就会通过,一切顺利。

但是,如果我将该ECS_CLUSTER设置更改为自定义设置,我将永远不会看到使用该名称创建的集群。如果我手动创建具有该名称的集群,则这些实例永远不会在集群中可见。在这种情况下,我永远无法向 ELB 注册任务。

有任何想法吗?

0 投票
1 回答
511 浏览

deployment - 使用 Docker 的单容器应用程序是 ECS 还是 EB?

我使用 Docker 部署了一个单容器 SailsJS 应用程序(图像大小约为 597.4 MB),并将其连接到 ElasticBeanstalk。

但是,既然 ECS 是为 Docker 构建的,那么在 EB 上使用它会更好吗?