计算节点标识¶
Nova 要求计算节点在其生命周期内保持恒定且一致的标识。从 2023.1 版本开始,除了 ironic 驱动程序外,这是通过使用包含节点唯一标识符的文件来实现的,该文件会持久化到磁盘上。在 2023.1 之前,计算节点的hostname 和 host 配置项的值组合使用。
2023.1 及更高版本的计算节点标识文件必须在计算节点的生命周期内保持不变。更改该值或删除该文件将导致启动失败,并且可能需要高级技术才能恢复。该文件在 nova-compute 启动时读取一次,此时会验证其格式,并在数据库中找到或创建相应的节点。
注意
即使在 2023.1 之后,计算节点的hostname 在与控制器节点进行初始注册后也不应更改,只是它不再作为主要的标识方法使用。
当使用 ironic 驱动程序时,nova-compute 的行为不同,因为(基于 UUID)的计算节点标识和计算节点到计算管理器服务主机的映射是动态的。在这种情况下,计算主机不维护单个节点标识,因此不会读取或写入任何标识文件。因此,以下部分都不适用于 compute_driver 设置为 ironic 的主机。
节点标识的自动配置¶
默认情况下,nova-compute 会在首次启动时自动生成并写入 UUID 到磁盘,并将其作为其稳定的标识继续使用。使用 state_path(在大多数系统上为 /var/lib/nova),将创建一个 compute_id 文件,其中包含生成的 UUID。
由于该文件(及其父目录)由 nova 可写,因此将它移动到 nova 查找标识文件的其他位置可能是可取的。
部署配置节点标识¶
除了上述位置外,nova 还会搜索任何正在使用的配置文件(默认值或命令行提供的配置文件)的父目录,以查找 compute_id 文件。因此,部署工具可以在大多数系统上通过将 UUID 写入 /etc/nova/compute_id 来预配置节点的 UUID。
该文件内容应为规范文本表示形式的单个 UUID,不包含任何额外的空格或其他字符。以下命令在大多数 Linux 系统上都适用
$ uuidgen > /etc/nova/compute_id
注意
不要在每次运行部署工具时盲目执行上述命令,因为这将导致每次覆盖 compute_id 文件,这将会阻止 nova 正常工作。
从 2023.1 之前的版本升级¶
在 2023.1 版本发布之前,nova-compute 仅使用 hostname(如果设置了 host,则与 hostname 组合)来标识数据库中的计算节点对象。在从早期版本升级时,计算节点将执行一次性迁移,将 hostname 匹配的计算节点 UUID 迁移到 state_path 位置的 compute_id 文件中。
注意
必须允许上述迁移在正在升级的计算节点上运行并完成。在升级之前预配置 compute_id 文件会跳过此步骤,不会有效,并且等同于在计算节点已经创建一次后更改计算节点 UUID。