在 AWS 区域间迁移 EBS 支持的实例时出现问题

在 AWS 区域间迁移 EBS 支持的实例时出现问题

笔记:我也在 E​​C2 论坛上问过这个问题,但没有得到任何回应。希望 ServerFault 社区能更加棒。

我们已经期待已久的 AWS 悉尼新区域的开放,但是我在将我们的实例从北加州迁移过来时遇到了很多麻烦。

我设法使用CloudyScripts移动快照,然后在悉尼地区启动新实例。这是一个非常新的实例,因此源和目标都在 Ubuntu 12.04 LTS 服务器上运行,我没有遇到任何问题。

然而,我们其余的实例都是 Ubuntu 10.04 LTS,因此我遇到了很多问题。

我尝试过以下操作:

1- 遵循AWS 白皮书最近,我们在悉尼举行的客户答谢日上获得了感人的实例,新区域也在此启动。

这种方法的问题在于最后一步(步骤 19),在这里注册图像:ec2-register -s snap-0f62ec3f -n "Wombat" -d "migrated Wombat" --region ap-southeast-2 -a x86_64 --kernel aki-937e2ed6 --block-device-mapping "/dev/sdk=ephemeral0"

我一直收到此错误:Client.InvalidAMIID.NotFound:AMI ID“ami-937e2ed6”不存在,我认为这是因为悉尼地区不存在 kernel_id?

2- 使用 CloudyScripts 移动快照,然后创建新卷并附加到悉尼的新实例

这导致实例在启动时挂起并无法通过状态检查。我无法通过 SSH 登录或查看服务器日志

我怀疑我的问题在于如何为新区域中的卷找到正确的 kernel_id。但是我似乎无法弄清楚如何找到这个 kernel_id,我尝试过的那些(来自原始实例)不会导致 Client.InvalidAMIID.NotFound:AMI ID 'ami-937e2ed6' 错误,并且任何其他 kernel_id 都无法启动。

我尝试了 Ubuntu 12.04 和 10.04 版本。似乎都不起作用,我已经绞尽脑汁一段时间了,请帮帮我!

新的(损坏的)实例 i-a1acda9b ami-9b8611a1 aki-31990e0b

源实例 i-08a6664e ami-b37e2ef6 aki-937e2ed6

附言:在进行迁移之前,我也尝试按照本指南将我的 Ubuntu LTS 版本更新到 12.04,但似乎也没有用,仍然卡在更新 kernel_id 上 http://ubuntu-smoser.blogspot.com.au/2010/04/upgrading-ebs-instance.html

答案1

当您指定不存在的内核 ID 时,ec2-register 会错误地报告“Client.InvalidAMIID.NotFound”错误。这是 AWS 工具中的一个错误。

要确定正确的内核 ID,请从目标区域中与源 AMI 尽可能匹配的 AMI 启动新实例。在您的示例中,启动基于 Ubuntu 10.04 LTS AMI 的实例。该实例运行后,您可以看到该实例使用了哪个内核 ID 和 Ramdisk ID(如果有)。然后,您可以使用相同的内核 ID 和 Randisk ID(如果有)。

答案2

是的,这是 AWS 令人讨厌的功能之一:AMI 无法在各个区域之间移植。遗憾的是,它们不是兼容的基础设施。

不过,至少有一家公司已将 EC2 实例迁移变成一项服务。雅丽丝提供“一键迁移 EBS Linux AMI 和快照”。上个月我使用这项服务很短一段时间,当时我帮助一位朋友将一个实例从 us-east-1 迁移到 us-west-2。手动迁移太麻烦了,所以我决定尝试这项服务,结果很成功。

Ylastic 会自动为您启动实例来完成工作,这可能需要一段时间才能完成。它们基本上dd将您的数据转移到新区域中的临时实例,并为您创建一个新快照,您可以使用该快照启动该区域中的实例。然后它会自行清理,终止用于进行传输的资源。

然而,从战略上讲,最好能够自动完成在任何区域创建任何实例配置的过程。我们使用 Chef 手册来实现这一点,因此我们可以在任何区域为我们的应用程序准备好兼容的 AMI。唯一的麻烦是跟踪在哪些区域使用哪些 AMI 和内核。但是,一旦您拥有一套适用于所有地方的配方,您就不必再担心迁移实例了。

相关内容