10.4. 升级 Overcloud
重要
在执行以下操作前,请阅读 第 10.1 节 “升级前需要注意的信息” 中的信息。
重要
如需了解有关对这个过程中可能出现的问题进行故障排除的信息,请参阅 第 11.4 节 “对升级过程中出现的故障进行排除”。
本节包括了升级 Overcloud 所需的步骤。请按照这里介绍的顺序执行与您的系统相关的操作。
这个过程需要您多次运行
openstack overcloud deploy
命令来使升级过程以阶段的形式进行。在每次运行这个命令时,会包括不同的升级环境文件,以及已存在的环境文件。这些新的升级环境文件是:
major-upgrade-pacemaker-init.yaml
- 提供对升级的初始化功能。这包括在 Overcloud 的每个节点上更新 Red Hat OpenStack Platform 软件存储库,并为特定节点提供特殊的升级脚本。major-upgrade-pacemaker.yaml
- 对 Controller 节点进行升级。major-upgrade-pacemaker-converge.yaml
- Overcloud 升级的结束工作。
在这些部署命令之间,您可以在不同节点类型中运行
upgrade-non-controller.sh
脚本。这个脚本会在一个节点上更新软件包。
使用以下步骤升级 Overcloud:
- 首先,从 Undercloud 中运行
openstack overcloud deploy
,并包括major-upgrade-pacemaker-init.yaml
环境文件。确保还包括了与您的环境相关的所有定制环境文件,如网络分离和存储。重要
如果 Red Hat OpenStack Platform 7 使用定制的 NIC 模板,把ManagementSubnetIp
参数添加到您的 NIC 模板的parameters
部分。例如:parameters: ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network type: string
以下是一个相关的openstack overcloud deploy
命令示例:$ openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \ -e network_env.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-pacemaker-init.yaml
等待 Overcloud 使用新的环境文件配置进行更新已完成。 - director 包括了升级一个非 Controller 节点的脚本。首先,升级每个 Swift 节点:
$ nova list $ upgrade-non-controller.sh --upgrade [swift-uuid]
- 升级 Controller 节点。这涉及到包括另外一个环境文件(
major-upgrade-pacemaker.yaml
),它提供了对运行高可用性工具程序的 Controller 节点的升级。重新运行openstack overcloud deploy
来使用这个环境文件。确保还包括了与您的环境相关的所有定制环境文件,如网络分离和存储。$ openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \ -e network_env.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-pacemaker.yaml
等待 Overcloud 使用新的环境文件配置进行更新已完成。重要
这一步会在 Controller 升级过程中禁用 Neutron 服务器和 L3 Agent。这意味着,在执行这一步的过程中,浮动 IP 地址无效。重要
如果 Overcloud 栈在这一步中出现问题,登录到一个 Controller 节点上,运行sudo pcs cluster start
,然后在 director 上重新运行openstack overcloud deploy
。 - 升级每个 Compute 节点。升级 Compute 节点也会使用
upgrade-non-controller.sh
脚本。但是,为了避免下线时间,我们建议禁止 Compute 节点运行新的虚拟机,并把已存在的虚拟机迁移到其它 Compute 节点上。如需更详细的信息,请参阅 第 8.9 节 “从一个 Overcloud Compute 节点中迁移虚拟机”。迁移完成后,运行升级命令:$ nova list $ upgrade-non-controller.sh --upgrade [compute-uuid]
升级完成后,使用以下命令重新启用 Compute 节点:$ nova list $ nova service-enable [hostname] nova-compute
- 升级每个 Ceph Storage 节点:
$ nova list $ upgrade-non-controller.sh --upgrade [ceph-uuid]
- 运行最终的升级命令。这需要在
openstack overcloud deploy
命令中包括另外一个环境文件(major-upgrade-pacemaker-converge.yaml
)。确保还包括了与您的环境相关的所有定制环境文件,如网络分离和存储。例如:$ openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \ -e network_env.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-pacemaker-converge.yaml
等待 Overcloud 使用新的环境文件配置进行更新已完成。
Overcloud 升级过程已完成。
当把 Overcloud 升级到 Red Hat OpenStack Platform 8 后,请注意以下问题:
- Compute 节点可能会报告一个带有
neutron-openvswitch-agent
的错误。如果发生了这种情况,登录到每个 Compute 节点并重启服务。例如:$ sudo systemctl restart neutron-openvswitch-agent
- 更新过程不会在 Overcloud 中自动重启任何节点。如果需要,在更新命令完成后手工进行重启。请确认单独重新引导了基于机器的节点(如 Ceph Storage 节点和 Controller 节点),并等待节点重新加入到集群中。对于 Ceph Storage 节点,使用
ceph health
进行检查,确保集群的状态为HEALTH OK
。对于 Controller 节点,使用pcs resource
进行检查,确保所有资源已为每个节点运行。 - 在某些情况下,重启 Controller 节点后,
Corosync
可能会在 IPv6 环境中启动失败。这是因为,Corosync 会在 Controller 节点配置静态 IPv6 地址前启动。如果出现这个问题,在 Controller 节点上手工重启 Corosync:$ sudo systemctl restart corosync
- 如果您在 Controller 节点上配置了隔离(fencing)功能,更新的过程可能会禁用它。当更新完成后,在一个 Controller 节点上重新启用隔离功能:
$ sudo pcs property set stonith-enabled=true
- 在下一次更新或扩展 Overcloud 栈时(例如,运行
openstack overcloud deploy
命令),您需要重新设置在 Overcloud 中触发软件包更新的标识符。在一个环境文件中添加一个空的UpdateIdentifier
参数,并在运行openstack overcloud deploy
命令时包括它。以下是这样一个环境文件的示例:parameter_defaults: UpdateIdentifier: