Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

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:
  1. 首先,从 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 使用新的环境文件配置进行更新已完成。
  2. director 包括了升级一个非 Controller 节点的脚本。首先,升级每个 Swift 节点:
    $ nova list
    $ upgrade-non-controller.sh --upgrade [swift-uuid]
    
  3. 升级 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
  4. 升级每个 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
    
  5. 升级每个 Ceph Storage 节点:
    $ nova list
    $ upgrade-non-controller.sh --upgrade [ceph-uuid]
    
  6. 运行最终的升级命令。这需要在 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: