将 AWS EC2 m3.large 迁移到 m4.large

将 AWS EC2 m3.large 迁移到 m4.large

新的 m4 实例看起来比以前的 m3 实例好得多(就性能和价格而言),所以我打算将它们作为我们云服务的默认实例。这些服务之前在 m3 实例上运行过,所以我想使用“更改实例类型”选项执行常规升级。但似乎它不适用于 m3 到 m4 的迁移。我知道,可以通过从原始实例创建磁盘映像,然后基于该映像启动新实例,将服务从一个实例“移动”到另一个实例。问题是,是否有可能以更优雅的方式执行此迁移?任何建议都值得赞赏。

答案1

您有两个选择:

1 - 重新配置

正如 EEAA 所提到的,您可以启动一个新实例,使用配置管理工具对其进行配置(如果服务器用于生产,则应该使用配置)或恢复备份,然后迁移您的服务并重新指向 DNS。

如果您使用配置管理或自动缩放,这种方法非常简单。

2 - 调整大小

2.1 EBS 支持的实例

您可以通过 Amazon 控制台手动调整实例大小。请参阅亚马逊文档了解详细说明。

当您有一个独立实例时,这种方法很有用。

2.2 - 实例存储支持的实例

如果你使用实例存储支持实例,您需要通过创建实例的 AMI、销毁当前实例并使用刚创建的 AMI 创建新实例来进行迁移。有关如何执行此操作的详细信息位于同一亚马逊文档资源

答案2

回答:

  1. 启动 Ubuntu HVM Linux,任何版本,新

  2. 使用我现有的 AMI / PVM Linux 启动 Ubuntu / 并在其上安装 grub 包:apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists

  3. 停止 PVM Linux

  4. 在 PVM Linux 上分离根 (/dev/sda1) 分区

  5. 将 PVM Linux 根分区附加到正在运行的 HVM Linux 的某个位置,例如:/dev/sdf

  6. 在 HVM Linux 上:mkdir -p /mnt/xvdf && mount /dev/xvdf /mnt/xvdf

  7. rsync -avzXA /boot/ /mnt/xvdf/boot/

  8. mount -o bind /dev /mnt/xvdf/dev && mount -o bind /dev/pts /mnt/xvdf/dev/pts && mount -o bind /proc /mnt/xvdf/proc && mount -o bind /sys /mnt/xvdf/sys

  9. chroot /mnt/xvdf

  10. grub-install --no-floppy --recheck --force /dev/xvdf

  11. update-grub2

  12. 退出 chroot:CTRL+D

  13. 停止HVM Linux

  14. 分离 /dev/sda1 原始根目录并分离 /dev/sdf PVM 根目录

  15. 将 PVM 根目录附加到 HVM Linux 作为 /dev/sda1

  16. 启动 HVM linux,瞧!

  17. 从正在运行的 HVM linux 创建一个新的 AMI 映像,它将是 HVM 虚拟化的。

取自:https://stackoverflow.com/posts/26276763/编辑

答案3

如果您可以忍受几分钟的停机时间:

  • 创建 m4 实例,但不要启动它,也不要创建或附加存储
  • 停止 m3 实例
  • 将 m3 实例中的现有 EBS 卷附加到新的 m4 实例
  • 启动 m4 实例。其行为应与 m3 实例相同

相关内容