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

时间:2020-02-23 14:41:13  来源:igfitidea点击:

可以在OpenStack中将实例从一个计算主机移动到另一个实例。
当计算节点具有问题或者维护时,这是一个常见任务。
OpenStack Server Migrate命令用于将OpenStack实例从一个计算主机迁移到另一个。

Nova Scheduler将根据其设置自动选择目标计算主机。
迁移过程不假设实例在目标主机上可用共享存储。
对于使用SSH隧道的人,请确保使用SSH密钥身份验证配置每个节点,以便计算服务可以使用SSH将磁盘移动到其他节点。

我们可以执行实时迁移或者非实时迁移。
在非实时迁移中,实例关闭,然后移动到另一个虚拟机管理程序并重新启动。
实例识别出它重新启动,并且实例上运行的应用程序被中断。

使用实时迁移,实例在整个迁移中断运行。
这可以通过处理实例存储的方式进一步分类:共享基于存储的实时迁移。
该实例具有位于源主机和目标主机之间共享的存储中的截阵截面.Block实时迁移,或者只是阻止迁移。
该实例具有在源主机和目标主机之间不共享的短暂磁盘。
块迁移与只读设备诸如CD-ROM和配置驱动器(CONFIG_DRIVE).volume备份的实时迁移不兼容。
实例使用卷而不是短暂磁盘。

第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    |
+----+----------------------------------+-----------------+---------------+-------+

获取Hypervisor服务名称:

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

使用OpenStack Server Migrate命令迁移实例。

$openstack server migrate <options> <server>

通过运行,请参阅可用的命令选项:

$openstack server migrate --help
usage: openstack server migrate [-h] [--live <hostname>]
                                [--shared-migration | --block-migration]
                                [--disk-overcommit | --no-disk-overcommit]
                                [--wait]
                                <server>
Migrate server to different host
positional arguments:
  <server>              Server (name or ID)
optional arguments:
  -h, --help            show this help message and exit
  --live <hostname>     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是目标主机hostnamedbvm01是要迁移实例的名称。

检查实例迁移状态。

$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                    |                                                          |
+-------------------------------------+----------------------------------------------------------+

如果状态已验证_RESIZE。
手动确认调整大小。

$openstack server resize --confirm dbvm01

应设置为活动状态。

| status                              | ACTIVE                                                   |