【发布时间】: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