如何将OpenStack实例从一台计算主机迁移到另一台计算主机

OpenStack允许您将实例从一台计算主机移动到另一台计算主机。如果计算节点有问题或需要执行维护,这是一项常见任务。 openstack server migration命令用于将openstack实例从一台计算主机迁移到另一台计算主机。

Nova调度程序会根据该设置自动选择目标计算主机。迁移过程不假定实例具有目标主机上可用的共享存储。如果使用SSH隧道,请确保为每个节点配置了SSH密钥身份验证,以便Compute Service可以使用SSH将磁盘移动到其他节点。

您可以执行实时或非实时迁移。在非实时迁移中,实例将关闭,移至另一个虚拟机管理程序并重新启动。实例识别出它已经重新启动,并且实例上运行的所有应用程序都被中断。

在实时迁移中,实例在整个迁移过程中连续运行。这可以通过实例存储的处理方式进一步分类。

  • 基于共享存储的实时迁移。实例具有临时磁盘
    在源和目标之间共享的存储上
    主持人
  • 阻止实时迁移,或者仅阻止过渡。该实例有
    临时磁盘未在源和目标之间共享
    主持人块迁移与只读设备不兼容,例如:
    CD-ROM和配置驱动器(config_drive)。
  • 基于卷的实时迁移。使用卷代替实例
    临时磁盘。

步骤1:确定要迁移的VM

标识要迁移的VM。列出在OpenStack上运行的VM:

$ openstack server list
+--------------------------------------+-------------+--------+----------------------+----------+----------+
| ID                                   | Name        | Status | Networks             | Image    | Flavor   |
+--------------------------------------+-------------+--------+----------------------+----------+----------+
| 97cb5110-4135-4b59-8049-d19a29f64184 | dbvm01      | ACTIVE | public=172.20.150.70 | rhel-7.6 | m1.small |
| 8ba74eb3-469e-4535-8f30-ed75df303680 | webvm01     | ACTIVE | public=172.20.150.71 | rhel-7.6 | m1.small |
+--------------------------------------+-------------+--------+----------------------+----------+----------+

可用的管理程序列表:

$ openstack hypervisor list
+----+----------------------------------+-----------------+---------------+-------+
| ID | Hypervisor Hostname              | Hypervisor Type | Host IP       | State |
+----+----------------------------------+-----------------+---------------+-------+
|  1 | compute-01.osp.example.com       | QEMU            | 172.20.150.10 | up    |
|  4 | compute-02.osp.example.com       | QEMU            | 172.20.150.11 | up    |
+----+----------------------------------+-----------------+---------------+-------+

获取虚拟机监控程序服务名称。

$ openstack hypervisor show compute-01.osp.example.com

使用方法 openstack服务器迁移 迁移实例的命令。

$ openstack server migrate  

通过执行以下操作检查可用的命令选项:

$ openstack server migrate --help
usage: openstack server migrate [-h] [--live ]
                                [--shared-migration | --block-migration]
                                [--disk-overcommit | --no-disk-overcommit]
                                [--wait]
                                

Migrate server to different host

positional arguments:
                Server (name or ID)

optional arguments:
  -h, --help            show this help message and exit
  --live      Target hostname
  --shared-migration    Perform a shared live migration (default)
  --block-migration     Perform a block live migration
  --disk-overcommit     Allow disk over-commit on the destination host
  --no-disk-overcommit  Do not over-commit disk on the destination host
                        (default)
  --wait                Wait for migrate to complete

迁移示例:

$ openstack server migrate dbvm01

要迁移实例和临时块磁盘:

openstack server migrate --block-migration  --live compute-02.localdomain  dbvm01

其中:

  • compute-02.localdomain 目标主机的主机名
  • dbvm01 要迁移的实例的名称。

检查实例的迁移状态。

$ openstack server show  dbvm01
+-------------------------------------+----------------------------------------------------------+
| Field                               | Value                                                    |
+-------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                   |
| OS-EXT-AZ:availability_zone         | nova                                                     |
| OS-EXT-SRV-ATTR:host                | compute-01.localdomain                                   |
| OS-EXT-SRV-ATTR:hypervisor_hostname | compute-01.osp.example.com                               |
| OS-EXT-SRV-ATTR:instance_name       | instance-000000cf                                        |
| OS-EXT-STS:power_state              | Running                                                  |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | resized                                                  |
| OS-SRV-USG:launched_at              | 2019-09-18T08:59:09.000000                               |
| OS-SRV-USG:terminated_at            | None                                                     |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| addresses                           | public=172.20.150.70                                     |
| config_drive                        |                                                          |
| created                             | 2019-09-18T06:30:41Z                                     |
| flavor                              | m1.medium (2)                                            |
| hostId                              | 0535fdb75a2a49238da76c9b812629b3fc5522251ab791ef03287be9 |
| id                                  | 3a82cf1f-93d0-47c6-931f-9d14472d9e45                     |
| image                               | rhel-7.6 (3dcc3ae0-41ba-4371-afb2-c07c5c1725fb)          |
| key_name                            | None                                                     |
| name                                | dbvm01                                                   |
| progress                            | 0                                                        |
| project_id                          | f278b83dd81848399a66d704aeb507b4                         |
| properties                          |                                                          |
| security_groups                     | name='default'                                           |
| status                              | VERIFY_RESIZE                                            |
| updated                             | 2019-09-18T08:59:10Z                                     |
| user_id                             | 9d6cd9e9847640ffbb2570a39d98aa55                         |
| volumes_attached                    |                                                          |
+-------------------------------------+----------------------------------------------------------+

状态为 VERIFY_RESIZE。手动检查调整大小。

$ openstack server resize --confirm dbvm01

状态为 活跃的

| status                              | ACTIVE                                                   |

有关OpenStack的其他文章:

如何使用Packstack在CentOS 7上安装OpenStack

如何调整OpenStack实例/虚拟机的大小

学习OpenStack Cloud Platform 2019的完美书

如何在Linux上安装和配置OpenStack Client

如何将OpenStack实例/ VM配置为在Nova计算重启后自动启动

如何创建OpenStack Cinder卷并使用CLI连接到VM实例/服务器

Sidebar