2.4. 更新 Overcloud 软件包
Overcloud 依赖于标准的 RPM 方法来更新环境。这涉及使用来自 director 的 openstack overcloud 更新在所有节点上执行更新
。
使用 -e
包含与 Overcloud 及其升级路径相关的环境文件。环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源更为优先。以下列表是环境文件顺序的示例:
-
heat 模板集合中
overcloud-resource-registry-puppet.yaml
文件。虽然在运行openstack overcloud deploy
命令时自动包含此文件,但在运行openstack overcloud update
命令时,您必须包含此文件。 -
任何网络隔离文件,包括 heat 模板集合中初始化文件(
environment/network-isolation.yaml
),然后是自定义 NIC 配置文件。 - 任何外部负载平衡环境文件。
- 任何存储环境文件。
- 任何用于红帽 CDN 或 Satellite 注册的环境文件。
- 任何其它自定义环境文件。
在并行的所有节点上运行更新可能会导致问题。例如,软件包更新可能涉及重启服务,这可能会中断其他节点。这就是为什么更新过程使用一组断点更新每个节点。这意味着节点会逐一更新。当一个节点完成软件包更新时,更新过程会进入下一个节点。更新过程还需要使用 -i
选项,该选项会将命令置于交互模式,要求在每个断点上确认。如果没有 the -i
选项,则更新将在第一个断点上保持暂停。
以下是用于更新 Overcloud 的 update 命令示例:
运行这个命令会启动更新过程。在此过程中,director 会报告 IN_PROGRESS
状态,并定期提示您清除断点。例如:
not_started: [u'overcloud-controller-0', u'overcloud-controller-1', u'overcloud-controller-2'] on_breakpoint: [u'overcloud-compute-0'] Breakpoint reached, continue? Regexp or Enter=proceed, no=cancel update, C-c=quit interactive mode:
not_started: [u'overcloud-controller-0', u'overcloud-controller-1', u'overcloud-controller-2']
on_breakpoint: [u'overcloud-compute-0']
Breakpoint reached, continue? Regexp or Enter=proceed, no=cancel update, C-c=quit interactive mode:
按 Enter 从 on_breakpoint
列表中的最后一个节点中清除断点。这将开始对该节点的更新。您还可以键入节点名称来清除特定节点上的断点,或基于 Python 的正则表达式来一次性清除多个节点上的断点。但是,不建议一次在多个控制器节点上清除断点。继续这个过程,直到所有节点都完成其更新。
更新完成后,update 命令会报告 COMPLETE
状态:
如果您为 Controller 节点配置了隔离功能,更新过程可能会禁用它。更新过程完成后,在其中一个 Controller 节点上使用以下命令重新启用隔离:
sudo pcs property set stonith-enabled=true
$ sudo pcs property set stonith-enabled=true
更新过程不会自动重新引导 Overcloud 中的任何节点。如果需要,在更新完成后手动执行重启。