【发布时间】:2015-02-19 12:26:05
【问题描述】:
随着 docker 以及 Amazon ECS 等调度和编排服务的出现,我正在尝试确定部署 Node API 的最佳方式。除了 Docker 和 ECS,我想利用 Node 集群库,通过创建一个主进程和多个工作处理器来优雅地处理在发生异步错误时节点应用程序崩溃的问题,如 documentation 中所建议的那样。
除了优雅地处理错误之外,集群方法的一个好处是为每个可用的 CPU 创建一个工作处理器。但这在 docker 世界中有意义吗?在一个 Docker 容器中运行多个节点进程是否有意义,该容器将被扩展到 ECS 上的 EC2 实例集群中?
如果没有 Node 集群方法,我将失去优雅处理错误的能力,因此我认为至少应该为每个 docker 容器运行一个主进程和一个工作进程。我仍然对在 ECS 的任务定义中定义多少 CPU 感到困惑。 ECS documentation 说明了每个容器实例每个 CPU 有 1024 个单元;但这与 EC2 计算单元不同,是吗?话虽如此,我需要选择具有适当数量的 vCPU 的 EC2 实例类型来实现这一点?
我知道,实现最佳配置可能需要对我的特定 Node API 应用程序进行某种程度的基准测试,但如果能更好地了解从哪里开始,那就太棒了。也许我需要做一些学习/研究?任何指导我的路径或建议的指针将不胜感激!
编辑:回顾一下我的具体问题:
在 docker 容器内运行 here 所述的主/从集群以实现正常崩溃是否有意义?
使用集群文档中描述的几乎相同的代码通过
require('os').cpus().length“扩展”到可用的 CPU 是否有意义?Amazon 在 ECS 任务定义的文档中表示
cpus设置是什么意思,container instance has 1024 units per CPU?这个设置的一个好的起点是什么?在 ECS 集群中使用实例类型以提供基于上述内容的节点 API 的良好起点是什么?可用的 vCPU 对前面的问题有何影响?
【问题讨论】:
标签: node.js amazon-web-services amazon-ec2 docker amazon-ecs