Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
2.6. 为 OpenStack Platform 10.z 更新当前的 overcloud 软件包
director 提供了 命令来更新所有 overcloud 节点上的软件包。这样,您可以在当前版本的 OpenStack Platform 环境中执行次要更新。这是 Red Hat OpenStack Platform 10 中的小更新。
此步骤还将 overcloud 节点的操作系统更新至 Red Hat Enterprise Linux 7 和 Open vSwitch 的最新版本 2.9。
前提条件
- 您已更新到当前 undercloud 版本的最新次版本。
- 您已执行了 overcloud 的备份。
流程
检查
rhel_reg_release
参数的订阅管理配置。如果没有设置此参数,您必须包括它并设置 7.7:parameter_defaults: ... rhel_reg_release: "7.7"
确保保存对 overcloud 订阅管理环境文件的更改。
使用您的原始
openstack overcloud deploy
命令更新当前计划,并包含--update-plan-only
选项。例如:$ openstack overcloud deploy --update-plan-only \ --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /home/stack/templates/network-environment.yaml \ -e /home/stack/templates/storage-environment.yaml \ -e /home/stack/templates/rhel-registration/environment-rhel-registration.yaml \ [-e <environment_file>|...]
--update-plan-only
仅更新存储在 director 中的 Overcloud 计划。使用-e
选项包括与 Overcloud 相关的环境文件及其更新路径。环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源更为优先。以下列表是环境文件顺序的示例:-
任何网络隔离文件,包括 heat 模板集合中的初始化文件(
environments/network-isolation.yaml
),然后是自定义 NIC 配置文件。 - 任何外部负载均衡环境文件。
- 任何存储环境文件。
- 任何用于红帽 CDN 或 Satellite 注册的环境文件。
- 任何其它自定义环境文件。
-
任何网络隔离文件,包括 heat 模板集合中的初始化文件(
创建 overcloud 的静态清单文件:
$ tripleo-ansible-inventory --ansible_ssh_user heat-admin --static-yaml-inventory ~/inventory.yaml
如果您使用不同于
overcloud
的默认 overcloud 名称,请使用--plan
选项来设置 overcloud 的名称。创建一个包含在所有节点上将操作系统版本设置为 Red Hat Enterprise Linux 7.7 的任务:
$ cat > ~/set_release.yaml <<'EOF' - hosts: all gather_facts: false tasks: - name: set release to 7.7 command: subscription-manager release --set=7.7 become: true EOF
运行 set_release.yaml playbook:
$ ansible-playbook -i ~/inventory.yaml -f 25 ~/set_release.yaml --limit undercloud,Controller,Compute
使用
--limit
选项,将内容应用到所有 Red Hat OpenStack Platform 节点。使用
openstack overcloud update
命令在所有节点上执行软件包更新:$ openstack overcloud update stack -i overcloud
-i
运行一个互动模式来按顺序更新每个节点。更新过程完成后,脚本会为您提供一个断点进行确认。如果没有-i
选项,更新会在第一个断点保持暂停。因此,必须包括-i
选项。脚本执行以下功能:
该脚本在一对一节点上运行:
- 对于 Controller 节点,这意味着完全软件包更新。
- 对于其他节点,这意味着仅更新 Puppet 模块。
Puppet 同时在所有节点上运行:
- 对于 Controller 节点,Puppet 运行会同步配置。
- 对于其他节点,Puppet 运行会更新软件包的其余部分并同步配置。
更新过程开始。在此过程中,director 报告
IN_PROGRESS
状态,并定期提示您清除断点。例如:starting package update on stack overcloud IN_PROGRESS IN_PROGRESS WAITING on_breakpoint: [u'overcloud-compute-0', u'overcloud-controller-2', u'overcloud-controller-1', u'overcloud-controller-0'] Breakpoint reached, continue? Regexp or Enter=proceed (will clear 49913767-e2dd-4772-b648-81e198f5ed00), no=cancel update, C-c=quit interactive mode:
按 Enter 清除
on_breakpoint
列表中的最后一个节点中的断点。这将开始该节点的更新。这个脚本会自动预定义节点的更新顺序:
- 每个 Controller 节点单独
- 每个单独 Compute 节点
- 每个 Ceph Storage 节点
- 所有其他节点单独
建议您使用这个顺序来确保更新成功,特别是:
- 单独清除每个 Controller 节点的断点。如果节点的服务在更新后必须重启,则每个 Controller 节点都需要一个单独的软件包更新。这可减少到其他 Controller 节点上高可用性服务的中断。
- 在 Controller 节点更新后,清除每个 Compute 节点的断点。您还可以键入 Compute 节点名称来清除特定节点上的断点,或使用基于 Python 的正则表达式来一次性在多个 Compute 节点上清除断点。
- 清除每个 Ceph Storage 节点的断点。您还可以键入 Ceph Storage 节点名称来清除特定节点上的断点,或使用基于 Python 的正则表达式来一次性清除多个 Ceph Storage 节点上的断点。
- 清除所有剩余的断点以更新剩余的节点。您还可以键入节点名称来清除特定节点上的断点,或使用基于 Python 的正则表达式来一次性在多个节点上清除断点。
- 等待所有节点完成其更新。
更新命令会在更新完成后报告
COMPLETE
状态:... IN_PROGRESS IN_PROGRESS IN_PROGRESS COMPLETE update finished with status COMPLETE
如果您为 Controller 节点配置了隔离功能,更新过程可能会禁用它。更新过程完成后,在其中一个 Controller 节点上使用以下命令重新启用隔离:
$ sudo pcs property set stonith-enabled=true
更新过程不会自动重启 Overcloud 中的任何节点。内核和其他系统软件包的更新需要重启。检查每个节点上的 /var/log/yum.log
文件,以查看 内核或
openvswitch
软件包是否已更新其主版本或次版本。如果存在,请按照以下流程重新引导每个节点。