2012-09-17 67 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連接起來。雲端基本上以內容分發的方式工作,並使您的應用程序在不同位置的高可用性,從而提高性能。