【问题标题】:The right way to architect a cluster in EC2在 EC2 中构建集群的正确方法
【发布时间】:2012-09-28 14:42:06
【问题描述】:

我正在开发开源工具,该工具必须在 EC2 中的集群上运行,组织方式为 “一主多从”的方式。我需要一些关于如何以最简单但可靠的方式正确组织事物的建议。

我基本上需要的是一个将在主实例上运行的代码(用户手动运行)并执行以下操作:

a) 运行 N 个从属实例(N 个来自用户)

b) 在每个实例启动并运行之后 - 通过 SSH 连接并启动一些东西。

c) 跟踪存活的从属实例(例如通过简单地 ping 它们)

d) 如果从属实例失败 - 确保它已终止,运行另一个并重复步骤 b)

e) 来自用户的信号 - 关闭从属实例。

所有这些看起来都非常简单明了,但我有一些问题:

1) 准备好的解决方案。首先我看了一下Zookeeper,但我被它的复杂性吓到了。对于我需要的这么简单的事情来说,这似乎有点过头了。我发现的另一件事是StarCluster,它也在 Python 中,这很好(我的工具也在 Python 中),但我不确定它是否能满足我的需要(跟踪、重新运行实例)。 我的问题是:是否有我不知道的简单工具、库、框架?

2) 另一种方法是自己实现。这里的问题是:我的问题中是否有我不知道的陷阱?这一切看起来都很简单:对 API 的多次调用加上一些常规 ping,但可能我在这里没有看到任何东西,所以使用已经编写的工具真的是正确的吗?

3) 如果我自己编写代码,问题是:是否使用 CloudWatch。它真的对管理内部计算集群有什么不同吗?或者它只会更好地帮助处理高负载站点等?

4) 我的简单架构对主节点故障没有任何保护。用户运行它,然后通过 Web 界面连接到它并运行集群,但如果主节点出现故障 - 一切都会被破坏。从属节点可以检查主节点的存在,并在主节点出现故障时自行终止。这增加了一些防止无头运行的耗钱集群的保护,但这并不能解决优雅重启的问题。如何解决?

5) 在开始编写此项目的代码之前,是否还有其他需要了解的内容或需要阅读的重要资料?

提前谢谢你!

【问题讨论】:

    标签: architecture amazon-ec2 cluster-computing starcluster


    【解决方案1】:

    您可能想了解一下亚马逊的自动缩放功能。显然,这只处理 EC2 实例,但会为您处理启动、停止和监控实例的许多复杂性。

    使用 AutoScaling,您可以创建一个或多个组。您告诉亚马逊如何在您的组中创建更多实例(AMI、userData、实例类型等)以及您希望在组中创建多少个实例。 Amazon 将根据需要启动尽可能多的实例,并在它们失败时替换它们。

    您可以使用 api 更改所需节点的数量(如果您当时不需要任何实例,可以将其设置为 0),或者您可以根据 cloudwatch 指标来拥有它。例如,如果您使用 SQS 将作业分配给您的从属服务器,您可以配置自动缩放以在有可用作业时将组大小从 0 增加到所需的数量,并在队列变空时将组大小返回为 0。

    您还可以有多个组,例如,您可能有一个与主节点相对应的组,该组始终具有 1 个实例(如果失败,ec2 将替换它)和第二个从属组,该组将具有 0 个实例没有工作要做,有工作可用时有 N 个实例。

    我自己没有使用过来自 python 的 EC2 api,但我听说 boto 可以很好地为您处理这个问题。

    【讨论】:

      【解决方案2】:

      一种可能的方法是使用 PaaS(平台即服务)来处理您需要的大量管道。 PaaS 通常至少会处理:

      • 配置虚拟机
      • 将应用程序代码部署到新虚拟机
      • 监控 VM 状态并启动新 VM 以替换发生故障的 VM。
      • 自动缩放

      您需要根据 PaaS 预期的格式定义您的应用程序并提交。其余的应该是自动化的。 这里有一个很好的 PaaS 选项比较:Looking for PaaS providers recommendations

      免责声明:我为 GigaSpaces 工作,开源 Paas 堆栈的开发人员 Cloudify

      【讨论】:

        猜你喜欢
        • 2019-04-29
        • 1970-01-01
        • 2020-05-19
        • 2011-08-25
        • 2013-08-04
        • 2015-04-15
        • 1970-01-01
        • 1970-01-01
        • 2013-08-19
        相关资源
        最近更新 更多