主机维护策略

https://blueprints.launchpad.net/watcher/+spec/cluster-maintaining

问题描述

有时我们需要维护计算节点,更新硬件或软件等,而不会中断用户的应用程序。

用例

作为 OpenStack 操作员,有时我希望维护一个计算节点,而不会中断用户的应用程序。

提议的变更

将会有关于集群维护的新目标和策略。

  • 添加一个新的目标 - “集群维护”

  • 为该目标添加一个新的策略 - “主机维护”

新的策略执行如下

  • 首先,获取需要维护的计算节点。此输入参数由管理员提供。调用 change_nova_service_state 操作,将维护节点设置为“维护中”状态(使用 disable_reason ‘watcher_maintaining’ 禁用)。

  • 然后,调用 migrate 操作,将维护节点上的所有实例迁移到其他节点。迁移活动实例使用“live-migrate”,其他实例使用“cold-migrate”。计算节点的空闲 CPU/内存/磁盘,以确定一个实例或维护节点上的所有实例是否可以迁移到。该策略仅考虑如何迁移维护节点上的所有实例,进一步的优化依赖于其他策略。有两种方法可以迁移维护节点上的实例:方法一,将维护节点上的所有实例集中迁移到一个未使用的主机。‘未使用’主机对 Watcher 而言是指禁用但未关机的节点。如果有多个“未使用”主机,则从中随机选择一个。(此方法不会导致其他主机之间发生更多 VM 迁移。)方法二,将维护节点上的所有实例分散迁移到其他节点。方法一优先级更高。只有当方法一失败时,才会执行方法二。如果两种方法都失败,则审计失败并引发异常,不产生解决方案。

维护完成后,管理员需要通过 cli ‘nova service-enable’ 激活维护节点,将节点的状态从“维护中”手动更改为“启用”,这将使计算节点重新加入到计算资源中。

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人:sue

工作项

  • 添加集群_维护的策略和目标

  • 更新 change_nova_service_state 操作,使其能够维护一个计算节点。

依赖项

https://blueprints.launchpad.net/watcher/+spec/extend-node-status

测试

单元测试

文档影响

一份解释如何使用这个新的优化策略的文档。

参考资料

历史