跳转到: 导航, 搜索

Ironic/NovaBaremetalIronicMigration

历史文档

此 Wiki 页面是 Ironic 项目早期阶段的历史文档。有关最新文档,请参阅 https://docs.openstack.org/ironic

从 Nova Baremetal 迁移到 Ironic

此 Wiki 的目的是为了帮助理解从 Nova 的 "baremetal" 驱动程序迁移到其 "ironic" 驱动程序的流程。首先列出编写本文档的假设和迁移成功完成的物理要求。然后提供迁移步骤的描述。

请注意,Nova 的 baremetal 驱动程序将在 Kilo 中移除。

假设和要求

本节描述了对迁移可以执行的运行环境所做的假设,并且反映了将在 Juno 稳定分支上执行的持续升级测试的环境。在其他情况下,迁移也可能是可行的。

  • 仅支持 Juno 版本的“横向”迁移。换句话说
    • 从 Juno "baremetal" 迁移到 Juno "ironic" 是受支持的,但
    • 从 Icehouse "baremetal" 迁移到 Juno "ironic" 不受支持。
  • 这仅处理 Nova baremetal 的 IPMI 和 VirtualPowerManager 电源管理器/驱动程序(不包括 Pdu、IBootManager)。
  • 作为上游 CI 测试(grenade)的一部分,未测试 Nova 中 virt 驱动程序之间的实时实例迁移,因此不建议这样做。
    • 尽管如此,迁移期间保留运行的实例预计在迁移后能够正常工作。
  • 从 Icehouse "baremetal" 升级到 Juno "baremetal" 未经上游测试,但我们不知道有任何影响此升级的错误。

迁移步骤

本节概述了操作员执行从 Juno 版本 Nova "baremetal" 驱动程序到 Juno 版本 Nova "ironic" 驱动程序的横向迁移的推荐方法。

请注意,提供的示例可能与您的环境略有不同。

安装 Ironic

按照 Ironic 的 安装指南 的这两个部分安装 Ironic

  1. 安装和配置先决条件
  2. 配置 Bare Metal 服务。 暂时不要启动 Ironic 服务(最后一步)。
准备用于驱动程序的 "deploy-ironic" 内核和 initrd

这些说明适用于 PXE 驱动程序。 如果您计划使用其他驱动程序,请准备该驱动程序的适当镜像。

使用 diskimage-builder 创建 Ironic 部署内核和 RAM 磁盘。 例如,以下命令将在 deploy-ironic.kernel 和 deploy-ironic.initramfs 文件中创建内核和 RAM 磁盘

 diskimage-builder/bin/ramdisk-image-create -a $NODE_ARCH $NODE_DIST deploy-ironic -o deploy-ironic $DIB_ELEMENTS

将上述构建的 Ironic 部署内核和 RAM 磁盘加载到 Glance 中。 例如

 dkid=$(glance image-create --name "deploy-ironic-kernel" --public --disk-format aki --file deploy-ironic.kernel | awk ' / id / {print $4}')
 drid=$(glance image-create --name "deploy-ironic-ramdisk" --public --disk-format ari --file deploy-ironic.initramfs | awk ' / id / {print $4}')
开始维护期

为了防止用户访问 Nova,请开始您的维护期。 维护将在迁移完成后结束。

停止 Ironic 和 Nova 的服务

如果 Ironic 服务正在运行,请停止它们

 sudo service ironic-api stop
 sudo service ironic-conductor stop

如果 Nova 服务正在运行,请停止 compute 和 scheduler 服务

 sudo service nova-compute stop
 sudo service nova-scheduler stop
更新 nova-compute 配置以使用 Ironic
  1. 按照 配置 Compute 服务以使用 Bare Metal 服务 的步骤 1 和 2 更改一些设置并添加一个 [ironic] 部分
  2. 删除整个 [baremetal] 部分
更新 Nova baremetal 的 flavor 元数据

更新 Nova "baremetal" flavor 元数据,以引用加载到 Glance 中的 deploy-ironic 内核和 RAM 磁盘。 例如

 nova flavor-key baremetal set "baremetal:deploy_kernel_id"="$dkid"
 nova flavor-key baremetal set "baremetal:deploy_ramdisk_id"="$drid"
运行 migrate_db 脚本

ironic-nova-bm-migrate 脚本会将 Nova baremetal 节点和接口信息以及相关的驱动程序配置从 Nova 数据库迁移到 Ironic 数据库。 它仅支持从 IPMI 和 VirtualPowerManager 电源驱动程序迁移。

 ironic-nova-bm-migrate --nova-bm-db $database_connection_url_nova_bm \
     --ironic-db $database_connection_url_ironic \
     --node-arch x86_64 \
     --nova-conf $NOVA_CONF_FILE
启动 Ironic 服务

通过以下方式(重新)启动 Ironic 服务

 sudo service ironic-api start
 sudo service ironic-conductor start
确保 Ironic 服务启动

在运行以下 "ironic" 命令之前,请确保已设置/导入所需的 OS_* 环境变量。(有关更多信息,请参阅 ironic 命令行界面)。

 ironic driver-list

应该产生如下输出

 +--------------+--------+
 | name         | hosts  |
 +--------------+--------+
 | pxe_ipmitool | ubuntu |
 | pxe_ssh      | ubuntu |
 +--------------+--------+
请注意,上述列表可能与您的输出不完全匹配;这取决于您启用的驱动程序。 如果这是您第一次启动 Ironic 服务,建议检查 Ironic 日志是否有错误。

然后运行 "node-list" 以确保节点已正确迁移

 ironic node-list

应该产生如下列表

 +--------------------------------------+---------------+-------------+-----------------+-------------+
 | uuid                                 | instance_uuid | power_state | provision_state | maintenance |
 +--------------------------------------+---------------+-------------+-----------------+-------------+
 | 36f24e67-aaec-41ba-ba20-509bdd548974 | None          | power off   | None            | False       |
 | 77024bdb-a360-419f-a0b5-bc18a97571c1 | None          | power off   | None            | False       |
 +--------------------------------------+---------------+-------------+-----------------+-------------+

使用 node-show 命令详细检查每个节点。 迁移脚本填充了节点的 uuid、instance_uuid、created_at、updated_at、power_state、driver 和 driver_info、instance_info 以及从其 Nova baremetal 节点获取的属性

 ironic node-show 36f24e67-aaec-41ba-ba20-509bdd548974
 +------------------------+-------------------------------------------------------------------------+
 | Property               | Value                                                                   |
 +------------------------+-------------------------------------------------------------------------+
 | instance_uuid          | None                                                                    |
 | target_power_state     | None                                                                    |
 | properties             | {u'memory_mb': u'2048', u'cpu_arch': u'i386', u'local_gb': u'40',       |
 |                        | u'cpus': u'1'}                                                          |
 | maintenance            | False                                                                   |
 | driver_info            | {u'ssh_username': u'nobodycam', u'ssh_virt_type': u'virsh',             |
 |                        | u'ssh_address': u'192.168.122.1', u'ssh_key_contents': u'-----BEGIN RSA |
 |                        | PRIVATE KEY-----                                                        |
 |                        | <SSH KEY REMOVED>                                                       |
 |                        | -----END RSA PRIVATE KEY-----'}                                         |
 | extra                  | {}                                                                      |
 | last_error             | None                                                                    |
 | created_at             | 2014-09-15T17:50:59+00:00                                               |
 | target_provision_state | None                                                                    |
 | driver                 | pxe_ssh                                                                 |
 | updated_at             | 2014-09-15T18:24:15+00:00                                               |
 | instance_info          | {}                                                                      |
 | chassis_uuid           | None                                                                    |
 | provision_state        | None                                                                    |
 | reservation            | None                                                                    |
 | power_state            | power off                                                               |
 | console_enabled        | False                                                                   |
 | uuid                   | 36f24e67-aaec-41ba-ba20-509bdd548974                                    |
 +------------------------+-------------------------------------------------------------------------+
(重新)启动 Nova 的 compute 和 scheduler 服务
 sudo service nova-compute start
 sudo service nova-scheduler start
检查 Nova hypervisor 详细信息,以确保正确配置

除了在启动期间检查日志文件是否有明显的错误之外,您还可以检查 nova-compute 节点的 hypervisor 详细信息,以确保它们已正确注册并从 Ironic 报告正确的资源

 nova hypervisor-list
 +----+--------------------------------------+
 | ID | Hypervisor hostname                  |
 +----+--------------------------------------+
 | 1  | a6c3b50d-049b-4878-b92f-91e13ac855e2 |
 +----+--------------------------------------+
 nova hypervisor-show 1
 +-------------------------+--------------------------------------+
 | Property                | Value                                |
 +-------------------------+--------------------------------------+
 | cpu_info                | baremetal cpu                        |
 | current_workload        | 0                                    |
 | disk_available_least    | -                                    |
 | free_disk_gb            | 0                                    |
 | free_ram_mb             | 0                                    |
 | host_ip                 | 192.0.2.1                            |
 | hypervisor_hostname     | a6c3b50d-049b-4878-b92f-91e13ac855e2 |
 | hypervisor_type         | ironic                               |
 | hypervisor_version      | 1                                    |
 | id                      | 1                                    |
 | local_gb                | 40                                   |
 | local_gb_used           | 40                                   |
 | memory_mb               | 4096                                 |
 | memory_mb_used          | 4096                                 |
 | running_vms             | 1                                    |
 | service_disabled_reason | -                                    |
 | service_host            | nova-compute                                 |
 | service_id              | 5                                    |
 | state                   | up                                   |
 | status                  | enabled                              |
 | vcpus                   | 1                                    |
 | vcpus_used              | 1                                    |
 +-------------------------+--------------------------------------+
结束维护期

完成了!

Nova Baremetal CLI 命令

迁移到 Ironic 后,一些 Nova baremetal 命令将继续有效。 此表列出了 baremetal 命令,无论它们是否将在迁移后继续有效,以及它们对应的 Ironic 命令。 建议使用与受支持的 baremetal 命令对应的 Ironic 命令。

Nova baremetal 命令 迁移后支持 对应的 Ironic 命令
baremetal-interface-add port-create
baremetal-interface-list port-list
baremetal-interface-remove port-delete
baremetal-node-create node-create
baremetal-node-delete node-delete
baremetal-node-list node-list
baremetal-node-show node-show

参考文献