14.4. 迁移实例


OpenStack 和底层虚拟化层为 OpenStack 节点之间的镜像实时迁移提供,允许您无缝地执行 Compute 节点的滚动升级,而无需实例停机时间。但是,实时迁移也存在重大风险。要了解涉及的风险,以下是实时迁移过程中执行的高级步骤:

  1. 在目标主机上启动实例
  2. 转让内存
  3. 停止客户机和同步磁盘
  4. 传输状态
  5. 启动客户机
注意

某些操作(如冷迁移、调整大小和她)都会导致在网络上将实例的数据传送到其他服务。

14.4.1. 实时迁移风险

在实时迁移过程的不同阶段,实例的运行时和磁盘的内容通过纯文本通过网络传输。因此,在使用实时迁移时需要解决多个风险。以下非排除列表详细介绍了其中一些风险:

  • 拒绝服务(DoS):如果迁移过程中出现某种失败,则实例可能会丢失。
  • 数据泄露:必须安全地处理内存或磁盘传输。
  • 数据操作:如果内存或磁盘传输没有被安全处理,则攻击者可以在迁移过程中操作用户数据。
  • 代码注入:如果内存或磁盘传输没有被安全处理,则攻击者可以在迁移过程中操作可执行文件(在磁盘上或内存中)。

14.4.2. 实时迁移缓解方案

有多种方法可帮助缓解与实时迁移相关的一些风险。以下部分描述了它们:

14.4.2.1. 禁用实时迁移

目前,在 OpenStack 中默认启用实时迁移。默认情况下,实时迁移是仅限管理员的任务,因此用户无法启动此操作,只有管理员(可能可以被信任)。实时迁移可以通过将以下行添加到 nova policy.json 文件中来禁用:

"compute_extension:admin_actions:migrate": "!",
"compute_extension:admin_actions:migrateLive": "!",
Copy to Clipboard Toggle word wrap

或者,当阻止 TCP 端口 4915249261 时,实时迁移可能会失败,或者确保 nova 用户在计算主机之间没有免密码 SSH 访问。

请注意,实时迁移的 SSH 配置被明显锁定:创建了一个新用户(nova_migration),SSH 密钥仅限于该用户,且仅在白名单网络上使用。然后,打包程序脚本会限制可运行的命令(例如,在 libvirt 套接字上的 netcat)。

14.4.2.2. 迁移网络

实时迁移流量以纯文本形式传输正在运行的实例的磁盘和内存内容,并且当前默认托管在 Internal API 网络中。

14.4.2.3. 加密实时迁移

如果有足够的要求(如升级)来保持启用实时迁移,则 libvirtd 可以为实时迁移提供加密的隧道。但是,此功能不会在 OpenStack Dashboard 或 nova-client 命令中公开,只能通过 libvirtd 手动配置进行访问。然后,实时迁移过程会更改为以下高级别步骤:

  1. 实例数据从 hypervisor 复制到 libvirtd。
  2. 在源和目标主机上的 libvirtd 进程间创建了一个加密的隧道。
  3. 目标 libvirtd 主机将实例复制到底层虚拟机监控程序。
注意

对于 Red Hat OpenStack Platform 13,建议使用隧道迁移,这在将 Ceph 用作后端时默认启用。如需更多信息,请参阅 https://docs.openstack.org/nova/queens/configuration/config.html#libvirt.live_migration_tunnelled

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部