2014-12-18 59 views
0

這怎麼可能與博託時獲得可用性區錯了嗎?寶途上創建一個EC2體積現貨實例

<Response><Errors><Error><Code>InvalidVolume.ZoneMismatch</Code><Message>The volume 'vol-6c954e27' is not in the same availability zone as instance 'i-3c7d1113'</Message></Error></Errors><RequestID>8332fa44-3ca5-4a4e-aef4-ce928c258a03</RequestID></Response> 

1)I使一個點請求:

req = conn_spot.request_spot_instances(price=self.spot_price,instance_type=self.instance_type, ebs_optimized=self.ebs_optimized,           image_id=self.ami,availability_zone_group=self.zone,key_name=self.keypair,security_groups=[self.security_group]) 

2)I附體積:

region_id = boto.ec2.get_region(self.region_id, aws_access_key_id=self.aws_access_key_id, 
           aws_secret_access_key=self.aws_secret_access_key) 
conn = ec2.connection.EC2Connection(region=region_id, aws_access_key_id=self.aws_access_key_id, 
             aws_secret_access_key=self.aws_secret_access_key) 
conn.create_volume(self.volume, self.zone,volume_type=self.volume_type,iops=self.iops) 

區通過設置self.zone其是用於兩者都相同的是us-east-1a,但服務器是在我們創建的東東1e,而音量是us-east-1a我錯過了什麼?

沒有當場要求無視我需要帶?

+0

我不熟悉伯特(我更喜歡使用REST API直接),但它聽起來像,從http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-pricing-interruptions.html #spot-az-provision,如果你想在所有情況下控制你的實例的啓動位置,你最好指定* subnet *而不是「可用區域組」。 – 2014-12-19 03:44:40

回答

0

RequestSpotInstances documentation

AvailabilityZoneGroup

用於出價的邏輯分組的用戶指定的名稱。

當您指定在現貨實例請求一個可用性區域集團,在要求所有現貨實例在同一個可用性區域被啓動。實例接近度由此參數維護,但可用區的選擇不是。該組僅適用於相同實例類型的競價型實例的出價。只要組中至少有一個實例仍處於活動狀態,則在同一可用區中啓動使用相同可用區組名稱指定的其他競價型實例請求。

所以,這個領域實際上並不指定特定的可用性區域。相反,它是用戶指定的名稱,用於將實例組合在一起保存在同一個可用區中。

placement字段用於指定可用性區域,但我懷疑這只是在EC2-Classic,可使用。

在VPC下運行時,實際上應指定subnet_id,因爲每個子網都位於單個可用區域內。

get_only_instances()啓動實例的詳細信息中提取可用區域,然後將該值用於create_volume()調用也是明智的。這將保證匹配的可用區域。