20.2. 升级 control plane 节点

要将环境中的 control plane 节点升级到 OpenStack Platform 16.1,您必须一次升级 control plane 节点的 1/3,从 bootstrap 节点开始。

在 bootstrap Controller 节点升级过程中,会创建一个新的 Pacemaker 集群,并在节点上启动新的 Red Hat OpenStack 16.1 容器,而剩余的 Controller 节点将继续在 Red Hat OpenStack 13 上运行。

在本例中,control plane 节点使用默认 overcloud-ROLE-NODEID的形式 命名。这包括带有可组合角色的以下节点类型:

  • overcloud-controller-0
  • overcloud-controller-1
  • overcloud-controller-2
  • overcloud-database-0
  • overcloud-database-1
  • overcloud-database-2
  • overcloud-networker-0
  • overcloud-networker-1
  • overcloud-networker-2
  • overcloud-ceph-0
  • overcloud-ceph-1
  • overcloud-ceph-2

在适用的情况下,将这些值替换为您自己的节点名称。

升级 overcloud-controller-0overcloud-database-0overcloud-networker-0overcloud-ceph-0 bootstrap 节点后,它们组成了 control plane 节点的第一个 1/3,您必须使用 Pacemaker 服务升级每个额外的 1/3 节点,并确保每个节点都加入使用 bootstrap 节点启动的新的 Pacemaker 集群。因此,在升级 overcloud-controller-2, overcloud-database-2, overcloud-networker-2, 和 overcloud-ceph-2 之前,您必须升级 overcloud-controller-1, overcloud-database-1, overcloud-networker-1, 和 overcloud-ceph-1

注意

如果您不使用默认的堆栈名称 overcloud,请使用 --stack STACK NAME 选项来设置堆栈名称,并将 STACK NAME 替换为您的堆栈的名称。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. Source stackrc 文件:

    $ source ~/stackrc
  3. 在 undercloud 节点上,运行以下命令来识别 bootstrap Controller 节点:

    $ tripleo-ansible-inventory --list --stack overcloud |jq .overcloud_Controller.hosts[0]
  4. 升级 overcloud-controller-0overcloud-database-0overcloud-networker-0overcloud-ceph-0 control plane 节点:

    1. 使用 ceph_systemd 标签运行外部升级命令:

      $ openstack overcloud external-upgrade run --stack <stack_name> --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-0,overcloud-database-0,overcloud-networker-0,overcloud-ceph-0

      <stack_name > 替换为您的堆栈的名称。

      这个命令执行以下操作:

      • 更改控制 Ceph Storage 容器的 systemd 单元以使用 Podman 管理。
      • 使用 ceph_ansible_limit 变量将操作限制为所选节点。

      此步骤是为 leapp 升级准备 Ceph Storage 服务的主要措施。

    2. 使用 system_upgrade 标签运行 upgrade 命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-controller-0 &
      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-database-0 &
      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-networker-0 &
      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-ceph-0 &

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。

        重要

        下一个命令会在 control plane 上造成中断。在接下来的几个步骤中,您无法对 overcloud 执行任何标准操作。

    3. 使用 system_upgrade_transfer_data 标签运行外部升级命令:

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags system_upgrade_transfer_data

      此命令将现有节点中的数据库的最新版本复制到 bootstrap 节点。

    4. 使用 nova_hybrid_state 标签运行 upgrade 命令,仅运行 upgrade_steps_playbook.yaml playbook:

      $ openstack overcloud upgrade run --stack STACK NAME --playbook upgrade_steps_playbook.yaml --tags nova_hybrid_state --limit all

      这个命令会在 Compute 节点上启动临时 16.1 容器,以便在稍后的步骤升级 Compute 节点时协助工作负载迁移。

    5. 运行没有标签的 upgrade 命令:

      $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-controller-0,overcloud-database-0,overcloud-networker-0,overcloud-ceph-0 --playbook all

      此命令执行 Red Hat OpenStack Platform 升级。

      重要

      当此命令完成后,control plane 会变为 active。您可以对 overcloud 执行标准操作。

    6. 可选:在 bootstrap Contoller 节点上,验证升级后,新的 Pacemaker 集群是否已启动,以及 galera、rabbit、haproxy 和 redis 等 control plane 服务是否正在运行:

      $ sudo pcs status
  5. 升级 overcloud-controller-1overcloud-database-1overcloud-networker-1overcloud-ceph-1 control plane 节点:

    1. 登录 overcloud-controller-1 节点,并验证旧集群是否不再运行:

      $ sudo pcs status

      当集群没有运行时,会显示类似如下的错误:

      Error: cluster is not currently running on this node
    2. 使用 ceph_systemd 标签运行外部升级命令:

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-1,overcloud-database-1,overcloud-networker-1,overcloud-ceph-1

      这个命令执行以下功能:

      • 更改控制 Ceph Storage 容器的 systemd 单元以使用 Podman 管理。
      • 使用 ceph_ansible_limit 变量将操作限制为所选节点。

      此步骤是为 leapp 升级准备 Ceph Storage 服务的主要措施。

    3. 使用 system_upgrade 标签运行 upgrade 命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-controller-1,overcloud-database-1,overcloud-networker-1,overcloud-ceph-1

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    4. 运行没有标签的 upgrade 命令:

      $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-controller-0,overcloud-controller-1,overcloud-database-0,overcloud-database-1,overcloud-networker-0,overcloud-networker-1,overcloud-ceph-0,overcloud-ceph-1

      此命令执行 Red Hat OpenStack Platform 升级。除了此节点外,在 --limit 选项中包含之前升级的 bootstrap 节点。

  6. 升级 overcloud-controller-2、 overcloud-database- 2、overcloud-networker-2overcloud-ceph-2 control plane 节点:

    1. 登录 overcloud-controller-2 节点,并验证旧集群是否不再运行:

      $ sudo pcs status

      当集群没有运行时,会显示类似如下的错误:

      Error: cluster is not currently running on this node
    2. 使用 ceph_systemd 标签运行外部升级命令:

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-2,overcloud-database-2,overcloud-networker-2,overcloud-ceph-2

      这个命令执行以下功能:

      • 更改控制 Ceph Storage 容器的 systemd 单元以使用 Podman 管理。
      • 使用 ceph_ansible_limit 变量将操作限制为所选节点。

      此步骤是为 leapp 升级准备 Ceph Storage 服务的主要措施。

    3. 使用 system_upgrade 标签运行 upgrade 命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-controller-2,overcloud-database-2,overcloud-networker-2,overcloud-ceph-2

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    4. 运行没有标签的 upgrade 命令:

      $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-controller-0,overcloud-controller-1,overcloud-controller-2,overcloud-database-0,overcloud-database-1,overcloud-database-2,overcloud-networker-0,overcloud-networker-1,overcloud-networker-2,overcloud-ceph-0,overcloud-ceph-1,overcloud-ceph-2

      此命令执行 Red Hat OpenStack Platform 升级。在 --limit 选项中包含所有 control plane 节点。