2012-09-17 45 views
1

要用run_instance运行实例,我必须指定一个位置,否则会出现ami不可用的错误。
现在,每个地区都有多个区域(如US East,US West等)和多个区域(如us-east-1a,us-east-1b等)。是否必须在AWS PHP API中选择特定区域?

是否必须将特定区域传递给AWS或者是否可以通过一个区域(例如us-east-1也许)并让Amazon选择该区域?
我想将这个决定保留给亚马逊,因为我没有看到区域之间的区别,并且在所有区域上平均分配实例会稍微复杂一点。

回答

1

是的,你必须指定特定区域。

您可以通过为自动缩放组指定启动配置,而不是严格按照各个实例进行操作,从而消除一些痛苦。启动configs可以告诉系统在每个区域中运行X实例。这样可以很容易地在每个区域中获得所需的实例数量,而无需为每个区域实际实例化而烦恼。此外,如果您只需要固定数量的实例,则不必担心“缩放”规则。

下面是一些更多的背景信息

http://aws.amazon.com/autoscaling/

+0

谢谢你的回答。 Autoscaling看起来像集群服务器的正确解决方案。就我而言,这些机器实际上是个人的,因为它们是针对没有高可用性的客户推出的,并且它们不会超载。所以,在这种情况下,我必须考虑一些算法来平均分配它们,对吧?我是否必须将它们分配到所有区域,还是只能将它们放在一个区域中,让其他区域变为空的? – wullxz

+0

@wullxz因此,这些是单个实例,而不是每个服务的多个实例?在这种情况下,通过让您的实例处于多个AZ中,除了额外努力工作在多个AZ之外,您实在没有任何收获。仅仅因为您处于特定的可用区域并不意味着您处于数据中心的相应物理部分。您可以在跨数据中心的多个物理位置中使用同一个AZ的实例。一旦你正在寻求跨越多个AZ的负载平衡流量以获得更好的扩展性和可用性,你就会想要使用多可用区。 –

+0

@wullxz此外,如果这些服务器中的任何一个彼此进行通信,您可以通过将所有服务器放在一个AZ中而不是使服务器与交叉AZ进行通信来节省带宽成本。 –

0

嗯,是的,你必须指定特定区域。在你的情况下,我发现你需要针对两个问题的解决方案: - 你需要为低可用性的客户提供新的实例,并将它们分布到不同的位置以提高性能 - 为此,最佳解决方案是 - 可以将负载均衡器实例(单个或多个可用区),然后将负载平衡器上的cloudfront连接起来。云端基本上以内容分发的方式工作,并使您的应用程序在不同位置的高可用性,从而提高性能。