除了创建巨大的实例之外,有没有办法强制实例在单独的物理机器上运行,或者检测亚马逊网络服务 (AWS) 上同一图像的多个实例正在使用多少物理机器?
我在这里考虑可靠性。如果我自欺欺人地认为我有三个独立的服务器用于容错(想想 Paxos、Quicksilver、ZooKeeper 等),因为我运行了三个不同的实例,但所有三个最终都运行在同一台物理机器上,我可能会一个非常非常粗鲁的惊喜。
我意识到这个问题可能是通过使用单独的区域来强制解决的,但是很高兴知道是否有区域内甚至可用区域内的解决方案,因为我不确定我是否见过 AWS 实际提供创建实例时,我在所谓的多选下拉菜单中选择了多个可用区。
好的,我很欣赏前两个回答我的问题的建议,但我试图通过在一个地区放置 3 台机器来简化问题而不写小说。让我再试一次 - 当我向上/向外扩展假设的应用程序堆栈时,我将静态和动态(“弹性”)添加实例。当然,任何形式的故障/灾难都可能发生(包括整个数据中心因不幸的休息室事故而烧毁,其中涉及微波炉、CD 和两个白痴说“哦,是吗?看这个!! !”),但到目前为止,最有可能的是某种硬机器故障,紧随其后的是死端口。在单个虚拟化硬件上运行相同类型 T 的多个实例会增加计算能力,但不会增加容错能力。显然,如果我 在扩大/缩小时,我很可能会使用“更大”的实例。显然,如果 AWS 最大的机器有内存大小 M 和处理器数量 C,如果我选择一个内存大小为 m 的实例,使得 m > (M/2) 或 CPU 大小为 c 的数量,使得 c > ( C/2),那么我将保证我的实例在不同的机器上运行。但是,我不知道什么Mmax和 C max是今天;我当然不知道一年后它们会是什么,或者从现在起两年后,等等,因为亚马逊收购了更大更好更快。我知道这听起来像是吹毛求疵,但不知道实例是如何分布的,或者是否有控制实例分布的机制意味着我可以在使用当前计算影响 F+1 或 2F+1 时在假设中犯真正的错误分布式计算算法或评估用于新应用程序的新算法、分片和位置决策、应用程序堆栈中流量较少的部分的最小保留与弹性实例计数等。