搜索

A.5. Overcloud 采用和准备 DCN 环境

download PDF

您必须执行以下任务才能采用 overcloud:

  • 每个站点都单独升级,一个站点从中央位置开始。
  • 将网络和主机置备配置导出到 overcloud,用于中央位置堆栈。'suggestion:-0+0
  • 定义新容器和其他兼容性配置。

采用后,您必须运行执行以下任务的升级准备脚本:

  • 将 overcloud 计划更新至 OpenStack Platform 17.1
  • 为升级准备节点

有关此升级过程的持续时间和影响的详情,请参阅升级 持续时间和影响

先决条件

  • 所有节点都处于 ACTIVE 状态:

    $ openstack baremetal node list

    如果有任何节点处于 MAINTENANCE 状态,请将它们设置为 ACTIVE

    $ openstack baremetal node maintenance unset <node_uuid>
  • <node_uuid > 替换为节点的 UUID。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 验证 undercloud 升级过程中导出的以下文件是否包含 overcloud 升级的预期配置。您可以在 ~/overcloud-deploy 目录中找到以下文件:

    • tripleo-<stack>-passwords.yaml
    • tripleo-<stack>-network-data.yaml
    • tripleo-<stack>-virtual-ips.yaml
    • tripleo-<stack>-baremetal-deployment.yaml

      注意

      如果在 undercloud 升级后没有生成这些文件,请联系红帽支持。

      重要

      如果您有多单元环境,请参阅 Overcloud 采用多单元环境,例如将文件复制到每个单元堆栈的示例。

  4. 在主堆栈上,将 password .yaml 文件复制到 ~/overcloud-deploy/$(<stack>) 目录。在环境中的每个堆栈中重复此步骤:

    $ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-passwords.yaml ~/overcloud-deploy/<stack>/<stack>-passwords.yaml
    • <stack> 替换为您的堆栈的名称。
  5. 如果您要在中央位置执行准备和采用,请将 network-data.yaml 文件复制到 stack 用户的主目录并部署网络。这只适用于中央位置:

    $ cp /home/stack/overcloud-deploy/central/tripleo-central-network-data.yaml ~/
    $ mkdir /home/stack/overcloud_adopt
    $ openstack overcloud network provision --debug \
    --output /home/stack/overcloud_adopt/generated-networks-deployed.yaml tripleo-central-network-data.yaml

    有关更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的置备和部署 overcloud

  6. 如果您要在中央位置执行准备和采用,请将 virtual-ips.yaml 文件复制到 stack 用户的主目录,并置备网络 VIP。这只适用于中央位置:

    $ cp /home/stack/overcloud-deploy/central/tripleo-central-virtual-ips.yaml ~/
    $ openstack overcloud network vip provision --debug \
    --stack <stack> --output \
    /home/stack/overcloud_adopt/generated-vip-deployed.yaml tripleo-central-virtual-ips.yaml
  7. 在主堆栈上,将 baremetal-deployment.yaml 文件复制到 stack 用户的主目录,并置备 overcloud 节点。在环境中的每个堆栈中重复此步骤:

    $ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-baremetal-deployment.yaml ~/
    $ openstack overcloud node provision --debug --stack <stack> \
    --output /home/stack/overcloud_adopt/baremetal-central-deployment.yaml \
    tripleo-<stack>-baremetal-deployment.yaml
    注意

    这是 overcloud 采用的最后一步。如果您的 overcloud 采用用 10 分钟的时间完成,请联系红帽支持。

  8. 完成以下步骤以准备容器:

    1. 备份用于 undercloud 升级的 containers-prepare-parameter.yaml 文件:

      $ cp containers-prepare-parameter.yaml \
      containers-prepare-parameter.yaml.orig
    2. 在运行脚本以更新 containers-prepare-parameter.yaml 文件前,定义以下环境变量:

      • NAMESPACE: UBI9 镜像的命名空间。例如,NAMESPACE='"namespace":"example.redhat.com:5002",'
      • EL8_NAMESPACE :UBI8 镜像的命名空间。
      • NEUTRON_DRIVER :要使用的驱动程序,并确定要使用的 OpenStack Networking (neutron)容器。设置为用于部署原始堆栈的容器类型。例如,设置为 NEUTRON_DRIVER='"neutron_driver":"ovn",' 以使用基于 OVN 的容器。
      • EL8_TAGS :UBI8 镜像的标签,如 EL8_TAGS='"tag":"17.1",'

        • "17. 1" 替换为您在内容视图中使用的标签。
      • EL9_TAGS :UBI9 镜像的标签,如 EL9_TAGS='"tag":"17.1",'

      • CONTROL_PLANE_ROLES :使用 --role 选项的 control plane 角色列表,如 --role ControllerOpenstack, --role Database, --role Messaging, --role Networker, --role CephStorage。要查看环境中的 control plane 角色列表,请运行以下命令:

        $ export STACK=<stack> \
        $ sudo awk '/tripleo_role_name/ {print "--role " $2}' \
        /var/lib/mistral/${STACK}/tripleo-ansible-inventory.yaml \
        | grep -vi compute
        • <stack> 替换为您的堆栈的名称。
      • COMPUTE_ROLES :使用 --role 选项的 Compute 角色列表,如 --Compute-1。要查看环境中的 Compute 角色列表,请运行以下命令:

        $ sudo awk '/tripleo_role_name/ {print "--role " $2}' \
        /var/lib/mistral/${STACK}/tripleo-ansible-inventory.yaml \
        | grep -i compute
      • CEPH_OVERRIDE :如果您部署 Red Hat Ceph Storage,请指定 Red Hat Ceph Storage 5 容器镜像。例如:

        CEPH_OVERRIDE='"ceph_image":"rhceph-5-rhel8","ceph_tag":"<latest>",'

        • <latest > 替换为最新的 ceph_tag 版本,如 5-499

          以下是 containers-prepare-parameter.yaml 文件配置示例:

          NAMESPACE='"namespace":"registry.redhat.io/rhosp-rhel9",'
          EL8_NAMESPACE='"namespace":"registry.redhat.io/rhosp-rhel8",'
          NEUTRON_DRIVER='"neutron_driver":"ovn",'
          EL8_TAGS='"tag":"17.1",'
          EL9_TAGS='"tag":"17.1",'
          CONTROL_PLANE_ROLES="--role Controller"
          COMPUTE_ROLES="--role Compute"
          CEPH_TAGS='"ceph_tag":"5",'
    3. 运行以下脚本以更新 containers-prepare-parameter.yaml 文件:

      警告

      如果您部署了 Red Hat Ceph Storage,请确保在执行以下命令前将 CEPH_OVERRIDE 环境变量设置为正确的值。如果不这样做,会导致升级 Red Hat Ceph Storage 时出现问题。

      $ python3 /usr/share/openstack-tripleo-heat-templates/tools/multi-rhel-container-image-prepare.py \
           ${COMPUTE_ROLES} \
           ${CONTROL_PLANE_ROLES} \
           --enable-multi-rhel \
           --excludes collectd \
           --excludes nova-libvirt \
           --minor-override "{${EL8_TAGS}${EL8_NAMESPACE}${CEPH_OVERRIDE}${NEUTRON_DRIVER}\"no_tag\":\"not_used\"}" \
           --major-override "{${EL9_TAGS}${NAMESPACE}${CEPH_OVERRIDE}${NEUTRON_DRIVER}\"no_tag\":\"not_used\"}" \
           --output-env-file \
          /home/stack/containers-prepare-parameter.yaml

      multi-rhel-container-image-prepare.py 脚本支持以下参数:

      --output-env-file
      编写包含默认 ContainerImagePrepare 值的环境文件。
      --local-push-destination
      触发上传到本地 registry 的上传。
      --enable-registry-login
      启用允许系统在拉取容器前尝试登录到远程 registry 的标记。当没有使用 --local-push-destination 且目标系统有到远程 registry 的网络连接时,请使用此标志。不要将这个标志用于可能没有到远程 registry 的网络连接的 overcloud。
      --enable-multi-rhel
      启用多rhel。
      --excludes
      列出要排除的服务。
      --major-override
      列出主发行版本的覆盖参数。
      --minor-override
      列出次发行版本的覆盖参数。
      --role
      角色列表。
      --role-file
      role_data.yaml 文件。
    4. 如果您部署了 Red Hat Ceph Storage,请打开 containers-prepare-parameter.yaml 文件,以确认指定了 Red Hat Ceph Storage 5 容器镜像,且没有引用 Red Hat Ceph Storage 6 容器镜像。
  9. 如果您有 director 部署的 Red Hat Ceph Storage 部署,请创建一个名为 ceph_params.yaml 的文件,并包含以下内容:

    parameter_defaults:
      CephSpecFqdn: true
      CephConfigPath: "/etc/ceph"
      CephAnsibleRepo: "rhceph-5-tools-for-rhel-8-x86_64-rpms"
      DeployedCeph: true
    重要

    在 RHOSP 升级完成后不要删除 ceph_params.yaml 文件。此文件必须存在于 director 部署的 Red Hat Ceph Storage 环境中。此外,每次运行 openstack overcloud deploy 时,都必须包含 ceph_params.yaml 文件,例如 -e ceph_params.yaml

    注意

    如果您的 Red Hat Ceph Storage 部署包含短名称,您必须将 CephSpecFqdn 参数设置为 false。如果设置为 true,则清单会生成一个短名称和域名,从而导致 Red Hat Ceph Storage 升级失败。

  10. 在 templates 目录中创建一个名为 upgrade-environment.yaml 的环境文件,并包含以下内容:

    parameter_defaults:
      ExtraConfig:
        nova::workarounds::disable_compute_service_check_for_ffu: true
      DnsServers: ["<dns_servers>"]
      DockerInsecureRegistryAddress: <undercloud_FQDN>
      UpgradeInitCommand: |
        sudo subscription-manager repos --disable=*
          if $( grep -q  9.2  /etc/os-release )
          then
            sudo subscription-manager repos --enable=rhel-9-for-x86_64-baseos-eus-rpms --enable=rhel-9-for-x86_64-appstream-eus-rpms --enable=rhel-9-for-x86_64-highavailability-eus-rpms --enable=openstack-17.1-for-rhel-9-x86_64-rpms --enable=fast-datapath-for-rhel-9-x86_64-rpms
            sudo podman ps | grep -q ceph && subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
            sudo subscription-manager release --set=9.2
          else
            sudo subscription-manager repos --enable=rhel-8-for-x86_64-baseos-tus-rpms --enable=rhel-8-for-x86_64-appstream-tus-rpms --enable=rhel-8-for-x86_64-highavailability-tus-rpms --enable=openstack-17.1-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms
            sudo podman ps | grep -q ceph && subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms
            sudo subscription-manager release --set=8.4
          fi
    
          if $(sudo podman ps | grep -q ceph )
          then
            sudo dnf -y install cephadm
          fi
    • <dns_servers> 替换为 DNS 服务器 IP 地址的逗号分隔列表,例如 ["10.0.0.36", "10.0.0.37"]
    • <undercloud_FQDN > 替换为 undercloud 主机的完全限定域名(FQDN),例如 "undercloud-0.ctlplane.redhat.local:8787"

      有关您可以在环境文件中配置的升级参数的更多信息,请参阅升级 参数

  11. 如果要在边缘位置执行准备和采用,请将 AuthCloudName 参数设置为中央位置的名称:

    parameter_defaults:
      AuthCloudName: central
  12. 如果部署了多个镜像服务(glance)存储,请将 copy-image 的镜像服务 API 策略设置为允许所有规则:

    parameter_defaults:
        GlanceApiPolicies: {glance-copy_image: {key 'copy-image', value: ""}}
  13. 在 undercloud 上,在 templates 目录中创建一个名为 overcloud_upgrade_prepare.sh 的文件。

    • 您必须为环境中的每个堆栈创建此文件。此文件包含 overcloud 部署文件的原始内容,以及与您的环境相关的环境文件。
    • 如果您要为 DCN 边缘位置创建 overcloud_upgrade_prepare.sh,您必须包含以下模板:

      • 包含导出的中央站点参数的环境模板。您可以在 /home/stack/overcloud-deploy/centra/central-export.yaml 中找到此文件。
      • generated-networks-deployed.yaml,生成的文件来自在中央位置运行 openstack overcloud network provision 命令。
      • generated-vip-deployed.yaml,从在中央位置运行 openstack overcloud network vip provision 命令的结果文件。+ 例如:

        #!/bin/bash
        openstack overcloud upgrade prepare --yes \
          --timeout 460 \
          --templates /usr/share/openstack-tripleo-heat-templates \
          --ntp-server 192.168.24.1 \
          --stack <stack> \
          -r /home/stack/roles_data.yaml \
          -e /home/stack/templates/internal.yaml \
          -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \
          -e /home/stack/templates/network/network-environment.yaml \
          -e /home/stack/templates/inject-trust-anchor.yaml \
          -e /home/stack/templates/hostnames.yml \
          -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
          -e /home/stack/templates/nodes_data.yaml \
          -e /home/stack/templates/debug.yaml \
          -e /home/stack/templates/firstboot.yaml \
          -e /home/stack/templates/upgrades-environment.yaml \
          -e /home/stack/overcloud-params.yaml \
          -e /home/stack/overcloud-deploy/<stack>/overcloud-network-environment.yaml \
          -e /home/stack/overcloud-adopt/<stack>-passwords.yaml \
          -e /home/stack/overcloud_adopt/<stack>-baremetal-deployment.yaml \
          -e /home/stack/overcloud_adopt/generated-networks-deployed.yaml \
          -e /home/stack/overcloud_adopt/generated-vip-deployed.yaml \
          -e /usr/share/openstack-tripleo-heat-templates/environments/nova-hw-machine-type-upgrade.yaml \
          -e /home/stack/skip_rhel_release.yaml \
          -e ~/containers-prepare-parameter.yaml
        注意

        如果您有多单元环境,请参阅 Overcloud 采用多单元环境,例如,为每个单元堆栈创建 overcloud_upgrade_prepare.sh 文件。

        1. 在原始 network-environment.yaml 文件中(/home/stack/templates/network/network-environment.yaml),删除所有指向 OS::TripleO::*::Net::SoftwareConfig 的 resource_registry 资源。
        2. overcloud_upgrade_prepare.sh 文件中,包含与您的环境相关的以下选项:
      • 环境文件 (upgrades-environment.yaml) 带有特定于升级的参数 (-e)。
      • 包含新容器镜像位置(-e)的环境文件(containers-prepare-parameter.yaml)。在大多数情况下,这是 undercloud 使用的环境文件。
      • 环境文件(skip_rhel_release.yaml),带有发行版本参数(-e)。
      • 与您的部署相关的任何自定义配置文件(-e)。
      • 如果适用,使用 --roles-file 的自定义角色(roles_data)文件。
      • 对于 Ceph 部署,环境文件(ceph_params.yaml)以及 Ceph 参数(-e)。
      • 在 overcloud 采用过程中生成的文件(network-deployed.yaml,vip-deployed.yaml,baremetal-deployment.yaml) (-e)。
      • 如果适用,带有您的 IPA 服务(-e)的环境文件(ipa-environment.yaml)。
      • 如果您使用可组合网络,则使用 --network-file 的(network_data)文件。

        注意

        不要在 overcloud 部署文件或 overcloud_upgrade_prepare.sh 文件中包括 network-isolation.yaml 文件。网络隔离在 network_data.yaml 文件中定义。

      • 如果使用自定义堆栈名称,请使用 --stack 选项传递名称。

        注意

        您必须在模板中包含 nova-hw-machine-type-upgrade.yaml 文件,直到所有 RHEL 8 Compute 节点都升级到环境中的 RHEL 9。如果排除了此文件,则 /var/log/containers/nova 目录中的 nova_compute.log 中会出现一个错误。将所有 RHEL 8 Compute 节点升级到 RHEL 9 后,您可以从配置中删除此文件并更新堆栈。

        1. 在 director 部署的 Red Hat Ceph Storage 用例中,如果您在您要升级的部署中通过 NFS 启用共享文件系统服务(manila),您必须在 overcloud_upgrade_prepare.sh 脚本文件末尾指定额外的环境文件。您必须在脚本末尾添加环境文件,因为它会覆盖之前在脚本中指定的另一个环境文件:

          -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/manila-cephfsganesha-config.yaml
        2. 在外部 Red Hat Ceph Storage 用例中,如果您在您要升级的部署中通过 NFS 启用共享文件系统服务(manila),您必须检查 overcloud_upgrade_prepare.sh 脚本中的关联环境文件是否指向 tripleo-based ceph-nfs 角色。如果存在,请删除以下环境文件:

          -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/manila-cephfsganesha-config.yaml

          并添加以下环境文件:

          -e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml
  14. 为环境中的每个堆栈运行升级准备脚本:

    $ source stackrc
    $ chmod 755 /home/stack/overcloud_upgrade_prepare.sh
    $ sh /home/stack/overcloud_upgrade_prepare.sh
    注意

    如果您有多单元环境,您必须为每个为每个单元堆栈创建的 overcloud_upgrade_prepare.sh 文件运行脚本。例如,请参阅 Overcloud 对多单元环境采用

  15. 等待升级准备完成。
  16. 下载容器镜像:

    $ openstack overcloud external-upgrade run --stack <stack> --tags container_image_prepare
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.