director 的安装和使用
使用 Red Hat OpenStack Platform director 创建 OpenStack 云环境
摘要
第 1 章 director 简介 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP) director是一个安装和管理完整的 RHOSP 环境的工具组。director 主要基于 OpenStack 项目 TripleO。您可以使用 director 安装全面运行、精益且稳定的 RHOSP 环境,该环境可置备和控制裸机系统以用作 OpenStack 节点。
director 使用两个主要概念:undercloud 和 overcloud。首先,您要安装 undercloud,然后使用 undercloud 作为安装和配置 overcloud 的工具。
1.1. 了解 undercloud 复制链接链接已复制到粘贴板!
undercloud 是包含 Red Hat OpenStack Platform director 工具组的主要管理节点。它是一个单一系统的 OpenStack 安装,包括置备和管理组成 OpenStack 环境 (overcloud) 的 OpenStack 节点的组件。组成 undercloud 的组件具有多个功能:
- 环境规划
- undercloud 包括用户可用于创建和分配某些节点角色的规划功能。undercloud 包括一组可分配给特定节点的默认节点角色:计算 (Compute)、控制器 (Controller) 和各种存储角色。您也可以设计自定义角色。此外,您还可以选择每个节点角色包括哪些 Red Hat OpenStack Platform 服务。这提供了对新节点类型建模,或把特定组件隔离在其自己的主机中的方法。
- 裸机系统控制
- undercloud 使用每个节点的带外管理接口(通常是智能平台管理接口 (IPMI))进行电源管理控制,使用基于 PXE 的服务发现硬件属性并在每个节点上安装 OpenStack。您可以使用此功能将裸机系统置备为 OpenStack 节点。有关电源管理驱动程序的完整列表,请参阅 第 30 章 电源管理驱动。
- 编配
- undercloud 包含一组 YAML 模板,这些模板代表您环境中的一系列计划。undercloud 导入这些计划,并根据其中的指示创建所需的 OpenStack 环境。这些计划还可以包括 hook。通过使用 hook,可以在环境创建过程中的特定点上融入您自己的自定义设置。
- undercloud 组件
undercloud 使用 OpenStack 组件作为它的基本工具组。每个组件都在 undercloud 中的一个独立容器内运行:
- OpenStack Identity (keystone) - 提供 director 组件的验证和授权功能。
- OpenStack Bare Metal (ironic)- 管理裸机节点。
- OpenStack Networking (neutron) 和 Open vSwitch - 控制裸机节点的网络。
- OpenStack Orchestration (Ephemeral Heat)- 在 director 把 overcloud 镜像写入磁盘后提供节点的编配。
1.2. 了解 overcloud 复制链接链接已复制到粘贴板!
overcloud 是 undercloud 创建的 Red Hat OpenStack Platform (RHOSP) 环境。overcloud 包括多个具有不同角色的节点,这些角色是基于您要创建的 OpenStack Platform 环境定义的。undercloud 包括一组默认的 overcloud 节点角色:
- Controller
Controller 节点为 OpenStack 环境提供管理、网络和高可用性功能。建议的 OpenStack 环境是在一个高可用性集群中包含三个 Controller 节点。
一个默认 Controller(控制器)节点角色支持以下组件。不是所有这些服务都默认启用。其中一些组件需要自定义或者预打包环境文件才能启用:
- OpenStack Dashboard (horizon)
- OpenStack Identity (keystone)
- OpenStack Compute (nova) API
- OpenStack Networking (neutron)
- OpenStack Image Service (glance)
- OpenStack Block Storage (cinder)
- OpenStack Object Storage (swift)
- OpenStack Orchestration (heat)
- OpenStack Shared File Systems (manila)
- OpenStack Bare Metal (ironic)
- OpenStack Load Balancing-as-a-Service (octavia)
- OpenStack Key Manager (barbican)
- MariaDB
- Open vSwitch
- 高可用性服务的 Pacemaker 和 Galera。
- 计算
Compute 节点为 OpenStack 环境提供计算资源。随着时间的推移,可以通过添加更多节点来扩展您的环境。一个默认 Compute (计算)节点包括以下组件:
- OpenStack Compute (nova)
- KVM/QEMU
- Open vSwitch
- 存储
存储节点为 OpenStack 环境提供存储。以下列表包含有关 RHOSP 中存储节点的各种类型的信息:
- Ceph Storage 节点 - 用来组成存储集群。每个节点包含一个 Ceph Object Storage Daemon (OSD)。此外,当您部署 Ceph Storage 节点作为环境一部分时,director 将 Ceph Monitor 安装到 Controller 节点上。
Block storage (cinder) - 用作高可用性 Controller 节点的外部块存储。这类节点包括以下组件:
- OpenStack Block Storage (cinder) 卷
- OpenStack Telemetry 代理
- Open vSwitch.
Object Storage (swift) - 这些节点为 OpenStack Swift 提供了一个外部存储层。Controller 节点通过 Swift 代理访问对象存储节点。对象存储节点包含以下组件:
- OpenStack Object Storage (swift) 存储
- OpenStack Telemetry 代理
- Open vSwitch.
1.3. 了解 Red Hat OpenStack Platform 中的高可用性 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform(RHOSP)director 使用 Controller 节点集群向 OpenStack Platform 环境提供高可用性服务。对于每个服务,director 在所有 Controller 节点上安装相同的组件,并作为单个服务一起管理这些 Controller 节点。在单个 Controller 节点上出现运行故障时,这种集群配置提供回退(fallback)机制。这可以使 OpenStack 用户实现某种程度的不中断运行。
OpenStack Platform director 使用以下软件来管理 Controller 节点上的组件:
- Pacemaker - Pacemaker 是集群资源管理器。Pacemaker 管理和监控集群中所有节点上的 OpenStack 组件的可用性。
- HA Proxy(HA 代理) - 为集群提供负载均衡和代理服务。
- Galera - 在集群中复制 RHOSP 数据库。
- Memcached - 提供数据库缓存服务。
- 自版本 13 起,您可以使用 director 部署计算实例的高可用性 (Instance HA)。使用 Instance HA,当 Compute 节点出现故障时,可以自动清空该 Compute 节点上的实例。
1.4. 了解 Red Hat OpenStack Platform 中的容器化 复制链接链接已复制到粘贴板!
undercloud 和 overcloud 上的各个 OpenStack Platform 服务在对应节点的单独 Linux 容器内运行。这种容器化提供了一种隔离服务、维护环境和升级 Red Hat OpenStack Platform (RHOSP) 的方法。
Red Hat OpenStack Platform 17.0 支持在 Red Hat Enterprise Linux 9.0 操作系统上安装。Red Hat OpenStack Platform 之前使用 Docker 来管理容器化。OpenStack Platform 17.0 使用这些工具进行 OpenStack Platform 部署和升级。
- Podman
Pod Manager (Podman) 是容器管理工具。它几乎实现所有 Docker CLI 命令,但不包括与 Docker Swarm 相关的命令。Podman 管理 pod、容器和容器镜像。Podman 可以在后台没有运行守护进程的情况下管理资源。
有关 Podman 的更多信息,请访问 Podman 网站。
- Buildah
Buildah 专门构建您与 Podman 一起使用的 Open Containers Initiative (OCI) 镜像。Buildah 命令复制 Dockerfile 的内容。Buildah 还提供一个较低级别的
coreutils接口以构建容器镜像,因此您无需 Dockerfile 即可构建容器。Buildah 还使用其他脚本语言在无需守护进程的情况下构建容器镜像。有关 Buildah 的更多信息,请访问 Buildah 网站。
- Skopeo
- Skopeo 使操作员能够检查远程容器镜像,帮助 director 在拉取镜像时收集数据。其他功能包括在 registry 间复制容器镜像,以及从 registry 中删除镜像。
红帽支持使用以下方式为您的 overcloud 管理容器镜像:
-
将容器镜像从 Red Hat Container Catalog 拉取到 undercloud 上的
image-serveregistry,然后从image-serveregistry 拉取镜像。当您首先将镜像拉取到 undercloud 时,要避免多个 overcloud 节点同时通过外部连接拉取容器镜像。 - 从 Satellite 6 服务器拉取容器镜像。您可以直接从 Satellite 拉取这些镜像,因为网络流量是内部流量。
本指南包含有关配置容器镜像 registry 的详细信息和执行基本容器操作的信息。
1.5. 在 Red Hat OpenStack Platform 中使用 Ceph Storage 复制链接链接已复制到粘贴板!
对于使用 Red Hat OpenStack Platform (RHOSP) 为成千上万的客户端提供服务的大型机构来说,这很常见。每个 OpenStack 客户端在消耗块存储资源时可能会有自己的独特需求。在单个节点上部署 glance(镜像)、cinder(卷)和 nova(计算)可能无法管理具有数千客户端的大型部署。在外部扩展 OpenStack 可解决此问题。
但是,在实际的环境中,仍然需要一个存储层的虚拟化解决方案(如 Red Hat Ceph Storage)来扩展 RHOSP 的存储层,使它可以支持 terabyte、petabyte 甚至 exabyte 数量级的存储要求。Red Hat Ceph Storage 提供了这样一个存储虚拟化层,在商用硬件上运行时具有高可用性和高性能。尽管虚拟化可能看似会影响性能,Ceph 会将块设备镜像以条带化的形式作为对象分布在集群中上的对象,这意味着大型 Ceph Block Device 镜像的性能实际上比独立磁盘性能更好。另外,Cept Block 设备还支持缓存、copy-on-write cloning 和 copy-on-read cloning 功能来提高性能。
有关 Red Hat Ceph Storage 的更多信息,请参阅 Red Hat Ceph Storage。
1.6. 默认文件位置 复制链接链接已复制到粘贴板!
在 RHOSP 17 中,您可以在单个目录中找到所有配置文件。目录的名称是 openstack 命令使用的、堆栈的名称的组合。目录具有默认位置,但您可以使用 -working-dir 选项更改默认位置。您可以将这个选项与读取或创建与部署一起使用的文件的任何 tripleoclient 命令一起使用。
| 默认位置 | 命令 |
|---|---|
| $HOME/tripleo-deploy/undercloud |
|
| $HOME/tripleo-deploy/<stack> |
|
| $HOME/overcloud-deploy/<stack> |
|
1.6.1. undercloud 目录的内容描述 复制链接链接已复制到粘贴板!
您可以在 ~/tripleo-deploy/undercloud 目录中找到以下文件和目录。它们是 ~/overcloud-deploy 目录中可用的子集:
1.6.2. overcloud 目录的内容描述 复制链接链接已复制到粘贴板!
您可以在 ~/overcloud-deploy/overcloud 目录中找到以下文件和目录,其中 overcloud 是堆栈的名称:
下表描述了这些文件和目录的内容:
| 目录 | 描述 |
|---|---|
| cli-* |
|
| config-download |
|
| 环境 |
包含使用 |
| heat-launcher | 包含临时 Heat 配置和数据库备份的临时 Heat 工作目录。 |
| 输出 |
包含使用 |
| <stack>-deployment_status.yaml | 包含已保存的堆栈状态。 |
| <stack>-export.yaml |
包含堆栈导出信息,使用 |
| <stack>-install-*.tar.bzip2 | 工作目录的 tarball。 |
| <stack>-passwords.yaml | 包含堆栈密码。 |
| <stack>rc | 使用 overcloud API 所需的 stack rc 凭据文件。 |
| temployer-deployer-input.conf | 包含 Tempest 配置。 |
| tripleo-ansible-inventory.yaml | overcloud 的 Ansible 清单. |
| tripleo-heat-templates |
包含呈现的 jinja2 模板的副本。您可以在 |
| tripleo-overcloud-baremetal-deployment.yaml | 用于置备 overcloud 节点的裸机部署输入。 |
| tripleo-overcloud-network-data.yaml | 用于置备 overcloud 网络的网络部署输入。 |
| tripleo-overcloud-roles-data.yaml |
在 CLI 上使用 |
| tripleo-overcloud-virtual-ips.yaml | 用于置备 overcloud 网络 VIP 的 VIP 部署输入。 |
第 2 章 规划您的 undercloud 复制链接链接已复制到粘贴板!
在 undercloud 上配置并安装 director 之前,您必须规划 undercloud 主机以确保它满足某些要求。
2.1. 容器化 undercloud 复制链接链接已复制到粘贴板!
undercloud 是控制最终 Red Hat OpenStack Platform (RHOSP) 环境(称为 overcloud)的配置、安装和管理的节点。undercloud 本身以容器形式使用 OpenStack Platform 组件来创建称为 director 的工具组。这意味着,undercloud 从 registry 源拉取一组容器镜像,生成容器的配置,然后以容器的形式运行各项 OpenStack Platform 服务。因此,undercloud 提供一组容器化服务,您可以将这些服务用作创建和管理 overcloud 的工具组。
undercloud 和 overcloud 都使用容器,它们使用相同的架构来拉取、配置和运行容器。此架构基于用于置备节点的 OpenStack Orchestration 服务 (heat) 并使用 Ansible 配置服务和容器。熟悉 heat 和 Ansible 有助于诊断您可能遇到的问题。
2.2. 准备 undercloud 网络 复制链接链接已复制到粘贴板!
undercloud 需要访问两个主要网络:
- Provisioning 网络或 Control Plane 网络,这是 director 用于置备节点和在执行 Ansible 配置时通过 SSH 访问这些节点的网络。此网络还支持从 undercloud 到 overcloud 节点的 SSH 访问。undercloud 包含在此网络上内省和置备其他节点的 DHCP 服务,这意味着此网络上不应存在其他 DHCP 服务。director 为此网络配置接口。
- External 网络,支持访问 OpenStack Platform 软件仓库、容器镜像源和 DNS 服务器或 NTP 服务器等的其他服务器。使用此网络从您的工作站对 undercloud 进行标准访问。您必须在 undercloud 上手动配置一个接口以访问外部网络。
undercloud 至少需要 2 个 1 Gbps 网络接口卡:一个用于 Provisioning 或 Control Plane 网络,一个用于 External 网络。
规划网络时,请查看以下准则:
- 红帽建议为 data plane 使用一个网络置备和 control plane 和其他网络。
provisioning 和 control plane 网络可以在 Linux 绑定或独立接口上配置。如果您使用 Linux 绑定,请将其配置为 active-backup 绑定类型。
- 在非控制器节点上,流量在置备和 control plane 网络上相对较低,它们不需要高带宽或负载均衡。
在 Controller 上,置备和 control plane 网络需要额外的带宽。增加带宽的原因是控制器为其他角色中的多个节点提供服务。对环境进行频繁更改时,还需要更多的带宽。
为获得最佳性能,当控制器有超过 50 个计算节点 - 或者同时置备了四个以上的裸机节点,则应该同时置备 4-10 倍,则其带宽应为非控制器节点上的接口的 4-10 倍。
- 在置备 50 个 overcloud 节点时,undercloud 应该有更高的带宽连接到 provisioning 网络。
- 不要使用与您从工作站访问 director 机器相同的 Provisioning 或 Control Plane NIC。director 安装会使用 Provisioning NIC 创建一个网桥,它会忽略所有远程连接。使用 External NIC 来远程连接 director 系统。
Provisioning 网络需要一个与您的环境大小相匹配的 IP 范围。使用以下原则来决定包括在这个范围内的 IP 地址总数量:
- 至少包括一个临时 IP 地址,用于内省期间连接到 Provisioning 网络的每个节点。
- 至少包括一个永久 IP 地址,用于部署期间连接到 Provisioning 网络的每个节点。
- 包括一个额外的 IP 地址,用于 Provisioning 网络上 overcloud 高可用性集群的虚拟 IP。
- 包括此范围内的额外 IP 地址,以用于扩展环境。
-
为防止 Controller 节点网卡或网络交换机故障破坏 overcloud 服务可用性,请确保 keystone 管理端点位于使用绑定网卡或网络硬件冗余的网络中。如果将 Keystone 端点移到不同的网络,如
internal_api,请确保 undercloud 可以访问 VLAN 或子网。有关更多信息,请参阅红帽知识库解决方案如何将 Keystone 管理端点迁移到 internal_api 网络。
2.3. 确定环境规模 复制链接链接已复制到粘贴板!
在安装 undercloud 前,请确定环境的规模。规划环境时应考虑到以下因素:
- 想要在 overcloud 中部署多少个节点?
- undercloud 管理 overcloud 中的每个节点。置备 overcloud 节点会消耗 undercloud 上的资源。您必须为 undercloud 提供足够的资源用来置备和控制所有 overcloud 节点。
- 您希望 undercloud 同步执行多少个操作?
- undercloud 上的大部分 OpenStack 服务会使用一组 worker。每个 worker 执行特定于该服务的一个操作。多个 worker 提供同步操作。undercloud 上 worker 的默认数量是 undercloud 上 CPU 线程总数的一半在本实例中,线程数是指 CPU 内核数乘以超线程值。例如,如果 undercloud 的 CPU 具有 16 个线程,则 director 服务默认生成 8 个 worker。director 还默认使用一组最小值和最大值限制
| 服务 | 最小值 | 最大值 |
|---|---|---|
| OpenStack Orchestration (heat) | 4 | 24 |
| 所有其他服务 | 2 | 12 |
undercloud 具有以下最小 CPU 和内存要求:
- 支持 Intel 64 或 AMD64 CPU 扩展的 8 线程 64 位 x86 处理器。这可为每个 undercloud 服务提供 4 个 worker。
- 最少 24 GB RAM。
要使用更多 worker,使用以下建议增加 undercloud 的 vCPU 和内存:
- 最小值:每个线程使用 1.5 GB 内存。例如,一台有 48 个线程的机器需要 72 GB RAM 来为 24 个 heat worker 和 12 个其他服务的 worker 提供最小的覆盖范围。
- 建议值:每个线程使用 3 GB 内存。例如,一台有 48 个线程的机器需要 144 GB RAM 来为 24 个 heat worker 和 12 个其他服务的 worker 提供建议的覆盖范围。
2.4. undercloud 磁盘大小调整 复制链接链接已复制到粘贴板!
建议的最小 undercloud 磁盘大小为在根磁盘上有 100 GB 可用磁盘空间:
- 20 GB 用于容器镜像
- 10 GB 在节点部署过程中用于 QCOW2 镜像转换和缓存
- 70 GB 或更大空间供常规使用、保存日志和指标以及满足增长需要
2.5. 虚拟化支持 复制链接链接已复制到粘贴板!
红帽仅支持以下平台上的虚拟化 undercloud:
| 平台 | 备注 |
|---|---|
| 基于内核的虚拟机 (KVM) | 由 Red Hat Enterprise Linux 托管,如 Red Hat OpenStack Platform、Red Hat Virtualization、OpenShift Virtualization 和带有 KVM 的 Red Hat Enterprise Linux 中的认证客户机操作系统上列出 |
| Red Hat Virtualization | 由 Red Hat Virtualization 4.x 托管,如认证的红帽 Hypervisor 上所列。 |
| Microsoft Hyper-V | 由各种版本的 Hyper-V 托管,如红帽客户门户认证目录上所列。 |
| VMware ESX 和 ESXi | 由各种版本的 ESX 和 ESXi 托管,如红帽客户门户认证目录上所列。 |
确保您的管理程序支持 Red Hat Enterprise Linux 9.0 客户机。
虚拟机要求
虚拟 undercloud 的资源要求与裸机 undercloud 的资源要求类似。在置备时,请考虑各种调优选项,如网络模型、客户机 CPU 功能、存储后端、存储格式和缓存模式。
网络注意事项
- 电源管理
-
undercloud 虚拟机(VM)需要访问 overcloud 节点的电源管理设备。这是注册节点时为
pm_addr参数设置的 IP 地址。 - Provisioning 网络
-
用于调配网络
ctlplane的 NIC 需要能够向 overcloud 的裸机节点的 NIC 广播和提供 DHCP 请求。创建一个网桥,将虚拟机的 NIC 连接到与裸机 NIC 相同的网络。 - 允许来自未知地址的流量
您必须配置虚拟 undercloud 管理程序,以防止虚拟机监控程序阻止 undercloud 从未知地址传输流量。配置取决于您用于虚拟 undercloud 的平台:
-
Red Hat Enterprise Virtualization:禁用
anti-mac-spoofing参数。 VMware ESX 或 ESXi:
-
在 IPv4
ctlplane网络上:允许伪传输。 在 IPv6
ctlplane网络上:允许传输、MAC 地址更改和混杂模式操作。有关如何配置 VMware ESX 或 ESXi 的更多信息,请参阅 VMware 文档上的安全 vSphere 标准 交换。
-
在 IPv4
应用这些设置后,必须关闭再打开 director 虚拟机。仅重启虚拟机并不够。
-
Red Hat Enterprise Virtualization:禁用
2.6. 字符编码配置 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform 有特殊的字符编码要求,作为本地设置的一部分:
-
在所有节点上使用 UTF-8 编码。确保在所有节点上将
LANG环境变量设置为en_US.UTF-8。 - 如果您使用 Red Hat Ansible Tower 自动创建 Red Hat OpenStack Platform 资源,请避免使用非 ASCII 字符。
2.7. 使用代理运行 undercloud 时的注意事项 复制链接链接已复制到粘贴板!
使用代理运行 undercloud 有某些限制,红帽建议您使用 Red Hat Satellite 进行 registry 和软件包管理。
但是,如果您的环境使用代理,请查看这些注意事项,以透彻理解将 Red Hat OpenStack Platform OpenStack 的组件与代理集成的不同配置方法,以及每种方法的限制。
系统范围的代理配置
使用此方法为 undercloud 上的所有网络流量配置代理通信。要配置代理设置,请编辑 /etc/environment 文件并设置以下环境变量:
- http_proxy
- 用于标准 HTTP 请求的代理。
- https_proxy
- 用于 HTTP 请求的代理。
- no_proxy
- 从代理通信中排除的、以逗号分隔的域列表。
系统范围的代理方法有以下限制:
-
由于
pam_envPAM 模块中的固定大小缓冲区,no_proxy的最大长度为 1024 个字符。
dnf 代理配置
使用此方法将 dnf 配置为通过代理运行所有流量。要配置代理设置,请编辑 /etc/dnf/dnf.conf 文件并设置以下参数:
- proxy
- 代理服务器的 URL。
- proxy_username
- 用于连接到代理服务器的用户名。
- proxy_password
- 用于连接到代理服务器的密码。
- proxy_auth_method
- 代理服务器使用的身份验证方法。
有关这些选项的更多信息,请运行 man dnf.conf。
dnf 代理方法有以下限制:
-
此方法仅对
dnf提供代理支持。 -
dnf代理方法不包括用于从代理通信中排除某些主机的选项。
Red Hat Subscription Manager 代理
使用此方法将 Red Hat Subscription Manager 配置为通过代理运行所有流量。要配置代理设置,请编辑 /etc/rhsm/rhsm.conf 文件并设置以下参数:
- proxy_hostname
- 用于代理的主机。
- proxy_scheme
- 在将代理写入软件仓库定义时,代理的方案。
- proxy_port
- 代理的端口。
- proxy_username
- 用于连接到代理服务器的用户名。
- proxy_password
- 用于连接到代理服务器的密码。
- no_proxy
- 要从代理通信中排除的、以逗号分隔的特定主机的主机名后缀列表。
有关这些选项的更多信息,请运行 man rhsm.conf。
Red Hat Subscription Manager 代理方法有以下限制:
- 此方法仅对 Red Hat Subscription Manager 提供代理支持。
- Red Hat Subscription Manager 代理配置的值覆盖为系统范围环境变量设置的任何值。
透明代理
如果您的网络使用透明代理来管理应用层流量,则不需要将 undercloud 本身配置为与代理交互,因为代理管理会自动发生。透明代理可帮助克服 Red Hat OpenStack Platform 中与基于客户端的代理配置相关的限制。
2.8. undercloud 软件仓库 复制链接链接已复制到粘贴板!
您可以在 Red Hat Enterprise Linux 9.0 上运行 Red Hat OpenStack Platform 17.0。因此,您必须将这些软件仓库的内容锁定到相应的 Red Hat Enterprise Linux 版本。
除此处指定的存储库外,都不支持。除非建议,否则请不要启用任何其他产品或存储库,除了下表中列出的产品或存储库,否则您可能会遇到软件包依赖项问题。请勿启用 Extra Packages for Enterprise Linux (EPEL)。
Satellite 软件仓库不会被列出,因为 RHOSP 17.0 不支持 Satellite。计划在以后的发行版本中提供 Satellite 支持。仅支持 Red Hat CDN 作为软件包存储库和容器 registry。
核心软件仓库
下表列出了用于安装 undercloud 的核心软件仓库。
| 名称 | 软件仓库 | 要求说明 |
|---|---|---|
| Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs) Extended Update Support (EUS) |
| x86_64 系统的基本操作系统仓库。 |
| Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs) |
| 包括 Red Hat OpenStack Platform 的依赖软件包。 |
| Red Hat Enterprise Linux 9 for x86_64 - High Availability (RPMs) Extended Update Support (EUS) |
| Red Hat Enterprise Linux 的高可用性工具。用于 Controller 节点的高可用性功能。 |
| Red Hat OpenStack Platform 17.0 for RHEL 9 (RPMs) |
| Red Hat OpenStack Platform 核心软件仓库,包含 Red Hat OpenStack Platform director 的软件包。 |
| Red Hat Fast Datapath for RHEL 9 (RPMS) |
| 为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。 |
第 3 章 了解 heat 模板 复制链接链接已复制到粘贴板!
本指南中的自定义配置使用 heat 模板和环境文件来定义 overcloud 的某些方面。本章介绍了 heat 模板的基本介绍,以便在 Red Hat OpenStack Platform director 上下文中了解这些模板的结构和格式。
3.1. Heat 模板 复制链接链接已复制到粘贴板!
director 使用 Heat 编配模板(HOT)作为 overcloud 部署计划的模板格式。HOT 格式的模板通常以 YAML 格式表示。模板的目的是定义和创建堆栈,这是 OpenStack Orchestration (heat)创建资源的集合,以及资源的配置。资源是 Red Hat OpenStack Platform (RHOSP)中的对象,可以包含计算资源、网络配置、安全组、扩展规则和自定义资源。
heat 模板有三个主要部分:
- parameters
-
这些设置传递到 heat,提供自定义堆栈以及没有传递值的参数的任何默认值。这些设置在模板的
parameters部分中定义。 - 资源
-
使用
resources部分定义资源,如计算实例、网络和存储卷,您可以在使用此模板部署堆栈时创建这些资源。Red Hat OpenStack Platform (RHOSP)包含一组跨越所有组件的核心资源。这些是作为堆栈一部分创建和配置的具体对象。RHOSP 包含一组跨越所有组件的核心资源。它们在模板的resources部分中定义。 - 输出
-
使用
outputs部分声明您的云用户可在堆栈创建后访问的输出参数。您的云用户可以使用这些参数来请求堆栈的详细信息,如部署的实例的 IP 地址,或者作为堆栈一部分部署的 Web 应用的 URL。
基本 heat 模板示例:
此模板使用资源类型 类型:OS::Nova::Server,创建名为 my_instance 的实例,该实例使用云用户指定的特定类别、镜像和密钥。堆栈可以返回 instance_name 的值,它称为 My Cirros Instance。
当 heat 处理模板时,它会为模板创建一个堆栈,并为资源模板创建一组子堆栈。这会创建一个堆栈层次结构,它从您通过模板定义的主堆栈分离。您可以使用以下命令查看堆栈层次结构:
openstack stack list --nested
$ openstack stack list --nested
3.2. 环境文件 复制链接链接已复制到粘贴板!
环境文件是可用于自定义 heat 模板的特殊类型模板。除了核心 heat 模板外,您还可以在部署命令中包括环境文件。环境文件包含三个主要部分:
- resource_registry
- 本节定义链接到其他 heat 模板的自定义资源名称。这提供了一种创建核心资源集合中不存在的自定义资源的方法。
- parameters
- 这些是您应用到顶级模板参数的常见设置。例如,如果您有一个模板来部署嵌套堆栈,如资源 registry 映射,则参数仅适用于顶级模板,而不应用到嵌套资源的模板。
- parameter_defaults
- 这些参数修改所有模板中参数的默认值。例如,如果您有一个 heat 模板来部署嵌套堆栈,如资源 registry 映射,则该参数默认为所有模板。
在为 overcloud 创建自定义环境文件时,使用 parameter_defaults 而不是 parameters,以便您的参数应用到 overcloud 的所有堆栈模板。
基本环境文件示例:
从特定的 heat 模板(my_template.yaml)创建堆栈时,可能会包含此环境文件(my_env.yaml)。my_env.yaml 文件会创建一个名为 OS::Nova::Server::MyServer 的新资源类型。myserver.yaml 文件是一个 heat 模板文件,它为此资源类型提供实施,可覆盖任何内置插件。您可以在 my_template.yaml 文件中包含 OS::Nova::Server::MyServer 资源。
MyIP 仅将参数应用到使用此环境文件部署的主要 heat 模板。在本例中,MyIP 仅适用于 my_template.yaml 中的参数。
networkName 适用于主 heat 模板 my_template.yaml,以及与主模板中包含的资源关联的模板,如 OS::Nova::Server::MyServer 资源以及本例中的 myserver.yaml 模板。
要让 RHOSP 将 heat 模板文件用作自定义模板资源,文件扩展名必须为 .yaml 或 .template。
3.3. 核心 overcloud heat 模板 复制链接链接已复制到粘贴板!
director 包含 overcloud 的核心 heat 模板集合和环境文件集合。此集合存储在 /usr/share/openstack-tripleo-heat-templates 中。
此模板集合中的主要文件和目录是:
overcloud.j2.yaml- 这是 director 用于创建 overcloud 环境的主模板文件。此文件使用 Jinja2 语法来迭代模板中的某些部分,以创建自定义角色。Jinja2 格式在 overcloud 部署过程中呈现为 YAML。
overcloud-resource-registry-puppet.j2.yaml- 这是 director 用于创建 overcloud 环境的主要环境文件。它为 overcloud 镜像中存储的 Puppet 模块提供一组配置。在 director 将 overcloud 镜像写入每个节点后,heat 会使用此环境文件中注册的资源启动每个节点的 Puppet 配置。此文件使用 Jinja2 语法来迭代模板中的某些部分,以创建自定义角色。Jinja2 格式在 overcloud 部署过程中呈现为 YAML。
roles_data.yaml- 此文件包含 overcloud 中角色的定义,并将服务映射到各个角色。
network_data.yaml-
此文件包含 overcloud 中网络的定义及其属性,如子网、分配池和 VIP 状态。默认
network_data.yaml文件包含默认网络: External, Internal Api, Storage, Storage Management, Tenant, 和 Management。您可以创建自定义network_data.yaml文件,并使用-n选项将其添加到openstack overcloud deploy命令中。 plan-environment.yaml- 此文件包含 overcloud 计划的元数据的定义。这包括计划名称、要使用的主模板,以及用于应用到 overcloud 的环境文件。
capabilities-map.yaml- 此文件包含 overcloud 计划的环境文件映射。
部署-
此目录包含 heat 模板。
overcloud-resource-registry-puppet.j2.yaml环境文件使用此目录中的文件驱动各个节点上的 Puppet 配置应用。 environments-
此目录包含可用于创建 overcloud 的额外 heat 环境文件。这些环境文件为生成的 Red Hat OpenStack Platform (RHOSP)环境启用额外的功能。例如,目录包含一个环境文件,以启用 Cinder NetApp 后端存储(
cinder-netapp-config.yaml)。 network- 此目录包含一组可用于创建隔离的网络和端口的 heat 模板。
puppet-
此目录包含控制 Puppet 配置的模板。
overcloud-resource-registry-puppet.j2.yaml环境文件使用此目录中的文件驱动各个节点上的 Puppet 配置应用。 puppet/services-
此目录包含所有服务配置的传统 heat 模板。
部署目录中的模板取代了puppet/services目录中的大多数模板。 extraconfig- 此目录包含可用于启用额外功能的模板。
3.4. 计划环境元数据 复制链接链接已复制到粘贴板!
您可以在计划环境元数据文件中定义 overcloud 计划的元数据。director 在 overcloud 创建过程中应用元数据,并在导入和导出 overcloud 计划时应用元数据。
计划环境元数据文件包括以下参数:
- version
- 模板的版本。
- name
- 要用于存储计划文件的 OpenStack Object Storage (swift)中的 overcloud 计划和容器的名称。
- 模板
-
要用于 overcloud 部署的核心父模板。这通常是
overcloud.yaml,这是overcloud.yaml.j2模板的渲染版本。 - environments
-
定义您要使用的环境文件的列表。使用
路径子参数指定每个环境文件的名称和相对路径位置。 - parameter_defaults
-
要在 overcloud 中使用的一组参数。该功能方式与标准环境文件中的
parameter_defaults部分相同。 - 密码
-
您要用于 overcloud 密码的一组参数。该功能方式与标准环境文件中的
parameter_defaults部分相同。通常,director 会使用随机生成的密码自动填充本节。
以下片段是计划环境文件的语法示例:
您可以使用 openstack overcloud deploy 命令及 -p 选项包含计划环境元数据文件:
(undercloud) $ openstack overcloud deploy --templates \ -p /my-plan-environment.yaml \ [OTHER OPTIONS]
(undercloud) $ openstack overcloud deploy --templates \
-p /my-plan-environment.yaml \
[OTHER OPTIONS]
您还可以使用以下命令查看现有 overcloud 计划的计划元数据:
(undercloud) $ openstack object save overcloud plan-environment.yaml --file -
(undercloud) $ openstack object save overcloud plan-environment.yaml --file -
3.5. 在创建 overcloud 中包括环境文件 复制链接链接已复制到粘贴板!
在部署命令中包含环境文件,并使用 -e 选项。您可以根据需要纳入多个环境文件。但是,环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源具有优先权。例如,您有两个环境文件,其中包含通用资源类型 OS::TripleO::NodeExtraConfigPost,以及一个通用参数 TimeZone :
environment-file-1.yaml
environment-file-2.yaml
resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/template-2.yaml parameter_defaults: TimeZone: 'Hongkong'
resource_registry:
OS::TripleO::NodeExtraConfigPost: /home/stack/templates/template-2.yaml
parameter_defaults:
TimeZone: 'Hongkong'
在部署命令中包含这两个环境文件:
openstack overcloud deploy --templates -e environment-file-1.yaml -e environment-file-2.yaml
$ openstack overcloud deploy --templates -e environment-file-1.yaml -e environment-file-2.yaml
openstack overcloud deploy 命令通过以下流程运行:
- 从核心 heat 模板集合中加载默认配置。
-
应用
environment-file-1.yaml的配置,它会覆盖默认配置中的任何常见设置。 -
应用
environment-file-2.yaml的配置,它覆盖来自默认配置和environment-file-1.yaml的任何常见设置。
这会对 overcloud 的默认配置进行以下更改:
-
OS::TripleO::NodeExtraConfigPost资源设置为/home/stack/templates/template-2.yaml,如environment-file-2.yaml中定义的。 -
timezone参数设置为Hongkong,如environment-file-2.yaml中定义的。 -
RabbitFDLimit参数设置为65536,如environment-file-1.yaml中定义的。environment-file-2.yaml不会更改此值。
您可以使用此机制为 overcloud 定义自定义配置,而不来自多个环境文件的值。
3.6. 使用自定义核心 heat 模板 复制链接链接已复制到粘贴板!
在创建 overcloud 时,director 使用 /usr/share/openstack-tripleo-heat-templates 中的一组核心 heat 模板。如果要自定义此核心模板集合,请使用以下 Git 工作流来管理自定义模板集合:
流程
创建包含 heat 模板集合的初始 Git 存储库:
将模板集合复制到
/home/stack/templates目录中:cd ~/templates cp -r /usr/share/openstack-tripleo-heat-templates .
$ cd ~/templates $ cp -r /usr/share/openstack-tripleo-heat-templates .Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入自定义模板目录并初始化 Git 存储库:
cd ~/templates/openstack-tripleo-heat-templates git init .
$ cd ~/templates/openstack-tripleo-heat-templates $ git init .Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 Git 用户名和电子邮件地址:
git config --global user.name "<USER_NAME>" git config --global user.email "<EMAIL_ADDRESS>"
$ git config --global user.name "<USER_NAME>" $ git config --global user.email "<EMAIL_ADDRESS>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
<USER_NAME> 替换为您要使用的用户名。 将
<EMAIL_ADDRESS> 替换为您的电子邮件地址。暂存初始提交的所有模板:
git add *
$ git add *Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建初始提交:
git commit -m "Initial creation of custom core heat templates"
$ git commit -m "Initial creation of custom core heat templates"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会创建一个初始
master分支,其中包含最新的核心模板集合。使用此分支作为自定义分支的基础,并将新模板版本合并到此分支。
使用自定义分支将您的更改存储到核心模板集合。使用以下步骤创建
my-customizations分支并添加自定义:创建
my-customizations分支并切换到它:git checkout -b my-customizations
$ git checkout -b my-customizationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 编辑自定义分支中的文件。
在 git 中暂存更改:
git add [edited files]
$ git add [edited files]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将更改提交到自定义分支:
git commit -m "[Commit message for custom changes]"
$ git commit -m "[Commit message for custom changes]"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会将您的更改作为提交添加到
my-customizations分支。当master分支更新时,您可以 rebasemy-customizationsoffmaster,这会导致 git 将这些提交添加到更新的模板集合中。这有助于跟踪您的自定义信息,并在将来的模板更新中重新显示它们。
更新 undercloud 时,
openstack-tripleo-heat-templates软件包也可能接收更新。当发生这种情况时,还必须更新自定义模板集合:将
openstack-tripleo-heat-templates软件包版本保存为环境变量:export PACKAGE=$(rpm -qv openstack-tripleo-heat-templates)
$ export PACKAGE=$(rpm -qv openstack-tripleo-heat-templates)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入模板集合目录并为更新的模板创建新分支:
cd ~/templates/openstack-tripleo-heat-templates git checkout -b $PACKAGE
$ cd ~/templates/openstack-tripleo-heat-templates $ git checkout -b $PACKAGECopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除分支中的所有文件,并将其替换为新版本:
git rm -rf * cp -r /usr/share/openstack-tripleo-heat-templates/* .
$ git rm -rf * $ cp -r /usr/share/openstack-tripleo-heat-templates/* .Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为初始提交添加所有模板:
git add *
$ git add *Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为软件包更新创建提交:
git commit -m "Updates for $PACKAGE"
$ git commit -m "Updates for $PACKAGE"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将分支合并到 master 中。如果您使用 Git 管理系统(如 GitLab),请使用管理工作流。如果您在本地使用 git,请切换到
master分支并运行git merge命令进行合并:git checkout master git merge $PACKAGE
$ git checkout master $ git merge $PACKAGECopy to Clipboard Copied! Toggle word wrap Toggle overflow
master 分支现在包含核心模板集合的最新版本。现在,您可以从这个更新的集合更新 my-customization 分支。
更新
my-customization分支,:进入
my-customizations分支:git checkout my-customizations
$ git checkout my-customizationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将分支从
master信任:git rebase master
$ git rebase masterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这会更新
my-customizations分支,并重播为此分支进行的自定义提交。
解决 rebase 中出现的任何冲突:
检查哪些文件包含冲突:
git status
$ git statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 解决标识的模板文件冲突。
添加已解析的文件:
git add [resolved files]
$ git add [resolved files]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 继续 rebase:
git rebase --continue
$ git rebase --continueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
部署自定义模板集合:
确保已切换到
my-customization分支:git checkout my-customizations
git checkout my-customizationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用-
templates选项运行openstack overcloud deploy命令以指定您的本地模板目录:openstack overcloud deploy --templates /home/stack/templates/openstack-tripleo-heat-templates [OTHER OPTIONS]
$ openstack overcloud deploy --templates /home/stack/templates/openstack-tripleo-heat-templates [OTHER OPTIONS]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果指定没有目录的 the-templates 选项,director 将使用默认模板目录(/usr/share/openstack-tripleo-heat- )。
templates
红帽建议在 第 5 章 配置 hook 中使用方法,而不是修改 heat 模板集合。
3.7. Jinja2 渲染 复制链接链接已复制到粘贴板!
/usr/share/openstack-tripleo-heat-templates 中的核心 heat 模板包含具有 j2.yaml 文件扩展名的多个文件。这些文件包含 Jinja2 模板语法,director 会将这些文件呈现到具有 .yaml 扩展名的静态 heat 模板。例如,主要的 overcloud.j2.yaml 文件呈现到 overcloud.yaml 中。director 使用生成的 overcloud.yaml 文件。
通过 Jinja2 的 heat 模板,使用 Jinja2 语法为迭代值创建参数和资源。例如,overcloud.j2.yaml 文件包含以下代码片段:
当 director 呈现 Jinja2 语法时,director 会迭代 roles_data.yaml 文件中定义的角色,并使用角色的名称填充 {{role.name}}Count 参数。默认 roles_data.yaml 文件包含五个角色,并从示例中生成以下参数:
-
ControllerCount -
ComputeCount -
BlockStorageCount -
ObjectStorageCount -
CephStorageCount
参数的渲染版本示例如下:
director 仅在核心 heat 模板的目录中呈现启用了 Jinja2 的模板和环境文件。以下用例演示了呈现 Jinja2 模板的正确方法。
使用案例 1:默认核心模板
模板目录: /usr/share/openstack-tripleo-heat-templates/
环境文件: /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.j2.yaml
director 使用默认核心模板位置(--templates),并将 enable-internal-tls.j2.yaml 文件呈现为 enable-internal-tls.yaml。运行 openstack overcloud deploy 命令时,请使用 -e 选项包含呈现的 enable-internal-tls.yaml 文件的名称。
openstack overcloud deploy --templates \
-e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml
...
$ openstack overcloud deploy --templates \
-e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml
...
使用案例 2:自定义核心模板
模板目录: /home/stack/tripleo-heat-installer-templates
环境文件: /home/stack/tripleo-heat-installer-templates/environments/ssl/enable-internal-tls.j2.yaml
director 使用自定义核心模板位置(--templates /home/stack/tripleo-heat-templates),director 会使自定义核心模板中的 enable-internal-tls.j2.yaml 文件呈现为 enable-internal-tls.yaml。运行 openstack overcloud deploy 命令时,请使用 -e 选项包含呈现的 enable-internal-tls.yaml 文件的名称。
openstack overcloud deploy --templates /home/stack/tripleo-heat-templates \
-e /home/stack/tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml
...
$ openstack overcloud deploy --templates /home/stack/tripleo-heat-templates \
-e /home/stack/tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml
...
使用案例 3:正确使用
模板目录: /usr/share/openstack-tripleo-heat-templates/
环境文件: /home/stack/tripleo-heat-installer-templates/environments/ssl/enable-internal-tls.j2.yaml
director 使用自定义核心模板位置(--templates /home/stack/tripleo-heat-installer-templates)。但是,所选的 enable-internal-tls.j2.yaml 不在自定义核心模板中,因此它不会呈现到 enable-internal-tls.yaml 中。这会导致部署失败。
在静态模板中处理 Jinja2 语法
使用 process-templates.py 脚本,将 openstack-tripleo-heat-templates 的 Jinja2 语法呈现为一组静态模板。要使用 process-templates.py 脚本呈现 openstack-tripleo-heat-templates 集合的副本,请更改到 openstack-tripleo-heat-templates 目录:
cd /usr/share/openstack-tripleo-heat-templates
$ cd /usr/share/openstack-tripleo-heat-templates
运行 process-templates.py 脚本(位于 tools 目录中),并使用 -o 选项定义自定义目录来保存静态副本:
./tools/process-templates.py -o ~/openstack-tripleo-heat-templates-rendered
$ ./tools/process-templates.py -o ~/openstack-tripleo-heat-templates-rendered
这会将所有 Jinja2 模板转换为呈现的 YAML 版本,并将结果保存到 ~/openstack-tripleo-heat-templates-rendered。
第 4 章 Heat 参数 复制链接链接已复制到粘贴板!
director 模板集合中的每个 heat 模板都包含一个 parameters 部分。本节包含特定于特定 overcloud 服务的所有参数的定义。这包括以下内容:
-
overcloud.j2.yaml- 默认基本参数 -
用于可组合角色的
roles_data.yaml- Default 参数 -
特定服务的
deployment configured.yaml- Default 参数
您可以使用以下方法修改这些参数的值:
- 为自定义参数创建环境文件。
-
在环境文件的
parameter_defaults部分中包含您的自定义参数。 -
使用
openstack overcloud deploy命令包括环境文件。
4.1. 示例 1:配置时区 复制链接链接已复制到粘贴板!
用于设置时区的 Heat 模板(puppet/services/time/timezone.yaml)包含 TimeZone 参数。如果将 TimeZone 参数留空,overcloud 会将时间设置为 UTC 作为默认值。
要获取时区列表,请运行 timedatectl list-timezones 命令。以下示例命令检索 Asia 的时区:
sudo timedatectl list-timezones|grep "Asia"
$ sudo timedatectl list-timezones|grep "Asia"
在确定时区后,在环境文件中设置 TimeZone 参数。以下示例环境文件将 TimeZone 的值设置为 Asia/Tokyo :
parameter_defaults: TimeZone: 'Asia/Tokyo'
parameter_defaults:
TimeZone: 'Asia/Tokyo'
4.2. 示例 2:配置 RabbitMQ 文件描述符限制 复制链接链接已复制到粘贴板!
对于某些配置,您可能需要提高 RabbitMQ 服务器的文件描述符限制。使用 deployment/rabbitmq/rabbitmq-container-puppet.yaml heat 模板在 RabbitFDLimit 参数中设置一个新的限制。在环境文件中添加以下条目:
parameter_defaults: RabbitFDLimit: 65536
parameter_defaults:
RabbitFDLimit: 65536
4.3. 示例 3:启用和禁用参数 复制链接链接已复制到粘贴板!
您可能需要在部署期间初始设置参数,然后禁用 参数以用于将来的部署操作,如更新或扩展操作。例如,要在 overcloud 创建过程中包括自定义 RPM,请在环境文件中包含以下条目:
parameter_defaults: DeployArtifactURLs: ["http://www.example.com/myfile.rpm"]
parameter_defaults:
DeployArtifactURLs: ["http://www.example.com/myfile.rpm"]
要从将来的部署禁用此参数,无法删除该参数。反之,您必须将参数设置为空值:
parameter_defaults: DeployArtifactURLs: []
parameter_defaults:
DeployArtifactURLs: []
这可确保不再为后续部署操作设置该参数。
4.4. 示例 4:基于角色的参数 复制链接链接已复制到粘贴板!
使用 [ROLE]Parameters 参数,将 [ROLE] 替换为可组合角色,以为特定角色设置参数。
例如,director 在 Controller 和 Compute 节点上配置 sshd。要为 Controller 和 Compute 节点设置不同的 sshd 参数,请创建一个环境文件,其中包含 ControllerParameters 和 ComputeParameters 参数,并为每个特定角色设置 sshd 参数:
parameter_defaults:
ControllerParameters:
BannerText: "This is a Controller node"
ComputeParameters:
BannerText: "This is a Compute node"
parameter_defaults:
ControllerParameters:
BannerText: "This is a Controller node"
ComputeParameters:
BannerText: "This is a Compute node"
4.5. 识别您要修改的参数 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform director 为配置提供了很多参数。在某些情况下,您可能很难识别您要配置的某些选项,以及相应的 director 参数。如果有您要使用 director 配置的选项,请使用以下工作流来识别并将选项映射到特定的 overcloud 参数:
- 确定您要配置的选项。记录使用 选项的服务。
为此选项检查对应的 Puppet 模块。Red Hat OpenStack Platform 的 Puppet 模块位于 director 节点上的
/etc/puppet/modules下。每个模块对应于特定的服务。例如,keystone模块对应于 OpenStack Identity (keystone)。- 如果 Puppet 模块包含控制所选选项的变量,请转到下一步。
- 如果 Puppet 模块不包含控制所选选项的变量,则此选项不存在 hieradata。如果可能,您可以在 overcloud 完成部署后手动设置选项。
以 hieradata 的形式检查 Puppet 变量的核心 heat 模板集合。
deploymentnetobserv 中的模板通常对应于同一服务的 Puppet 模块。例如,deployment/keystone/keystone-container-puppet.yaml模板为keystone模块提供 hieradata。- 如果 heat 模板为 Puppet 变量设置了 hieradata,该模板也应披露您可以修改的基于 director 的参数。
- 如果 heat 模板没有为 Puppet 变量设置 hieradata,请使用配置 hook 使用环境文件传递 hieradata。有关自定义 hieradata 的更多信息,请参阅 第 5.4 节 “puppet :自定义角色的 hieradata”。
流程
要更改 OpenStack Identity (keystone)的通知格式,请使用工作流并完成以下步骤:
-
识别您要配置的 OpenStack 参数(
notification_format)。 在
keystonePuppet 模块中搜索notification_format设置:grep notification_format /etc/puppet/modules/keystone/manifests/*
$ grep notification_format /etc/puppet/modules/keystone/manifests/*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这种情况下,
keystone模块使用keystone::notification_format变量管理这个选项。为这个变量搜索
keystone服务模板:grep "keystone::notification_format" /usr/share/openstack-tripleo-heat-templates/deployment/keystone/keystone-container-puppet.yaml
$ grep "keystone::notification_format" /usr/share/openstack-tripleo-heat-templates/deployment/keystone/keystone-container-puppet.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示 director 使用
KeystoneNotificationFormat参数来设置keystone::notification_formathieradata。
-
识别您要配置的 OpenStack 参数(
下表显示了最终映射:
| director 参数 | Puppet hieradata | OpenStack Identity (keystone)选项 |
|---|---|---|
|
|
|
|
您可以在 overcloud 环境文件中设置 KeystoneNotificationFormat,然后在 overcloud 配置期间在 keystone.conf 文件中设置 notification_format 选项。
第 5 章 配置 hook 复制链接链接已复制到粘贴板!
使用配置 hook 将您自己的自定义配置功能注入 overcloud 部署过程。您可以创建 hook,以在 overcloud 主服务配置之前和之后注入自定义配置,以及用于修改和包含基于 Puppet 的配置的 hook。
5.1. 预配置: 自定义特定的 overcloud 角色 复制链接链接已复制到粘贴板!
overcloud 使用 Puppet 进行 OpenStack 组件的核心配置。director 提供了一组 hook,可用于在核心配置开始前为特定节点角色执行自定义配置。这些 hook 包括以下配置:
本文档的早期版本使用了 OS::TripleO::Tasks::*PreConfig 资源来根据角色提供预配置 hook。heat 模板集合需要专用使用这些 hook,这意味着您不应该使用它们进行自定义。取而代之,请使用此处概述的 OS::TripleO::*ExtraConfigPre hook。
- OS::TripleO::ControllerExtraConfigPre
- 在核心 Puppet 配置前,应用到 Controller 节点的其他配置。
- OS::TripleO::ComputeExtraConfigPre
- 在 Puppet 核心配置之前,应用到 Compute 节点的其他配置。
- OS::TripleO::CephStorageExtraConfigPre
- 在 Puppet 核心配置之前,应用到 Ceph Storage 节点的其他配置。
- OS::TripleO::ObjectStorageExtraConfigPre
- 在 Puppet 核心配置之前,应用到对象存储节点的其他配置。
- OS::TripleO::BlockStorageExtraConfigPre
- 在进行核心 Puppet 配置前,应用到块存储节点的其他配置。
- OS::TripleO::[ROLE]ExtraConfigPre
-
在 Puppet 核心配置之前,应用到自定义节点的其他配置。将
[ROLE]替换为可组合角色名称。
在本例中,使用变量 nameserver 在特定角色的所有节点上附加 resolv.conf 文件:
流程
创建一个基本的 heat 模板
~/templates/nameserver.yaml,该脚本运行一个脚本,将变量 nameserver 写入节点的resolv.conf文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
resources部分包含以下参数:- CustomExtraConfigPre
-
这定义了软件配置。在本例中,我们定义一个 Bash
脚本,并且 heat 将_NAMESERVER_IP_替换为存储在nameserver_ip参数中的值。 - CustomExtraDeploymentPre
这会执行软件配置,这是来自
CustomExtraConfigPre资源的软件配置。注意以下几点:-
config参数会引用CustomExtraConfigPre资源,以便 heat 知道要应用的配置。 -
server参数检索 overcloud 节点的 map。此参数由父模板提供,在此 hook 模板中是强制的。 -
actions参数定义何时应用配置。在这种情况下,您要在创建 overcloud 时应用配置。可能的操作包括CREATE、UPDATE、DELETE、SUSPEND和RESUME。 -
input_values包含一个名为deploy_identifier的参数,它存储来自父模板的DeployIdentifier。此参数为每个部署更新的资源提供时间戳,以确保后续 overcloud 更新中的资源获取。
-
创建一个环境文件
~/templates/pre_config.yaml,该文件将 heat 模板注册到基于角色的资源类型。例如,要将配置应用到 Controller 节点,请使用ControllerExtraConfigPrehook:resource_registry: OS::TripleO::ControllerExtraConfigPre: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1
resource_registry: OS::TripleO::ControllerExtraConfigPre: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将环境文件添加到堆栈中,以及其他环境文件:
openstack overcloud deploy --templates \ ... -e /home/stack/templates/pre_config.yaml \ ...$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/pre_config.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会在核心配置开始创建初始 overcloud 或后续更新前,将所有 Controller 节点应用到所有 Controller 节点。
您可以将每个资源注册到每个 hook 的一个 heat 模板。后续用法会覆盖要使用的 heat 模板。
5.2. 预配置:自定义所有 overcloud 角色 复制链接链接已复制到粘贴板!
overcloud 使用 Puppet 进行 OpenStack 组件的核心配置。director 提供了一个 hook,可用于在核心配置开始前配置所有节点类型:
- OS::TripleO::NodeExtraConfig
- 在核心 Puppet 配置前,应用到所有节点角色的其他配置。
在本例中,使用变量 nameserver 附加每个节点上的 resolv.conf 文件:
流程
创建一个基本的 heat 模板
~/templates/nameserver.yaml,该脚本使用变量 nameserver 附加每个节点的resolv.conf文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
resources部分包含以下参数:- CustomExtraConfigPre
-
此参数定义软件配置。在本例中,您定义一个 Bash
脚本,heat 将_NAMESERVER_IP_替换为存储在nameserver_ip参数中的值。 - CustomExtraDeploymentPre
此参数执行软件配置,这是来自
CustomExtraConfigPre资源的软件配置。注意以下几点:-
config参数会引用CustomExtraConfigPre资源,以便 heat 知道要应用的配置。 -
server参数检索 overcloud 节点的 map。此参数由父模板提供,在此 hook 模板中是强制的。 -
actions参数定义何时应用配置。在这种情况下,您仅在创建 overcloud 时应用配置。可能的操作包括CREATE、UPDATE、DELETE、SUSPEND和RESUME。 -
input_values参数包含名为deploy_identifier的子参数,它存储父模板中的DeployIdentifier。此参数为每个部署更新的资源提供时间戳,以确保后续 overcloud 更新中的资源获取。
-
创建一个环境文件
~/templates/pre_config.yaml,它将 heat 模板注册为OS::TripleO::NodeExtraConfig资源类型。resource_registry: OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1
resource_registry: OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将环境文件添加到堆栈中,以及其他环境文件:
openstack overcloud deploy --templates \ ... -e /home/stack/templates/pre_config.yaml \ ...$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/pre_config.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会在核心配置开始创建初始 overcloud 或后续更新之前,将配置应用到所有节点。
您可以将 OS::TripleO::NodeExtraConfig 注册到一个 heat 模板。后续用法会覆盖要使用的 heat 模板。
5.3. 安装后:自定义所有 overcloud 角色 复制链接链接已复制到粘贴板!
本文档的早期版本使用了 OS::TripleO::Tasks::*PostConfig 资源来根据角色提供后配置 hook。heat 模板集合需要专用使用这些 hook,这意味着您不应该使用它们进行自定义。相反,请使用此处概述的 OS::TripleO::NodeExtraConfigPost hook。
可能会发生创建 overcloud 的情况,但您希望在初始创建时为所有角色添加额外的配置,或者在后续 overcloud 更新时添加其他配置。在这种情况下,使用以下安装后 hook:
- OS::TripleO::NodeExtraConfigPost
- 在核心 Puppet 配置后,应用到所有节点角色的其他配置。
在本例中,使用变量 nameserver 附加每个节点上的 resolv.conf 文件:
流程
创建一个基本的 heat 模板
~/templates/nameserver.yaml,该脚本使用变量 nameserver 附加每个节点的resolv.conf文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
resources部分包含以下参数:- CustomExtraConfig
-
这定义了软件配置。在本例中,您定义一个 Bash
脚本,heat 将_NAMESERVER_IP_替换为存储在nameserver_ip参数中的值。 - CustomExtraDeployments
这会执行软件配置,这是来自
CustomExtraConfig资源的软件配置。注意以下几点:-
config参数会引用CustomExtraConfig资源,以便 heat 知道要应用的配置。 -
servers参数检索 overcloud 节点的 map。此参数由父模板提供,在此 hook 模板中是强制的。 -
actions参数定义何时应用配置。在这种情况下,您希望在创建 overcloud 时应用配置。可能的操作包括CREATE、UPDATE、DELETE、SUSPEND和RESUME。 -
input_values包含一个名为deploy_identifier的参数,它存储来自父模板的DeployIdentifier。此参数为每个部署更新的资源提供时间戳,以确保后续 overcloud 更新中的资源获取。
-
创建一个环境文件
~/templates/post_config.yaml,它将 heat 模板注册为OS::TripleO::NodeExtraConfigPost:资源类型。resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1
resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将环境文件添加到堆栈中,以及其他环境文件:
openstack overcloud deploy --templates \ ... -e /home/stack/templates/post_config.yaml \ ...$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/post_config.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会在初始 overcloud 创建或后续更新后将配置应用到所有节点。
您可以将 OS::TripleO::NodeExtraConfigPost 注册到一个 heat 模板。后续用法会覆盖要使用的 heat 模板。
5.4. puppet :自定义角色的 hieradata 复制链接链接已复制到粘贴板!
heat 模板集合包含一组参数,可用于将额外的配置传递给某些节点类型。这些参数将配置保存为节点上 Puppet 配置的 hieradata :
- ControllerExtraConfig
- 要添加到所有 Controller 节点的配置。
- ComputeExtraConfig
- 要添加到所有 Compute 节点的配置。
- BlockStorageExtraConfig
- 要添加到所有块存储节点的配置。
- ObjectStorageExtraConfig
- 要添加到所有对象存储节点的配置。
- CephStorageExtraConfig
- 要添加到所有 Ceph Storage 节点的配置。
- [ROLE]ExtraConfig
-
要添加到可组合角色的配置。将
[ROLE]替换为可组合角色名称。 - ExtraConfig
- 要添加到所有节点的配置。
流程
要在部署后配置过程中添加额外的配置,请在
parameter_defaults部分中创建一个包含这些参数的环境文件。例如,要将 Compute 主机保留的内存增加到 1024 MB,并将 VNC keymap 设置为日语,请使用ComputeExtraConfig参数中的以下条目:parameter_defaults: ComputeExtraConfig: nova::compute::reserved_host_memory: 1024 nova::compute::vnc_keymap: japarameter_defaults: ComputeExtraConfig: nova::compute::reserved_host_memory: 1024 nova::compute::vnc_keymap: jaCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将此环境文件包含在
openstack overcloud deploy命令中,以及与部署相关的任何其他环境文件。
您只能定义每个参数一次。后续用法会覆盖之前的值。
5.5. puppet :为单个节点自定义 hieradata 复制链接链接已复制到粘贴板!
您可以使用 heat 模板集合为单个节点设置 Puppet hieradata:
流程
从节点的内省数据识别系统 UUID:
openstack baremetal introspection data save 9dcc87ae-4c6d-4ede-81a5-9b20d7dc4a14 | jq .extra.system.product.uuid
$ openstack baremetal introspection data save 9dcc87ae-4c6d-4ede-81a5-9b20d7dc4a14 | jq .extra.system.product.uuidCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令返回一个系统 UUID。例如:
"f5055c6c-477f-47fb-afe5-95c6928c407f"
"f5055c6c-477f-47fb-afe5-95c6928c407f"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建环境文件以定义特定于节点的 hieradata,并将
per_node.yaml模板注册到预先配置 hook。在NodeDataLookup参数中包括您要配置的节点的系统 UUID:resource_registry: OS::TripleO::ComputeExtraConfigPre: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/pre_deploy/per_node.yaml parameter_defaults: NodeDataLookup: '{"f5055c6c-477f-47fb-afe5-95c6928c407f": {"nova::compute::vcpu_pin_set": [ "2", "3" ]}}'resource_registry: OS::TripleO::ComputeExtraConfigPre: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/pre_deploy/per_node.yaml parameter_defaults: NodeDataLookup: '{"f5055c6c-477f-47fb-afe5-95c6928c407f": {"nova::compute::vcpu_pin_set": [ "2", "3" ]}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将此环境文件包含在
openstack overcloud deploy命令中,以及与部署相关的任何其他环境文件。
per_node.yaml 模板在与每个系统 UUID 对应的节点上生成一组 hieradata 文件,其中包含您定义的 hieradata。如果没有定义 UUID,则生成的 hieradata 文件为空。在本例中,per_node.yaml 模板在所有 Compute 节点上运行,由 OS::TripleO::ComputeExtraConfigPre hook 定义,但只有系统 UUID f5055c6c-477f-47fb-afe5-95c6928c407f 接收 hieradata。
您可以使用此机制来根据特定要求定制每个节点。
5.6. puppet :应用自定义清单 复制链接链接已复制到粘贴板!
在某些情况下,您可能想要在 overcloud 节点上安装和配置一些额外的组件。您可以使用主配置完成后应用到节点的自定义 Puppet 清单来达到此目的。作为基本示例,您可能想要在每个节点上安装 motd
流程
创建可启动 Puppet 配置的 heat 模板
~/templates/custom_puppet_config.yaml。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例在模板中包含
/home/stack/templates/motd.pp,并将它传递给配置的节点。motd.pp文件包含安装和配置motd所需的 Puppet 类。创建一个环境文件
~templates/puppet_post_config.yaml,它将您的 heat 模板注册为OS::TripleO::NodeExtraConfigPost:资源类型。resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/custom_puppet_config.yaml
resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/custom_puppet_config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将此环境文件包含在
openstack overcloud deploy命令中,以及与部署相关的任何其他环境文件。openstack overcloud deploy --templates \ ... -e /home/stack/templates/puppet_post_config.yaml \ ...$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/puppet_post_config.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会将
motd.pp的配置应用到 overcloud 中的所有节点。
第 6 章 director 安装准备 复制链接链接已复制到粘贴板!
要安装和配置 director,您必须完成一些准备任务,以确保您已将 undercloud 注册到红帽客户门户网站或 Red Hat Satellite 服务器,已安装了 director 软件包,并且您已配置了一个容器镜像源,以便 director 在安装过程中拉取容器镜像。
6.1. 准备 undercloud 复制链接链接已复制到粘贴板!
在安装 director 前,您必须在主机上完成一些基本配置。
步骤
-
以
root用户身份登录 undercloud。 创建
stack用户:useradd stack
[root@director ~]# useradd stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为该用户设置密码:
passwd stack
[root@director ~]# passwd stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 进行以下操作,以使用户在使用
sudo时无需输入密码:echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack chmod 0440 /etc/sudoers.d/stack
[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@director ~]# chmod 0440 /etc/sudoers.d/stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到新的
stack用户:su - stack
[root@director ~]# su - stack [stack@director ~]$Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为系统镜像和 heat 模板创建目录:
mkdir ~/images mkdir ~/templates
[stack@director ~]$ mkdir ~/images [stack@director ~]$ mkdir ~/templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow director 使用系统镜像和 heat 模板来创建 overcloud 环境。红帽建议创建这些目录来帮助您组织本地文件系统。
检查 undercloud 的基础和完整主机名:
hostname hostname -f
[stack@director ~]$ hostname [stack@director ~]$ hostname -fCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果上述命令没有显示正确的完全限定主机名或报告错误,则使用
hostnamectl设置主机名:sudo hostnamectl set-hostname undercloud.example.com
[stack@director ~]$ sudo hostnamectl set-hostname undercloud.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您所使用的 DNS 服务器无法解析 undercloud 主机完全限定域名 (FQDN),请编辑
/etc/hosts并为系统主机名包含一个条目。/etc/hosts中的 IP 地址必须与您计划用于 undercloud 公共 API 的地址匹配。例如,如果系统使用undercloud.example.com作为 FQDN,使用10.0.0.1作为 IP 地址,则将以下行添加到/etc/hosts:10.0.0.1 undercloud.example.com undercloud
10.0.0.1 undercloud.example.com undercloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您计划让 Red Hat OpenStack Platform director 位于 overcloud 或其身份提供程序之外的独立域,则必须将额外的域添加到 /etc/resolv.conf:
search overcloud.com idp.overcloud.com
search overcloud.com idp.overcloud.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2. 注册 undercloud 并附加订阅 复制链接链接已复制到粘贴板!
在安装 director 前,您必须运行 subscription-manager 来注册 undercloud 并附加有效的 Red Hat OpenStack Platform 订阅。
步骤
-
以
stack用户身份登录 undercloud。 在红帽 Content Delivery Network 或 Red Hat Satellite 注册您的系统。例如,运行以下命令在 Content Delivery Network 中注册系统。根据提示输入您的客户门户网站用户名和密码:
sudo subscription-manager register
[stack@director ~]$ sudo subscription-manager registerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查找 Red Hat OpenStack Platform (RHOSP) director 的权利池 ID:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 找到
Pool ID值并附加 Red Hat OpenStack Platform 17.0 权利:sudo subscription-manager attach --pool=Valid-Pool-Number-123456
[stack@director ~]$ sudo subscription-manager attach --pool=Valid-Pool-Number-123456Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 undercloud 锁定到 Red Hat Enterprise Linux 9.0:
sudo subscription-manager release --set=9.0
$ sudo subscription-manager release --set=9.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3. 为 undercloud 启用软件仓库 复制链接链接已复制到粘贴板!
启用 undercloud 所需的软件仓库,并将系统软件包更新至最新版本。
步骤
-
以
stack用户身份登录 undercloud。 禁用所有默认的软件仓库,然后启用所需的 Red Hat Enterprise Linux 软件仓库:
sudo subscription-manager repos --disable=* 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-for-rhel-9-x86_64-rpms --enable=fast-datapath-for-rhel-9-x86_64-rpms
[stack@director ~]$ sudo subscription-manager repos --disable=* [stack@director ~]$ 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-for-rhel-9-x86_64-rpms --enable=fast-datapath-for-rhel-9-x86_64-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这些仓库包括了安装 director 所需的软件包。
在系统上执行更新,确保您有最新的基本系统软件包:
sudo dnf update -y sudo reboot
[stack@director ~]$ sudo dnf update -y [stack@director ~]$ sudo rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. 安装 director 软件包 复制链接链接已复制到粘贴板!
安装与 Red Hat OpenStack Platform director 相关的软件包。
步骤
安装用于安装和配置 director 的命令行工具:
sudo dnf install -y python3-tripleoclient
[stack@director ~]$ sudo dnf install -y python3-tripleoclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5. 准备容器镜像 复制链接链接已复制到粘贴板!
undercloud 安装需要一个环境文件来确定从何处获取容器镜像以及如何存储它们。生成并自定义此环境文件,您可以使用这个文件准备容器镜像。
如果需要为您的 undercloud 配置特定的容器镜像版本,必须将镜像固定到特定的版本。有关更多信息,请参阅为 undercloud 固定容器镜像。
步骤
-
以
stack用户身份登录 undercloud 主机。 生成默认的容器镜像准备文件:
openstack tripleo container image prepare default \ --local-push-destination \ --output-env-file containers-prepare-parameter.yaml
$ openstack tripleo container image prepare default \ --local-push-destination \ --output-env-file containers-prepare-parameter.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令包括以下附加选项:
-
--local-push-destination,在 undercloud 上设置 registry 作为存储容器镜像的位置。这意味着 director 从 Red Hat Container Catalog 拉取必要的镜像并将其推送到 undercloud 上的 registry 中。director 将该 registry 用作容器镜像源。如果直接从 Red Hat Container Catalog 拉取镜像,请忽略这个选项。 --output-env-file是环境文件名称。此文件的内容包括用于准备您的容器镜像的参数。在本例中,文件的名称是containers-prepare-parameter.yaml。注意您可以使用相同的
containers-prepare-parameter.yaml文件为 undercloud 和 overcloud 定义容器镜像源。
-
-
修改
containers-prepare-parameter.yaml以符合您的需求。
6.6. 容器镜像准备参数 复制链接链接已复制到粘贴板!
用于准备您的容器的默认文件 (containers-prepare-parameter.yaml) 包含 ContainerImagePrepare heat 参数。此参数定义一个用于准备一系列镜像的策略列表:
每一策略接受一组子参数,它们定义要使用哪些镜像以及对这些镜像执行哪些操作。下表包含有关您可与每个 ContainerImagePrepare 策略配合使用的子参数的信息:
| 参数 | 描述 |
|---|---|
|
| 用于从策略中排除镜像名称的正则表达式列表。 |
|
|
用于在策略中包含的正则表达式列表。至少一个镜像名称必须与现有镜像匹配。如果指定了 |
|
|
要附加到目标镜像标签的字符串。例如,如果您使用标签 17.0.0-5.161 拉取镜像并将 |
|
| 过滤想要修改的镜像的镜像标签字典。如果镜像与定义的标签匹配,则 director 将该镜像包括在修改过程中。 |
|
| 在上传期间但在将镜像推送到目标 registry 之前运行的 ansible 角色名称字符串。 |
|
|
要传递给 |
|
| 定义用于在上传过程中要将镜像推送到的 registry 的命名空间。
当直接从 Red Hat Container Catalog 拉取镜像时,如果在生产环境中将此参数设置为
如果 |
|
| 从中拉取原始容器镜像的源 registry 。 |
|
|
用于定义从何处获取初始镜像的 |
|
|
使用指定容器镜像元数据标签的值为每个镜像创建标签,并拉取该标记的镜像。例如,如果设置了 |
将镜像推送到 undercloud 时,请使用 push_destination: true 而不是 push_destination: UNDERCLOUD_IP:PORT。push_destination: true 方法在 IPv4 和 IPv6 地址之间提供了一定程度的一致性。
set 参数接受一组 key: value 定义:
| 键 | 描述 |
|---|---|
|
| Ceph Storage 容器镜像的名称。 |
|
| Ceph Storage 容器镜像的命名空间。 |
|
| Ceph Storage 容器镜像的标签。 |
|
| Ceph Storage Alert Manager 容器镜像的名称、命名空间和标签。 |
|
| Ceph Storage Grafana 容器镜像的名称、命名空间和标签。 |
|
| Ceph Storage Node Exporter 容器镜像的名称、命名空间和标签。 |
|
| Ceph Storage Prometheus 容器镜像的名称、命名空间和标签。 |
|
| 各个 OpenStack 服务镜像的前缀。 |
|
| 各个 OpenStack 服务镜像的后缀。 |
|
| 各个 OpenStack 服务镜像的命名空间。 |
|
|
用于确定要使用的 OpenStack Networking (neutron) 容器的驱动程序。null 值代表使用标准的 |
|
|
为来自源的所有镜像设置特定的标签。如果没有定义,director 将 Red Hat OpenStack Platform 版本号用作默认值。此参数优先于 |
容器镜像使用基于 Red Hat OpenStack Platform 版本的多流标签。这意味着不再有 latest 标签。
6.7. 容器镜像标记准则 复制链接链接已复制到粘贴板!
Red Hat Container Registry 使用特定的版本格式来标记所有 Red Hat OpenStack Platform 容器镜像。此格式遵循每个容器的标签元数据,即 version-release。
- version
- 对应于 Red Hat OpenStack Platform 的主要和次要版本。这些版本充当包含一个或多个发行版本的流。
- release
- 对应于版本流中特定容器镜像版本的发行版本。
例如,如果最新版本的 Red Hat OpenStack Platform 为 17.0.0,容器镜像的发行版本为 5.161,则生成的容器镜像标签为 17.0.0-5.161。
Red Hat Container Registry 还使用一组主要和次要 version 标签,链接到该容器镜像版本的最新发行版本。例如,17.0 和 17.0.0 链接到 17.0.0 容器流中的最新 版本。如果出现 17.0 的新次要发行版本,则 17.0 标签链接到 新次要发行版本 流的最新发行版本,而 17.0.0 标签则继续链接到 17.0.0 流中的最新版本。
ContainerImagePrepare 参数包含两个子参数,可用于确定要下载的容器镜像。这些子参数是 set 字典中的 tag 参数,以及 tag_from_label 参数。使用以下准则来确定要使用 tag 还是 tag_from_label。
tag的默认值是您的 OpenStack Platform 版本的主要版本。对于此版本,这是 17.0。这始终对应于最新的次要版本和发行版本。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要更改为 OpenStack Platform 容器镜像的特定次要版本,请将标签设置为次要版本。例如,要更改为 17.0.2,将
tag设置为 17.0.2。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在设置
tag时,director 始终会在安装和更新期间下载tag中设置的版本的最新容器镜像release。 如果没有设置
tag,则 director 会结合使用tag_from_label的值和最新的主要版本。Copy to Clipboard Copied! Toggle word wrap Toggle overflow tag_from_label参数根据其从 Red Hat Container Registry 中检查到的最新容器镜像发行版本的标签元数据生成标签。例如,特定容器的标签可能会使用以下version和release元数据:"Labels": { "release": "5.161", "version": "17.0.0", ... }"Labels": { "release": "5.161", "version": "17.0.0", ... }Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
tag_from_label的默认值为{version}-{release},对应于每个容器镜像的版本和发行版本元数据标签。例如,如果容器镜像设置了 17.0.0,release设置了 5.161,则生成的容器镜像标签为 17.0.0-5.161。 -
tag参数始终优先于tag_from_label参数。要使用tag_from_label,在容器准备配置中省略tag参数。 -
tag和tag_from_label之间的一个关键区别是:director 仅基于主要或次要版本标签使用tag拉取镜像,Red Hat Container Registry 将这些标签链接到版本流中的最新镜像发行版本,而 director 使用tag_from_label对每个容器镜像执行元数据检查,以便 director 生成标签并拉取对应的镜像。
6.8. 从私有 registry 获取容器镜像 复制链接链接已复制到粘贴板!
registry.redhat.io registry 需要身份验证才能访问和拉取镜像。要通过 registry.redhat.io 和其他私有 registry 进行身份验证,请在 containers-prepare-parameter.yaml 文件中包括 ContainerImageRegistryCredentials 和 ContainerImageRegistryLogin 参数。
ContainerImageRegistryCredentials
有些容器镜像 registry 需要进行身份验证才能访问镜像。在这种情况下,请使用您的 containers-prepare-parameter.yaml 环境文件中的 ContainerImageRegistryCredentials 参数。ContainerImageRegistryCredentials 参数使用一组基于私有 registry URL 的键。每个私有 registry URL 使用其自己的键和值对定义用户名(键)和密码(值)。这提供了一种为多个私有 registry 指定凭据的方法。
在示例中,用身份验证凭据替换 my_username 和 my_password。红帽建议创建一个 registry 服务帐户并使用这些凭据访问 registry.redhat.io 内容,而不使用您的个人用户凭据。
要指定多个 registry 的身份验证详情,请在 ContainerImageRegistryCredentials 中为每个 registry 设置多个键对值:
默认 ContainerImagePrepare 参数从需要进行身份验证的 registry.redhat.io 拉取容器镜像。
如需更多信息,请参阅 Red Hat Container Registry 身份验证。
ContainerImageRegistryLogin
ContainerImageRegistryLogin 参数用于控制 overcloud 节点系统是否需要登录到远程 registry 来获取容器镜像。当您想让 overcloud 节点直接拉取镜像,而不是使用 undercloud 托管镜像时,会出现这种情况。
如果 push_destination 设置为 false 或未用于给定策略,则必须将 ContainerImageRegistryLogin 设置为 true。
但是,如果 overcloud 节点没有与 ContainerImageRegistryCredentials 中定义的 registry 主机的网络连接,并将此 ContainerImageRegistryLogin 设置为 true,则尝试进行登录时部署可能会失败。如果 overcloud 节点没有与 ContainerImageRegistryCredentials 中定义的 registry 主机的网络连接,请将 push_destination 设置为 true,将 ContainerImageRegistryLogin 设置为 false,以便 overcloud 节点从 undercloud 拉取镜像。
6.9. 分层镜像准备条目 复制链接链接已复制到粘贴板!
ContainerImagePrepare 参数的值是一个 YAML 列表。这意味着您可以指定多个条目。
以下示例演示了,director 使用所有镜像的最新版本,nova-api 镜像除外,该镜像使用标记为 17.0-hotfix 的版本:
includes 和 excludes 参数使用正则表达式来控制每个条目的镜像筛选。匹配 includes 策略的镜像的优先级高于 excludes 匹配项。镜像名称必须与 includes 或 excludes 正则表达式值匹配。
6.10. 部署厂商插件 复制链接链接已复制到粘贴板!
要将一些第三方硬件用作块存储后端,您必须部署厂商插件。以下示例演示了如何部署 vendor 插件,以使用 Dell EMC 硬件作为块存储后端。
流程
为您的 overcloud 创建新的容器镜像文件:
sudo openstack tripleo container image prepare default \ --local-push-destination \ --output-env-file containers-prepare-parameter-dellemc.yaml$ sudo openstack tripleo container image prepare default \ --local-push-destination \ --output-env-file containers-prepare-parameter-dellemc.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 编辑 containers-prepare-parameter-dellemc.yaml 文件。
在 Red Hat OpenStack Platform 主容器镜像的策略中添加
exclude参数。使用此参数排除厂商容器镜像替换的容器镜像。在示例中,容器镜像是cinder-volume镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
ContainerImagePrepare参数中添加新策略,其中包含厂商插件的替代容器镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 registry.connect.redhat.com registry 的身份验证详情添加到
ContainerImageRegistryCredentials参数中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存
containers-prepare-parameter-dellemc.yaml文件。 使用任何部署命令(如
openstack overcloud deploy)包含containers-prepare-parameter-dellemc.yaml文件:openstack overcloud deploy --templates ... -e containers-prepare-parameter-dellemc.yaml ...$ openstack overcloud deploy --templates ... -e containers-prepare-parameter-dellemc.yaml ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当 director 部署 overcloud 时,overcloud 使用厂商容器镜像而不是标准容器镜像。
- 重要
-
containers-prepare-parameter-dellemc.yaml文件替换了 overcloud 部署中的标准containers-prepare-parameter.yaml文件。不要在 overcloud 部署中包含标准containers-prepare-parameter.yaml文件。保留标准的containers-prepare-parameter.yaml文件,用于您的 undercloud 安装和更新。
6.11. 排除 Ceph Storage 容器镜像 复制链接链接已复制到粘贴板!
默认的 overcloud 角色配置使用默认的 Controller、Compute 和 Ceph Storage 角色。但是,如果使用默认角色配置来部署不含 Ceph Storage 节点的 overcloud,director 仍然会从 Red Hat Container Registry 拉取 Ceph Storage 容器镜像,因为这些镜像是作为默认配置的一部分包含在其中。
如果您的 overcloud 不需要 Ceph Storage 容器,则可以将 director 配置为不从 Red Hat Container Registry 拉取 Ceph Storage 容器镜像。
步骤
编辑
containers-prepare-parameter.yaml文件以排除 Ceph Storage 容器:Copy to Clipboard Copied! Toggle word wrap Toggle overflow excludes参数使用正则表达式来排除包含ceph或prometheus字符串的任何容器镜像。-
保存
containers-prepare-parameter.yaml文件。
6.11.1. 准备期间修改镜像 复制链接链接已复制到粘贴板!
可在准备镜像期间修改镜像,然后立即使用修改的镜像部署 overcloud。
Red Hat OpenStack Platform (RHOSP) Director 支持在准备 RHOSP 容器(而非 Ceph 容器)期间修改镜像。
修改镜像的情况包括:
- 作为连续集成管道的一个部分,在部署之前使用要测试的更改修改镜像。
- 作为开发工作流的一个部分,必须部署本地更改以进行测试和开发。
- 必须部署更改,但更改没有通过镜像构建管道提供。例如,添加专有附加组件或紧急修复。
要在准备期间修改镜像,可在您要修改的每个镜像上调用 Ansible 角色。该角色提取源镜像,进行请求的更改,并标记结果。准备命令可将镜像推送到目标 registry,并设置 heat 参数以引用修改的镜像。
Ansible 角色 tripleo-modify-image 与所需的角色接口相一致,并提供修改用例必需的行为。使用 ContainerImagePrepare 参数中与修改相关的键控制修改:
-
modify_role指定要为每个镜像调用的 Ansible 角色进行修改。 -
modify_append_tag将字符串附加到源镜像标签的末尾。这可以标明生成的镜像已被修改过。如果push_destinationregistry 已包含修改的镜像,则使用此参数跳过修改。在每次修改镜像时都更改modify_append_tag。 -
modify_vars是要传递给角色的 Ansible 变量的字典。
要选择 tripleo-modify-image 角色处理的用例,将 tasks_from 变量设置为该角色中所需的文件。
在开发和测试修改镜像的 ContainerImagePrepare 条目时,运行镜像准备命令(无需任何其他选项),以确认镜像已如期修改:
sudo openstack tripleo container image prepare \ -e ~/containers-prepare-parameter.yaml
sudo openstack tripleo container image prepare \
-e ~/containers-prepare-parameter.yaml
要使用 openstack tripleo container image prepare 命令,您的 undercloud 必须包含一个正在运行的 image-serve registry。这样,在新的 undercloud 安装之前您将无法运行此命令,因为 image-serve registry 将不会被安装。您可以在成功安装 undercloud 后运行此命令。
6.11.2. 更新容器镜像的现有软件包 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP) director 支持更新 RHOSP 容器的容器镜像上的现有软件包,不适用于 Ceph 容器。
步骤
以下示例
ContainerImagePrepare条目使用 undercloud 主机的 dnf 软件仓库配置在容器镜像的所有软件包中更新:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.3. 将额外的 RPM 文件安装到容器镜像中 复制链接链接已复制到粘贴板!
您可以在容器镜像中安装 RPM 文件的目录。这对安装修补程序、本地软件包内部版本或任何通过软件包仓库无法获取的软件包都非常有用。
Red Hat OpenStack Platform (RHOSP) Director 支持将额外的 RPM 文件安装到 RHOSP 容器的容器镜像,而不是 Ceph 容器。
步骤
以下示例
ContainerImagePrepare条目仅在nova-compute镜像上安装一些热修复软件包:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.4. 通过自定义 Dockerfile 修改容器镜像 复制链接链接已复制到粘贴板!
您可以指定包含 Dockerfile 的目录,以进行必要的更改。调用 tripleo-modify-image 角色时,该角色生成 Dockerfile.modified 文件,而该文件更改 FROM 指令并添加额外的 LABEL 指令。
Red Hat OpenStack Platform (RHOSP) Director 支持使用 RHOSP 容器(而非 Ceph 容器)的自定义 Dockerfile 修改容器镜像。
步骤
以下示例在
nova-compute镜像上运行自定义 Dockerfile:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例显示了
/home/stack/nova-custom/Dockerfile文件。运行任何USER根指令后,必须切换回原始镜像默认用户:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11.5. 为容器镜像准备 Satellite 服务器 复制链接链接已复制到粘贴板!
Red Hat Satellite 6 提供了注册表同步功能。通过该功能可将多个镜像提取到 Satellite 服务器中,作为应用程序生命周期的一部分加以管理。Satellite 也可以作为 registry 供其他启用容器功能的系统使用。有关管理容器镜像的更多信息,请参阅 Red Hat Satellite 6 内容管理指南中的管理容器镜像。
以下操作过程示例中使用了 Red Hat Satellite 6 的 hammer 命令行工具和一个名为 ACME 的示例组织。请将该组织替换为您自己 Satellite 6 中的组织。
此过程需要身份验证凭据以从 registry.redhat.io 访问容器镜像。红帽建议创建一个 registry 服务帐户并使用这些凭据访问 registry.redhat.io 内容,而不使用您的个人用户凭据。有关更多信息,请参阅“红帽容器 registry 身份验证”。
步骤
创建所有容器镜像的列表:
sudo podman search --limit 1000 "registry.redhat.io/rhosp-rhel9" --format="{{ .Name }}" | sort > satellite_images sudo podman search --limit 1000 "registry.redhat.io/rhceph" | grep rhceph-5-dashboard-rhel8 sudo podman search --limit 1000 "registry.redhat.io/rhceph" | grep rhceph-5-rhel8 sudo podman search --limit 1000 "registry.redhat.io/openshift" | grep ose-prometheus$ sudo podman search --limit 1000 "registry.redhat.io/rhosp-rhel9" --format="{{ .Name }}" | sort > satellite_images $ sudo podman search --limit 1000 "registry.redhat.io/rhceph" | grep rhceph-5-dashboard-rhel8 $ sudo podman search --limit 1000 "registry.redhat.io/rhceph" | grep rhceph-5-rhel8 $ sudo podman search --limit 1000 "registry.redhat.io/openshift" | grep ose-prometheusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您计划安装 Ceph 并启用 Ceph 仪表板,则需要以下 ose-prometheus 容器:
registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6 registry.redhat.io/openshift4/ose-prometheus:v4.6 registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6
registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6 registry.redhat.io/openshift4/ose-prometheus:v4.6 registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
satellite_images文件复制到包含 Satellite 6hammer工具的系统中。或者,根据 Hammer CLI 指南中的说明将hammer工具安装到 undercloud 中。 运行以下
hammer命令以在 Satellite 组织中创建新产品(OSP 容器):hammer product create \ --organization "ACME" \ --name "OSP Containers"
$ hammer product create \ --organization "ACME" \ --name "OSP Containers"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该定制产品将会包含您的镜像。
添加
satellite_images文件中的 overcloud 容器镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加 Ceph Storage 容器镜像:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果要安装 Ceph 仪表板,请在
hammer repository create命令中 include--name rhceph-5-dashboard-rhel8:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 同步容器镜像:
hammer product synchronize \ --organization "ACME" \ --name "OSP Containers"
$ hammer product synchronize \ --organization "ACME" \ --name "OSP Containers"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待 Satellite 服务器完成同步。
注意根据具体配置情况,
hammer可能会询问您的 Satellite 服务器用户名和密码。您可以使用配置文件将hammer配置为自动登录。有关更多信息,请参阅 Hammer CLI 指南中的身份验证章节。-
如果您的 Satellite 6 服务器使用内容视图,请创建一个用于纳入镜像的新内容视图版本,并在应用生命周期的不同环境之间推进这个视图。这在很大程度上取决于您如何构建应用程序的生命周期。例如,如果您的生命周期中有一个称为
production的环境,并且希望容器镜像在该环境中可用,则创建一个包含容器镜像的内容视图,并将该内容视图推进到production环境中。有关更多信息,请参阅管理内容视图。 检查
base镜像的可用标签:hammer docker tag list --repository "base" \ --organization "ACME" \ --lifecycle-environment "production" \ --product "OSP Containers"
$ hammer docker tag list --repository "base" \ --organization "ACME" \ --lifecycle-environment "production" \ --product "OSP Containers"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令显示内容视图中特定环境的 OpenStack Platform 容器镜像的标签。
返回到 undercloud,并生成默认的环境文件,它将您的 Satellite 服务器用作源来准备镜像。运行以下示例命令以生成环境文件:
sudo openstack tripleo container image prepare default \ --output-env-file containers-prepare-parameter.yaml
$ sudo openstack tripleo container image prepare default \ --output-env-file containers-prepare-parameter.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
--output-env-file是环境文件名称。此文件的内容包括用于为 undercloud 准备容器镜像的参数。在本例中,文件的名称是containers-prepare-parameter.yaml。
-
编辑
containers-prepare-parameter.yaml文件并修改以下参数:-
push_destination- 根据您选择的容器镜像管理策略,将此参数设置为true或false。如果将此参数设置为false,则 overcloud 节点直接从 Satellite 拉取镜像。如果将此参数设置为true,则 director 将镜像从 Satellite 拉取到 undercloud registry,overcloud 从 undercloud registry 拉取镜像。 -
namespace- Satellite 服务器上注册表的 URL。 name_prefix- 该前缀基于 Satellite 6 规范。它的值根据您是否使用了内容视图而不同:-
如果您使用了内容视图,则前缀的结构为
[组织]-[环境]-[内容视图]-[产品]-。例如:acme-production-myosp16-osp_containers-。 -
如果不使用内容视图,则前缀的结构为
[组织]-[产品]-。例如:acme-osp_containers-。
-
如果您使用了内容视图,则前缀的结构为
-
ceph_namespace、ceph_image、ceph_tag- 如果使用 Ceph Storage,请额外纳入这些参数以定义 Ceph Storage 容器镜像的位置。请注意,ceph_image现包含特定于 Satellite 的前缀。这个前缀与name_prefix选项的值相同。
-
以下示例环境文件包含特定于 Satellite 的参数:
要使用存储在 Red Hat Satellite Server 上的特定容器镜像版本,请将 标签 键值对设置为 set 字典中的特定版本。例如,要使用 17.0.2 镜像流,请在 set 字典中设置 tag: 17.0.2。
您必须在 undercloud.conf 配置文件中定义 containers-prepare-parameter.yaml 环境文件,否则 undercloud 将使用默认值:
container_images_file = /home/stack/containers-prepare-parameter.yaml
container_images_file = /home/stack/containers-prepare-parameter.yaml
第 7 章 在 undercloud 上安装 director 复制链接链接已复制到粘贴板!
要配置并安装 director,请在 undercloud.conf 文件中设置适当的参数,并运行 undercloud 安装命令。安装 director 后,导入 director 在节点置备期间用于写入裸机节点的 overcloud 镜像。
7.1. 配置 director 复制链接链接已复制到粘贴板!
director 安装过程需要 undercloud.conf 配置文件中的某些设置,director 从 stack 用户的主目录中读取该文件。完成以下步骤,复制默认模板作为基础进行配置。
步骤
将默认模板复制到
stack用户的主目录:cp \ /usr/share/python-tripleoclient/undercloud.conf.sample \ ~/undercloud.conf
[stack@director ~]$ cp \ /usr/share/python-tripleoclient/undercloud.conf.sample \ ~/undercloud.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
编辑
undercloud.conf文件。这个文件包含用于配置 undercloud 的设置。如果忽略或注释掉某个参数,undercloud 安装将使用默认值。
7.2. Director 配置参数 复制链接链接已复制到粘贴板!
以下列表包含用于配置 undercloud.conf 文件的参数的相关信息。将所有参数保留在相关部分内以避免出错。
您至少必须将 container_images_file 参数设置为包含容器镜像配置的环境文件。如果没有将此参数正确设置为适当的文件,则 director 无法从 ContainerImagePrepare 参数获取容器镜像规则集,也无法从 ContainerImageRegistryCredentials 参数获取容器 registry 身份验证详情。
默认值
以下参数会在 undercloud.conf 文件的 [DEFAULT] 部分中进行定义:
- additional_architectures
-
overcloud 支持的附加(内核)架构的列表。目前,overcloud 仅支持
x86_64架构。 - certificate_generation_ca
-
为所请求证书签名的 CA 的
certmonger别名。仅在设置了generate_service_certificate参数的情况下使用此选项。如果您选择localCA,certmonger 会将本地 CA 证书提取到/etc/pki/ca-trust/source/anchors/cm-local-ca.pem并将该证书添加到信任链中。 - clean_nodes
- 确定是否在部署之间和内省之后擦除硬盘。
- cleanup
-
清理临时文件。将此选项设置为
False,可在运行部署命令后保留部署期间使用的临时文件。这可用于调试生成的文件或者确定是否发生了错误。 - container_cli
-
用于容器管理的 CLI 工具。将此参数设置为
podman。Red Hat Enterprise Linux 9.0 只支持podman。 - container_healthcheck_disabled
-
禁用容器化服务运行状况检查。红帽建议您启用运行状况检查,并将此选项设置为
false。 - container_images_file
含有容器镜像信息的 Heat 环境文件。此文件可能包含以下条目:
- 所有需要的容器镜像的参数
-
ContainerImagePrepare参数(用于推动必要的镜像准备)。通常,含有此参数的文件被命名为containers-prepare-parameter.yaml。
- container_insecure_registries
-
供
podman使用的不安全 registry 列表。如果您想从其他来源(如私有容器 registry)拉取镜像,则使用此参数。在大多数情况下,如果在 Satellite 中注册了 undercloud,podman就有从 Red Hat Container Catalog 或 Satellite Server 拉取容器镜像的证书。 - container_registry_mirror
-
配置的
podman使用的可选registry-mirror。 - custom_env_files
- 要添加到 undercloud 安装中的其他环境文件。
- deployment_user
-
安装 undercloud 的用户。如果此参数保留为不设置,则使用当前的默认用户
stack。 - discovery_default_driver
-
为自动注册的节点设置默认驱动程序。需要启用
enable_node_discovery参数,且必须在enabled_drivers列表中包含驱动程序。 - enable_ironic; enable_ironic_inspector; enable_tempest; enable_validations
-
定义要为 director 启用的核心服务。保留这些参数设为
true。 - enable_node_discovery
-
自动注册通过 PXE 引导内省虚拟内存盘 (ramdisk) 的所有未知节点。新节点使用
fake作为默认驱动程序,但您可以设置discovery_default_driver覆盖它。您也可以使用内省规则为新注册的节点指定驱动程序信息。 - enable_routed_networks
- 定义是否支持路由的 control plane 网络。
- enabled_hardware_types
- 要为 undercloud 启用的硬件类型的列表。
- generate_service_certificate
-
定义 undercloud 安装期间是否生成 SSL/TLS 证书,此证书用于
undercloud_service_certificate参数。undercloud 安装会保存生成的证书/etc/pki/tls/certs/undercloud-[undercloud_public_vip].pem。certificate_generation_ca参数中定义的 CA 将为此证书签名。 - heat_container_image
- 要使用的 heat 容器镜像的 URL。请保留不设置。
- heat_native
-
使用
heat-all运行基于主机的 undercloud 配置。请保留为true。 - hieradata_override
-
在 director 上配置 Puppet hieradata 的
hieradata覆盖文件的路径,为undercloud.conf参数外的服务提供自定义配置。如果设置此参数,undercloud 安装会将此文件复制到/etc/puppet/hieradata目录并将其设为层次结构中的第一个文件。有关使用此功能的更多信息,请参阅在 undercloud 上配置 hieradata。 - inspection_extras
-
指定在内省的过程中是否启用额外的硬件集合。此参数在内省镜像上需要
python-hardware或python-hardware-detect软件包。 - inspection_interface
-
该 director 用来进行节点内省的网桥。这是 director 配置创建的自定义网桥。
LOCAL_INTERFACE会附加到这个网桥。请保留使用默认的值(br-ctlplane)。 - inspection_runbench
-
在节点内省过程中运行一组基准测试。将此参数设为
true以启用基准测试。如果您需要在检查注册节点的硬件时执行基准数据分析操作,则需要使用这个参数。 - ipv6_address_mode
undercloud 置备网络的 IPv6 地址配置模式。以下列表包含这个参数的可能值:
- dhcpv6-stateless - 使用路由器公告 (RA) 的地址配置以及使用 DHCPv6 的可选信息。
- DHCPv6-stateful - 地址配置和使用 DHCPv6 的可选信息。
- ipxe_enabled
-
定义使用 iPXE 还是标准的 PXE。默认为
true,其启用 iPXE。将此参数设置为false以使用标准 PXE。对于 PowerPC 部署,或混合了 PowerPC 和 x86 的部署,请将此值设置为false。 - local_interface
指定 director Provisioning NIC 的接口。这也是该 director 用于 DHCP 和 PXE 引导服务的设备。把这个项的值改为您选择的设备。使用
ip addr命令可以查看连接了哪些设备。以下是一个ip addr命令的结果输出示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个例子中,External NIC 使用
em0,Provisioning NIC 使用em1(当前没有被配置)。在这种情况下,将local_interface设置为em1。配置脚本会把这个接口附加到一个自定义的网桥(由inspection_interface参数定义)上。- local_ip
为 director Provisioning NIC 定义的 IP 地址。这也是 director 用于 DHCP 和 PXE 引导服务的 IP 地址。除非 Provisioning 网络需要使用其他子网(如该 IP 地址与环境中的现有 IP 地址或子网冲突)保留默认值
192.168.24.1/24。对于 IPv6,本地 IP 地址前缀长度必须是
/64,以支持有状态和无状态连接。- local_mtu
-
要用于
local_interface的最大传输单元 (MTU)。对于 undercloud 不要超过 1500。 - local_subnet
-
要用于 PXE 引导和 DHCP 接口的本地子网。
local_ip地址应该属于这个子网。默认值为ctlplane-subnet。 - net_config_override
-
网络配置覆盖模板的路径。如果设置此参数,undercloud 将使用 JSON 或 YAML 格式的模板以使用
os-net-config配置网络,并忽略undercloud.conf中设置的网络参数。当您要配置绑定或向接口添加一个选项时,请使用此参数。有关自定义 undercloud 网络接口的更多信息,请参阅配置 undercloud 网络接口。 - networks_file
-
覆盖用于
heat的网络文件。 - output_dir
- 输出状态目录、处理的 heat 模板和 Ansible 部署文件。
- overcloud_domain_name
要在部署 overcloud 时使用的 DNS 域名。
注意配置 overcloud 时,必须将
CloudDomain参数设置为匹配的值。配置 overcloud 时,在环境文件中设置此参数。- roles_file
- 要用来覆盖用于 undercloud 安装的默认角色文件的角色文件。强烈建议您将此参数保留为不设置,以便 director 安装使用默认的角色文件。
- scheduler_max_attempts
- 调度程序尝试部署实例的次数上限。此值必须大于或等于您期望一次部署的裸机节点数,以避免调度时的潜在争用情形。
- service_principal
- 使用该证书的服务的 Kerberos 主体。仅在您的 CA 需要 Kerberos 主体(如在 FreeIPA 中)时使用此参数。
- subnets
-
用于置备和内省的路由网络子网的列表。默认值仅包括
ctlplane-subnet子网。如需更多信息,请参阅 子网。 - templates
- 要覆盖的 heat 模板文件。
- undercloud_admin_host
通过 SSL/TLS 为 director 管理 API 端点定义的 IP 地址或主机名。director 配置将 IP 地址作为路由的 IP 地址附加到 director 软件网桥,其使用
/32子网掩码。如果
undercloud_admin_host不在与local_ip相同的 IP 网络中,您必须配置 undercloud 上 admin API 要侦听的接口。默认情况下,admin API 侦听br-ctlplane接口。有关如何配置 undercloud 网络接口的详情,请参考配置 undercloud 网络接口。- undercloud_debug
-
把 undercloud 服务的日志级别设置为
DEBUG。将此值设置为true以启用DEBUG日志级别。 - undercloud_enable_selinux
-
在部署期间启用或禁用 SELinux。除非调试问题,否则强烈建议保留此值设为
true。 - undercloud_hostname
- 定义 undercloud 的完全限定主机名。如果设置,undercloud 安装将配置所有系统主机名设置。如果保留未设置,undercloud 将使用当前的主机名,但您必须相应地配置所有主机名设置。
- undercloud_log_file
-
用于存储 undercloud 安装和升级日志的日志文件的路径。默认情况下,日志文件是主目录中的
install-undercloud.log。例如,/home/stack/install-undercloud.log。 - undercloud_nameservers
- 用于 undercloud 主机名解析的 DNS 名称服务器列表。
- undercloud_ntp_servers
- 帮助同步 undercloud 日期和时间的网络时间协议服务器列表。
- undercloud_public_host
通过 SSL/TLS 为 director 公共 API 端点定义的 IP 地址或主机名。director 配置将 IP 地址作为路由的 IP 地址附加到 director 软件网桥,其使用
/32子网掩码。如果
undercloud_public_host不在与local_ip相同的 IP 网络中,您必须将PublicVirtualInterface参数设置为您希望 undercloud 上公共 API 侦听的公共接口。默认情况下,公共 API 侦听br-ctlplane接口。在自定义环境文件中设置PublicVirtualInterface参数,并通过配置custom_env_files参数将自定义环境文件包含在undercloud.conf文件中。有关自定义 undercloud 网络接口的详情,请参考配置 undercloud 网络接口。
- undercloud_service_certificate
- 用于 OpenStack SSL/TLS 通信的证书的位置和文件名。理想的情况是从一个信任的证书认证机构获得这个证书。否则,生成自己的自签名证书。
- undercloud_timezone
- undercloud 的主机时区。如果未指定时区,director 将使用现有时区配置。
- undercloud_update_packages
- 定义是否在安装 undercloud 期间更新软件包。
子网
每个置备子网在 undercloud.conf 文件中都有一个对应的同名部分。例如,要创建称为 ctlplane-subnet 的子网,在 undercloud.conf 文件中使用以下示例:
您可以根据自身环境所需来指定相应数量的置备网络。
director 在创建子网后无法更改子网的 IP 地址。
- cidr
-
director 用来管理 overcloud 实例的网络。这是 undercloud
neutron服务管理的 Provisioning 网络。保留其默认值192.168.24.0/24,除非您需要 Provisioning 网络使用其他子网。 - masquerade
定义是否伪装
cidr中定义的用于外部访问的网络。这为 Provisioning 网络提供了一定程度的网络地址转换 (NAT),使 Provisioning 网络能够通过 director 进行外部访问。注意director 配置还使用相关
sysctl内核参数自动启用 IP 转发。- dhcp_start; dhcp_end
overcloud 节点 DHCP 分配范围的开始值和终止值。确保此范围包含有足够的 IP 地址来分配给您的节点。如果没有为子网指定,director 通过从子网的完整的 IP 范围内删除为
local_ip,gateway,undercloud_admin_host,undercloud_public_host, andinspection_iprange参数设置的值来决定。您可以通过指定 start 和 end address 对列表来为 undercloud control plane 子网配置非连续分配池。另外,您可以使用
dhcp_exclude选项在 IP 地址范围中排除 IP 地址。例如,以下配置同时创建分配池172.20.0.100-172.20.0.150和172.20.0.200-172.20.0.250:选项 1
dhcp_start = 172.20.0.100,172.20.0.200 dhcp_end = 172.20.0.150,172.20.0.250
dhcp_start = 172.20.0.100,172.20.0.200 dhcp_end = 172.20.0.150,172.20.0.250Copy to Clipboard Copied! Toggle word wrap Toggle overflow 选项 2
dhcp_start = 172.20.0.100 dhcp_end = 172.20.0.250 dhcp_exclude = 172.20.0.151-172.20.0.199
dhcp_start = 172.20.0.100 dhcp_end = 172.20.0.250 dhcp_exclude = 172.20.0.151-172.20.0.199Copy to Clipboard Copied! Toggle word wrap Toggle overflow - dhcp_exclude
DHCP 分配范围中排除的 IP 地址。例如,以下配置排除 IP 地址
172.20.0.105和 IP 地址范围172.20.0.210-172.20.0.219:dhcp_exclude = 172.20.0.105,172.20.0.210-172.20.0.219
dhcp_exclude = 172.20.0.105,172.20.0.210-172.20.0.219Copy to Clipboard Copied! Toggle word wrap Toggle overflow - dns_nameservers
-
特定于子网的 DNS 名称服务器。如果没有为子网定义名称服务器,子网将使用
undercloud_nameservers参数中定义的名称服务器。 - gateway
-
overcloud 实例的网关。它是 undercloud 主机,会把网络流量转发到外部网络。保留其默认值
192.168.24.1,除非您需要 director 使用其他 IP 地址,或想直接使用外部网关。 - host_routes
-
此网络上 overcloud 实例的 Neutron 管理的子网的主机路由。这也为 undercloud 上的
local_subnet配置主机路由。 - inspection_iprange
-
在检查过程中,此网络上的节点要使用的临时 IP 范围。这个范围不得与
dhcp_start和dhcp_ end定义的范围重叠,但必须位于同一个 IP 子网中。
根据您的配置修改这些参数的值。完成后,请保存文件。
7.3. 使用环境文件配置 undercloud 复制链接链接已复制到粘贴板!
您通过 undercloud.conf 文件配置 undercloud 的主要参数。您还可以使用包含 heat 参数的环境文件来执行额外的 undercloud 配置。
步骤
-
创建名为
/home/stack/templates/custom-undercloud-params.yaml的环境文件。 编辑此文件并包括您的 heat 参数。例如,要为特定的 OpenStack Platform 服务启用调试功能,请在
custom-undercloud-params.yaml文件中包括以下代码段:parameter_defaults: Debug: True
parameter_defaults: Debug: TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 完成后保存此文件。
编辑
undercloud.conf文件,找到custom_env_files参数。编辑该参数以指向custom-undercloud-params.yaml环境文件:custom_env_files = /home/stack/templates/custom-undercloud-params.yaml
custom_env_files = /home/stack/templates/custom-undercloud-params.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以使用逗号分隔列表指定多个环境文件。
director 安装在下次安装或升级 undercloud 的操作过程中包括此环境文件。
7.4. 用于 undercloud 配置的常见 heat 参数 复制链接链接已复制到粘贴板!
下表包含您可能在自定义环境文件中为 undercloud 设置的一些常见 heat 参数。
| 参数 | 描述 |
|---|---|
|
|
设置 undercloud |
|
|
设置 undercloud |
|
| 启用调试模式。 |
在自定义环境文件的 parameter_defaults 部分下设置这些参数:
parameter_defaults: Debug: True AdminPassword: "myp@ssw0rd!" AdminEmail: "admin@example.com"
parameter_defaults:
Debug: True
AdminPassword: "myp@ssw0rd!"
AdminEmail: "admin@example.com"
7.5. 在 undercloud 上配置 hieradata 复制链接链接已复制到粘贴板!
您可以通过在 director 上配置 Puppet hieradata,为可用 undercloud.conf 参数之外的服务提供自定义配置。
步骤
-
创建一个 hieradata 覆盖文件,例如
/home/stack/hieradata.yaml。 将自定义的 hieradata 添加到该文件。例如,添加以下代码段,将 Compute (nova) 服务参数
force_raw_images从默认值True改为False:nova::compute::force_raw_images: False
nova::compute::force_raw_images: FalseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有为您要设置的参数实施 Puppet,则使用以下方法配置该参数:
nova::config::nova_config: DEFAULT/<parameter_name>: value: <parameter_value>nova::config::nova_config: DEFAULT/<parameter_name>: value: <parameter_value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
nova::config::nova_config: DEFAULT/network_allocate_retries: value: 20 ironic/serial_console_state_timeout: value: 15nova::config::nova_config: DEFAULT/network_allocate_retries: value: 20 ironic/serial_console_state_timeout: value: 15Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
undercloud.conf文件中的hieradata_override参数设置为新/home/stack/hieradata.yaml文件的路径:hieradata_override = /home/stack/hieradata.yaml
hieradata_override = /home/stack/hieradata.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.6. 为使用 IPv6 的裸机置备配置 undercloud 复制链接链接已复制到粘贴板!
如果有使用 IPv6 的节点和基础架构,您可以将 undercloud 和置备网络配置为使用 IPv6 而不是 IPv4,以便 director 能够在 IPv6 节点上置备和部署 Red Hat OpenStack Platform。但是,有一些注意事项:
- 双堆栈 IPv4/6 不可用。
- Tempest 验证可能无法正确执行。
- 在升级过程中,无法进行 IPv4 到 IPv6 的迁移。
修改 undercloud.conf 文件,以便在 Red Hat OpenStack Platform 中启用 IPv6 置备。
先决条件
- undercloud 上的 IPv6 地址。有关更多信息,请参阅 Overcloud 的 IPv6 网络指南中的在 undercloud 上配置 IPv6 地址。
流程
-
打开
undercloud.conf文件。 将 IPv6 地址模式指定为 stateless 或 stateful :
[DEFAULT] ipv6_address_mode = <address_mode> ...
[DEFAULT] ipv6_address_mode = <address_mode> ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
根据 NIC 支持的模式,将 <
address_mode> 替换为dhcpv6-stateless或dhcpv6-stateful。
注意当您使用有状态地址模式时,固件、链加载程序和操作系统可能会使用不同的算法来生成 DHCP 服务器跟踪的 ID。DHCPv6 不会按 MAC 跟踪地址,如果请求者中的标识符值改变,但 MAC 地址保持不变,则不会提供相同的地址。因此,当使用有状态 DHCPv6 时,还必须完成下一步来配置网络接口。
-
根据 NIC 支持的模式,将 <
如果您将 undercloud 配置为使用有状态 DHCPv6,请指定用于裸机节点的网络接口:
[DEFAULT] ipv6_address_mode = dhcpv6-stateful ironic_enabled_network_interfaces = neutron,flat ...
[DEFAULT] ipv6_address_mode = dhcpv6-stateful ironic_enabled_network_interfaces = neutron,flat ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为裸机节点设置默认网络接口:
[DEFAULT] ... ironic_default_network_interface = neutron ...
[DEFAULT] ... ironic_default_network_interface = neutron ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定 undercloud 是否应该在 provisioning 网络中创建路由器:
[DEFAULT] ... enable_routed_networks: <true/false> ...
[DEFAULT] ... enable_routed_networks: <true/false> ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<true/false>替换为true来启用路由网络,并防止 undercloud 在置备网络上创建路由器。为true时,数据中心路由器必须提供路由器公告。 -
将
<true/false>替换为false来禁用路由网络,并在 provisioning 网络中创建一个路由器。
-
将
通过 SSL/TLS 配置本地 IP 地址和 director Admin API 和公共 API 端点的 IP 地址:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<ipv6_address> 替换为 undercloud 的 IPv6 地址。
-
将
可选:配置 director 用来管理实例的 provisioning 网络:
[ctlplane-subnet] cidr = <ipv6_address>/<ipv6_prefix> ...
[ctlplane-subnet] cidr = <ipv6_address>/<ipv6_prefix> ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<ipv6_address> 替换为在不使用默认 provisioning 网络时用于管理实例的网络的 IPv6 地址。 -
将 <
ipv6_prefix> 替换为在不使用默认置备网络时用于管理实例的网络的 IP 地址前缀。
-
将
为置备节点配置 DHCP 分配范围:
[ctlplane-subnet] cidr = <ipv6_address>/<ipv6_prefix> dhcp_start = <ipv6_address_dhcp_start> dhcp_end = <ipv6_address_dhcp_end> ...
[ctlplane-subnet] cidr = <ipv6_address>/<ipv6_prefix> dhcp_start = <ipv6_address_dhcp_start> dhcp_end = <ipv6_address_dhcp_end> ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<ipv6_address_dhcp_start> 替换为要用于 overcloud 节点的网络范围的 IPv6 地址。 -
将
<ipv6_address_dhcp_end> 替换为用于 overcloud 节点的网络范围末尾的 IPv6 地址。
-
将
可选:配置将流量转发到外部网络的网关:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在不使用默认网关时,将
<ipv6_gateway_address>替换为网关的 IPv6 地址。
-
在不使用默认网关时,将
将 DHCP 范围配置为在检查过程中使用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 <
ipv6_address_inspection_start> 替换为在检查过程中要使用的网络范围开始的 IPv6 地址。 -
将 <
ipv6_address_inspection_end> 替换为在检查过程中要使用的网络范围末尾的 IPv6 地址。
注意此范围不得与
dhcp_start和dhcp_end定义的范围重叠,但必须位于同一 IP 子网中。-
将 <
为子网配置 IPv6 名称服务器:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<ipv6_dns>替换为特定于子网的 DNS 名称服务器。
-
将
7.7. 配置 undercloud 网络接口 复制链接链接已复制到粘贴板!
在 undercloud.conf 文件中包含自定义网络配置,以使用特定的网络功能安装 undercloud。例如,一些接口可能没有 DHCP。在这种情况下,您必须在 undercloud.conf 文件中禁用这些接口的 DHCP,以便 os-net-config 可在 undercloud 安装过程中应用配置。
步骤
- 登录 undercloud 主机。
创建新文件
undercloud-os-net-config.yaml,并包含所需的网络配置。如需更多信息,请参阅 网络接口参考。
下面是一个示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要为特定接口创建网络绑定,请使用以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
undercloud-os-net-config.yaml文件的路径包含在undercloud.conf文件的net_config_override参数中:[DEFAULT] ... net_config_override=undercloud-os-net-config.yaml ...
[DEFAULT] ... net_config_override=undercloud-os-net-config.yaml ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意director 使用您在
net_config_override参数中包含的文件作为模板来生成/etc/os-net-config/config.yaml文件。os-net-config管理您在模板中定义的接口,因此您必须在此文件中执行所有 undercloud 网络接口自定义。- 安装 undercloud。
验证
在 undercloud 安装成功完成后,验证
/etc/os-net-net-config/config.yaml文件是否包含相关配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8. 安装 director 复制链接链接已复制到粘贴板!
完成以下步骤以安装 director 并执行一些基本安装后任务。
步骤
运行以下命令,以在 undercloud 上安装 director:
openstack undercloud install
[stack@director ~]$ openstack undercloud installCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令会启动 director 配置脚本。director 安装附加软件包并根据
undercloud.conf中的配置来配置其服务。这个脚本会需要一些时间来完成。此脚本会生成两个文件:
-
/home/stack/tripleo-deploy/undercloud/tripleo-undercloud-passwords.yaml- director 服务的所有密码列表。 -
/home/stack/stackrc- 一组初始化变量,可帮助您访问 director 命令行工具。
-
此脚本还会自动启动所有的 OpenStack Platform 服务容器。您可以使用以下命令来检查已启用的容器:
sudo podman ps
[stack@director ~]$ sudo podman psCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令初始化
stack用户来使用命令行工具:source ~/stackrc
[stack@director ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 提示现在指示 OpenStack 命令对 undercloud 进行验证并执行;
(undercloud) [stack@director ~]$Copy to Clipboard Copied! Toggle word wrap Toggle overflow
director 的安装已完成。您现在可以使用 director 命令行工具了。
7.9. 为 overcloud 节点获取镜像 复制链接链接已复制到粘贴板!
director 需要几个磁盘镜像用于置备 overcloud 节点:
- 一个内省内核和 ramdisk 用于通过 PXE 引导进行裸机系统内省。
- 一个部署内核和 ramdisk 用于系统置备和部署。
- overcloud 内核、ramdisk 和完整镜像形成一个 director 写入节点硬盘的基本 overcloud 系统。
您可以获取并安装您需要的镜像。当您不想运行任何其他 Red Hat OpenStack Platform (RHOSP)服务或消耗您的订阅权利时,您还可以获取并安装基本镜像以置备裸机操作系统。
7.9.1. 安装 overcloud 镜像 复制链接链接已复制到粘贴板!
您的 Red Hat OpenStack Platform (RHOSP)安装包括为 director 提供 overcloud-hardened-uefi-full.qcow2 overcloud 镜像的软件包。使用默认 CPU 架构 x86-64 部署 overcloud 时需要此镜像。将此镜像导入到 director 还会在 director PXE 服务器上安装内省镜像。
流程
-
以
stack用户的身份登录 undercloud。 Source
stackrc文件:source ~/stackrc
[stack@director ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
rhosp-director-images-uefi-x86_64和rhosp-director-images-ipa-x86_64软件包:sudo dnf install rhosp-director-images-uefi-x86_64 rhosp-director-images-ipa-x86_64
(undercloud) [stack@director ~]$ sudo dnf install rhosp-director-images-uefi-x86_64 rhosp-director-images-ipa-x86_64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 stack 用户的主目录
/home/中创建 images 目录:stack/imagesmkdir /home/stack/images
(undercloud) [stack@director ~]$ mkdir /home/stack/imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果目录已存在,请跳过这一步。
将镜像存档提取到
images目录中:cd ~/images for i in /usr/share/rhosp-director-images/ironic-python-agent-latest.tar /usr/share/rhosp-director-images/overcloud-hardened-uefi-full-latest.tar; do tar -xvf $i; done
(undercloud) [stack@director ~]$ cd ~/images (undercloud) [stack@director images]$ for i in /usr/share/rhosp-director-images/ironic-python-agent-latest.tar /usr/share/rhosp-director-images/overcloud-hardened-uefi-full-latest.tar; do tar -xvf $i; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将镜像导入 director:
openstack overcloud image upload --image-path /home/stack/images/
(undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令将 QCOW 中的镜像格式转换为 RAW,并提供对镜像上传进度状态的详细更新。
验证 overcloud 镜像是否已复制到
/var/lib/ironic/images/中:ls -l /var/lib/ironic/images/ total 1955660 -rw-r--r--. 1 root 42422 40442450944 Jan 29 11:59 overcloud-hardened-uefi-full.raw
(undercloud) [stack@director images]$ ls -l /var/lib/ironic/images/ total 1955660 -rw-r--r--. 1 root 42422 40442450944 Jan 29 11:59 overcloud-hardened-uefi-full.rawCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 director 是否已将内省 PXE 镜像复制到
/var/lib/ironic/httpboot:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.9.2. 最小 overcloud 镜像 复制链接链接已复制到粘贴板!
您可以使用 overcloud-minimal 镜像来置备裸机操作系统,其中您不想运行任何其他 Red Hat OpenStack Platform (RHOSP)服务或消耗其中一个订阅权利。
您的 RHOSP 安装包括 overcloud-minimal 软件包,为您提供了 director 的以下 overcloud 镜像:
-
overcloud-minimal -
overcloud-minimal-initrd -
overcloud-minimal-vmlinuz
流程
-
以
stack用户的身份登录 undercloud。 Source
stackrc文件:source ~/stackrc
[stack@director ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
overcloud-minimal软件包:sudo dnf install rhosp-director-images-minimal
(undercloud) [stack@director ~]$ sudo dnf install rhosp-director-images-minimalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将镜像存档解包到
stack用户主目录 (/home/stack/images) 中的images目录中:cd ~/images tar xf /usr/share/rhosp-director-images/overcloud-minimal-latest-17.0.tar
(undercloud) [stack@director ~]$ cd ~/images (undercloud) [stack@director images]$ tar xf /usr/share/rhosp-director-images/overcloud-minimal-latest-17.0.tarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将镜像导入 director:
openstack overcloud image upload --image-path /home/stack/images/ --image-type os --os-image-name overcloud-minimal.qcow2
(undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/ --image-type os --os-image-name overcloud-minimal.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令提供镜像上传进度状态的更新:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.10. 更新 undercloud 配置 复制链接链接已复制到粘贴板!
如果需要更改 undercloud 配置以适应新要求,则可在安装后更改 undercloud 配置,请编辑相关配置文件并重新运行 openstack undercloud install 命令。
步骤
修改 undercloud 配置文件。例如,编辑
undercloud.conf文件并将idrac硬件类型添加到已启用硬件类型列表中:enabled_hardware_types = ipmi,redfish,idrac
enabled_hardware_types = ipmi,redfish,idracCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
openstack undercloud install命令以使用新更改刷新 undercloud:openstack undercloud install
[stack@director ~]$ openstack undercloud installCopy to Clipboard Copied! Toggle word wrap Toggle overflow 等待命令运行完成。
初始化
stack用户以使用命令行工具:source ~/stackrc
[stack@director ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 提示现在指示 OpenStack 命令对 undercloud 进行验证并执行:
(undercloud) [stack@director ~]$Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认 director 已应用新配置。在此示例中,检查已启用硬件类型列表:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
undercloud 重新配置完成。
7.11. Undercloud 容器 registry 复制链接链接已复制到粘贴板!
Red Hat Enterprise Linux 9.0 不再包含 docker-distribution 软件包,该软件包安装了 Docker Registry v2。为了保持兼容性和相同的功能级别,director 安装使用称为 image-serve 的 vhost 创建 Apache Web 服务器以提供 registry。该 registry 也使用禁用了 SSL 的端口 8787/TCP。基于 Apache 的 registry 未容器化,这意味着您必需运行以下命令以重启 registry:
sudo systemctl restart httpd
$ sudo systemctl restart httpd
您可以在以下位置找到容器 registry 日志:
- /var/log/httpd/image_serve_access.log
- /var/log/httpd/image_serve_error.log。
镜像内容来自 /var/lib/image-serve。此位置使用特定目录布局和 apache 配置来实施 registry REST API 的拉取功能。
基于 Apache 的 registry 不支持 podman push 或 buildah push 命令,这意味着您无法使用传统方法推送容器镜像。要在部署过程中修改镜像,请使用容器准备工作流,如 ContainerImagePrepare 参数。要管理容器镜像,请使用容器管理命令:
- OpenStack tripleo container image list
- 列出 registry 上存储的所有镜像。
- OpenStack tripleo container image show
- 显示 registry 上特定镜像的元数据。
- OpenStack tripleo 容器镜像推送
- 将镜像从远程 registry 推送到 undercloud registry。
- OpenStack tripleo container image delete
- 从 registry 中删除镜像。
第 8 章 规划您的 overcloud 复制链接链接已复制到粘贴板!
以下部分包含在规划 Red Hat OpenStack Platform(RHOSP)环境的各个方面的指导信息。这包括定义节点角色、规划您的网络拓扑结构和存储。
部署 overcloud 节点后,请勿重命名这些节点。在部署后重命名节点会导致实例管理问题。
8.1. 节点角色 复制链接链接已复制到粘贴板!
director 包含以下默认节点类型用于构建 overcloud:
- Controller
提供用于控制环境的关键服务。它包括仪表板服务 (horizon)、认证服务 (keystone)、镜像存储服务 (glance)、联网服务 (neutron)、编配服务 (heat) 以及高可用性服务。Red Hat OpenStack Platform(RHOSP)环境需要三个 Controller 节点以实现高可用生产级环境。
注意将只有一个 Controller 节点的环境用于测试目的,不应该用于生产环境。不支持由两个 Controller 节点或由三个以上 Controller 节点组成的环境。
- 计算
- 用作虚拟机监控程序并包含在环境中运行虚拟机所需的处理能力的物理服务器。基本 RHOSP 环境需要至少一个 Compute 节点。
- Ceph Storage
- 提供 Red Hat Ceph Storage 的一个主机。额外的 Ceph Storage 主机可以在一个集群中扩展。这个部署角色是可选的。
- Swift Storage
- 为 OpenStack Object Storage (swift) 服务提供外部对象存储的主机。这个部署角色是可选的。
下表包含一些不同 overcloud 的示例并为每个场景定义节点类型。
| Controller | 计算 | Ceph 存储 | Swift Storage | 总计 | |
| 小型 overcloud | 3 | 1 | - | - | 4 |
| 中型 overcloud | 3 | 3 | - | - | 6 |
| 带有额外对象存储的中型 overcloud | 3 | 3 | - | 3 | 9 |
| 带有 Ceph Storage 集群的中型 overcloud | 3 | 3 | 3 | - | 9 |
此外,还需思考是否要将各个服务划分成不同的自定义角色。有关可组合角色架构的更多信息,请参阅 Director 安装和使用指南中的 "可组合服务和自定义角色 "。
| undercloud | Controller | 计算 | Ceph Storage | 总计 | |
| 概念验证 | 1 | 1 | 1 | 1 | 4 |
Red Hat OpenStack Platform 在第 2 天运维中维护一个可正常运行的 Ceph Storage 集群。因此,在少于三个 MON 或三个存储节点的部署中,无法进行某些第 2 天运维,如 Ceph Storage 集群的升级或次要更新。如果使用单个 Controller 节点或单个 Ceph Storage 节点,则第 2 天运维将失败。
8.2. Overcloud 网络 复制链接链接已复制到粘贴板!
规划环境的网络拓扑和子网非常重要,它可以确保映射角色和服务,以使其可以正确地相互通信。Red Hat OpenStack Platform (RHOSP) 使用 Openstack Networking (neutron) 服务,此服务可自主运行,并可管理基于软件的网络、静态和浮动 IP 地址以及 DHCP。
默认情况下,director 配置节点以使用 Provisioning/Control Plane 获得连接。不过,可以将网络流量隔离到一系列的可组合网络,供您自定义和分配服务。
在典型的 RHOSP 安装中,网络类型的数量通常会超过物理网络链路的数量。为了可以把所有网络都连接到正确的主机,overcloud 使用 VLAN 标记(VLAN tagging)来为每个接口提供多个网络。大多数网络都是隔离的子网,但有些网络需要第 3 层网关来提供路由用于互联网访问或基础架构网络连接。如果使用 VLAN 来隔离网络流量类型,则必需使用支持 802.1Q 标准的交换机来提供 tagged VLAN。
我们推荐,即使在部署时使用了禁用隧道功能的 neutron VLAN,您最好仍然部署一个项目网络(利用 GRE 或 VXLAN 进行隧道连接)。这只需要在部署时进行一些微小的改变,便可为以后使用网络隧道功能(如用于 utility 网络或 virtualization 网络)留下选择余地。您仍然需要使用 VLAN 创建租户网络,但同时也可为特殊用途网络创建 VXLAN 隧道,而不需要消耗租户 VLAN。VXLAN 功能可以添加到带有租户 VLAN 的部署中,而租户 VLAN 却无法在不对系统运行造成干扰的情况下添加到现有的 overcloud 中。
director 还包括一组模板,可用于使用隔离的可组合网络配置 NIC。以下配置为默认配置:
- 单 NIC 配置 - 一个 NIC 在原生 VLAN 中用于 Provisioning 网络,并用于 tagged VLAN(使用子网处理不同的 overcloud 网络类型)。
- 绑定 NIC 配置 - 一个 NIC 在原生 VLAN 中用于 Provisioning 网络,tagged VLAN 绑定中的两个 NIC 用于不同的 overcloud 网络类型。
- 多 NIC 配置 - 每个 NIC 都使用一个子网来分别处理 overcloud 中不同的网络类型。
您也可以创建自己的模板来映射特定的 NIC 配置。
在考虑网络配置时,以下详细信息也很重要:
- 在 overcloud 创建过程中,在所有 overcloud 机器间使用同一个名称来代表 NIC。理想情况下,您应该在每个 overcloud 节点上对每个相关的网络都使用相同的 NIC 来避免混淆。例如,Provisioning 网络使用主(primary)NIC,OpenStack 服务使用从(secondary)NIC。
- 设置所有 overcloud 系统为从 Provisioning NIC 进行 PXE 引导,并禁用通过外部 NIC 和系统上的任何其他 NIC 进行 PXE 引导。另外,还需要确保 Provisioning NIC 在 PXE 引导设置中位于引导顺序的最上面(在硬盘和 CD/DVD 驱动器之前)。
- 所有 overcloud 裸机系统都需要一个受支持的电源管理接口,如智能平台管理接口 (IPMI),以便 director 能够控制每个节点的电源管理。
- 请记录下每个 overcloud 系统的以下信息:Provisioning NIC 的 MAC 地址、IPMI NIC 的 IP 地址、IPMI 用户名和 IPMI 密码。稍后配置 overcloud 节点时,这些信息很有用。
- 如果一个实例必须可以被外部互联网访问,则需要从公共网络中分配一个浮动 IP 地址,并把浮动 IP 和这个实例相关联。这个实例仍然会保留它的私人 IP,但网络流量可以通过 NAT 到达浮动 IP 地址。请注意,一个浮动 IP 地址只能分配给一个接口,而不能分配给多个私人 IP 地址。但是,浮动 IP 地址只保留给一个租户使用,这意味着租户可以根据需要将浮动 IP 地址与特定实例相关联或取消关联。此配置会使您的基础架构暴露于外部互联网,您必须使用了适当的安全保护措施。
- 为了减少 Open vSwitch 中出现网络环路的风险,只能有一个接口或一个绑定作为给定网桥的成员。如果需要多个绑定或接口,可以配置多个网桥。
- 红帽建议使用 DNS 主机名解析,以便您的 overcloud 节点能够连接到外部服务,如 Red Hat Content Delivery Network 和网络时间服务器。
- 红帽建议将置备接口、外部接口和任何浮动 IP 接口保留在 1500 的默认 MTU 。否则可能会发生连接问题。这是因为路由器通常无法跨第 3 层边界转发巨型帧。
如果您使用 Red Hat Virtualization (RHV),则可以对 overcloud control plane 进行虚拟化。如需更多信息,请参阅创建虚拟化 control planes。
8.3. Overcloud 存储 复制链接链接已复制到粘贴板!
您可以使用 Red Hat Ceph Storage 节点作为 overcloud 环境的后端存储。您可以将 overcloud 配置为使用 Ceph 节点进行以下类型的存储:
- 镜像
- Image 服务(glance)管理用于创建虚拟机实例的镜像。镜像是不可变的二进制 Blob。您可以使用镜像服务将镜像存储在 Ceph 块设备中。有关支持的镜像格式的详情,请参考 创建和管理镜像 中的 镜像服务(glance)。
- 卷
- 块存储服务(cinder)管理实例的持久性存储卷。块存储服务卷是块设备。您可以使用卷来引导实例,您可以将卷附加到正在运行的实例。您可以使用 Block Storage 服务通过镜像的 copy-on-write clone 来引导虚拟机。
- 对象(object)
- 当 overcloud 存储后端是 Red Hat Ceph Storage 时,Ceph 对象网关(RGW)在 Ceph 集群上提供默认的 overcloud 对象存储。如果您的 overcloud 没有 Red Hat Ceph Storage,则 overcloud 将使用对象存储服务(swift)来提供对象存储。您可以将 overcloud 节点专用于对象存储服务。当您需要扩展或替换 overcloud 环境中的 Controller 节点,同时需要在一个高可用性集群外保留对象存储时,这将非常有用。
- 文件系统
- 共享文件系统服务(manila)管理共享文件系统。您可以使用共享文件系统服务管理由 CephFS 文件系统(数据在 Ceph Storage 节点上)支持的共享。
- 实例磁盘
-
当您启动实例时,实例磁盘作为文件存储在虚拟机监控程序的实例目录中。默认文件位置为
/var/lib/nova/instances。
有关 Ceph Storage 的更多信息,请参阅 Red Hat Ceph Storage 架构指南。
8.3.1. overcloud 存储节点的配置注意事项 复制链接链接已复制到粘贴板!
- 实例安全性和性能
- 在使用后端块存储卷的实例上使用 LVM 会导致性能、卷可见性和可用性以及数据崩溃问题。使用 LVM 筛选减少可见性、可用性和数据损坏问题。有关更多信息,请参阅存储指南中的 在 overcloud 节点上启用 LVM2 过滤,而在 cinder 卷上使用 LVM 的红帽知识库解决方案会将数据公开给计算主机。
- 本地磁盘分区大小
考虑存储节点的存储和保留要求,以确定以下默认磁盘分区大小是否满足您的要求:
Expand 分区 默认大小 /8GB
/tmp1GB
/var/log10GB
/var/log/audit2GB
/home1GB
/var分配所有其他分区后的剩余磁盘大小。
要更改分区分配的磁盘大小,请更新
overcloud-baremetal-deploy.yaml节点定义文件中的 Ansible_playbooks 定义中的role_growvols_argsextra Ansible 变量。有关更多信息,请参阅为 overcloud 置备裸机节点。如果您的分区在优化了分区大小后继续填满,则执行以下任务之一:
8.4. Overcloud 安全性 复制链接链接已复制到粘贴板!
OpenStack 平台环境的安全性在一定程度上取决于网络的安全性。遵循网络环境中的良好安全原则,确保正确控制网络访问:
- 使用网络分段缓解网络移动并隔离敏感数据。扁平网络的安全性要低得多。
- 限制对服务和端口的访问。
- 强制执行正确的防火墙规则并使用密码。
- 确保启用 SELinux。
有关保护系统安全的更多信息,请参阅以下红帽指南:
8.5. Overcloud 高可用性 复制链接链接已复制到粘贴板!
要部署高度可用的 overcloud,director 将配置多个 Controller、Compute 和 Storage 节点,并以单一集群的形式协同工作。出现节点故障时,根据故障的节点类型来触发自动隔离和重新生成流程。有关 overcloud 高可用性架构和服务的更多信息,请参阅 高可用性部署和使用。
不支持在不使用 STONITH 的情况下部署高可用性 overcloud。您必须在高可用性 overcloud 中为作为 Pacemaker 集群一部分的每个节点配置 STONITH 设备。有关 STONITH 和 Pacemaker 的信息,请参阅红帽高可用性集群中的隔离和 RHEL 高可用性集群的支持策略。
您也可以通过 director 为 Compute 实例配置高可用性 (Instance HA)。使用此高可用性机制,可在节点出现故障时在 Compute 节点上自动清空并重新生成实例。对 Instance HA 的要求与一般的 overcloud 要求相同,但必须执行一些附加步骤以准备好环境进行部署。有关 Instance HA 和安装说明的更多信息,请参阅 Compute 实例的高可用性指南。
8.6. Controller 节点要求 复制链接链接已复制到粘贴板!
Controller 节点在 Red Hat OpenStack Platform 环境中托管核心服务,如 Dashboard (horizon)、后端数据库服务器、Identity 服务 (keystone) 和高可用性服务。
- 处理器
- 支持 Intel 64 或 AMD64 CPU 扩展的 64 位 x86 处理器。
- 内存
最小内存为 32 GB。不过,建议根据 vCPU 数量(CPU 内核数乘以超线程值)来决定内存大小。使用以下计算确定 RAM 要求:
控制器 RAM 最小值计算:
- 每个 vCPU 使用 1.5 GB 内存。例如,拥有 48 个 vCPU 的计算机应当具有 72 GB RAM。
控制器 RAM 建议值计算:
- 每个 vCPU 使用 3 GB 内存。例如,拥有 48 个 vCPU 的计算机应当具有 144 GB RAM。
有关衡量内存要求的更多信息,请参阅红帽客户门户网站上的“高可用性控制器的 Red Hat OpenStack Platform 硬件要求”。
- 磁盘存储和布局
如果 Object Storage 服务 (swift) 不在 Controller 节点上运行,则需要最小 50 GB 的存储。但是,Telemetry 和 Object Storage 服务都安装在 Controller 上,且二者均配置为使用根磁盘。这些默认值适合部署在商用硬件上构建的小型 overcloud。这些环境通常用于概念验证和测试环境。您可以使用这些默认布局,只需最少的规划即可部署 overcloud,但它们只能提供很低的工作负载容量和性能。
然而在企业环境中,默认布局可能造成很大的瓶颈。这是因为 Telemetry 会不断地访问存储资源,导致磁盘 I/O 使用率很高,从而严重影响所有其他 Controller 服务的性能。在这种环境中,必须规划 overcloud 并进行相应的配置。
- 网络接口卡
- 最少两个 1 Gbps 网络接口卡。对绑定的接口使用额外的网络接口卡,或代理标记的 VLAN 流量。
- 电源管理
- 每个 Controller 节点在服务器的主板上都要有一个受支持的电源管理接口,如智能平台管理接口 (IPMI) 功能。
- 虚拟化支持
- 红帽仅在 Red Hat Virtualization 平台上支持虚拟化 Controller 节点。如需更多信息,请参阅创建虚拟化 control planes。
8.7. Compute 节点要求 复制链接链接已复制到粘贴板!
Compute 节点负责在启动虚拟机实例后运行虚拟机实例。Compute 节点需要支持硬件虚拟化的裸机系统。Compute 节点还必须有足够的内存和磁盘空间来支持其托管的虚拟机实例的要求。
- 处理器
- 支持 Intel 64 或 AMD64 CPU 扩展并启用了 AMD-V 或 Intel VT 硬件虚拟扩展的 64 位 x86 处理器。我们推荐所使用的处理器最少有 4 个内核。
- 内存
主机操作系统最小 6 GB RAM,以及以下事项可容纳的额外内存:
- 添加您要提供给虚拟机实例的额外内存。
- 添加附加内存以便在主机上运行特殊功能或其他资源,如额外的内核模块、虚拟交换机、监控解决方案和其他额外的后台任务。
- 如果要使用非统一内存访问 (NUMA),红帽建议每个 CPU 插槽节点使用 8GB,或如果您有 256 GB 的物理 RAM,则建议每插槽节点使用 16GB。
- 至少配置 4 GB 交换空间。
- 磁盘空间
- 最少具有 50GB 可用磁盘空间。
- 网络接口卡
- 最少一个 1 Gbps 网络接口卡。对绑定的接口使用额外的网络接口卡,或代理标记的 VLAN 流量。
- 电源管理
- 每个 Compute 节点在服务器的主板上都要有一个受支持的电源管理接口,如智能平台管理接口 (IPMI) 功能。
8.8. Red Hat Ceph Storage 节点要求 复制链接链接已复制到粘贴板!
使用 director 创建 Ceph Storage 集群需要额外的节点要求:
- Red Hat Ceph Storage 硬件指南 中提供了包括处理器、内存和网络接口卡选择和磁盘布局的硬件要求。
- 每个 Ceph Storage 节点在服务器的主板上都要有一个受支持的电源管理接口,如智能平台管理接口(IPMI)功能。
-
每个 Ceph Storage 节点必须至少有两个磁盘。RHOSP director 使用
cephadm来部署 Ceph Storage 集群。cephadm 功能不支持在节点的根磁盘上安装 Ceph OSD。
8.9. Ceph Storage 节点和 RHEL 兼容性 复制链接链接已复制到粘贴板!
RHEL 9.0 支持 RHOSP 17.0。但是,映射到 Ceph Storage 角色的主机更新至最新的主 RHEL 版本。在升级前,请参阅红帽知识库文章 Red Hat Ceph Storage:支持的配置。
8.10. Object Storage 节点要求 复制链接链接已复制到粘贴板!
Object Storage 节点提供 overcloud 的对象存储层。Object Storage 代理安装在 Controller 节点上。存储层需要每个节点上有多个磁盘的裸机节点。
- 处理器
- 支持 Intel 64 或 AMD64 CPU 扩展的 64 位 x86 处理器。
- 内存
- 内存要求取决于存储空间大小。每 1TB 硬盘空间需要至少 1GB 内存。要获得最佳性能,建议每 1 TB 硬盘空间使用 2 GB,特别是用于文件小于 100GB 的工作负载。
- 磁盘空间
存储要求取决于工作负载需要的容量。建议使用 SSD 驱动器来存储帐户和容器数据。帐户和容器数据与对象的容量比约为 1%。例如,对于每 100TB 硬盘容量,请提供 1TB 容量来存储帐户和容器数据。
不过,这还取决于所存储数据的类型。如果主要是要存储小对象,则提供更多 SSD 空间。而对于大对象(视频和备份等),可提供较少的 SSD 空间。
- 磁盘配置
建议的节点配置需要类似以下示例的磁盘布局:
-
/dev/sda- 根磁盘。director 把主 overcloud 镜像复制到该磁盘。 -
/dev/sdb- 用于帐户数据。 -
/dev/sdc- 用于容器数据。 -
/dev/sdd及后续 - 对象服务器磁盘。可以根据您的存储需要使用多个磁盘。
-
- 网络接口卡
- 最少两个 1 Gbps 网络接口卡。对绑定的接口使用额外的网络接口卡,或代理标记的 VLAN 流量。
- 电源管理
- 每个 Controller 节点在服务器的主板上都要有一个受支持的电源管理接口,如智能平台管理接口 (IPMI) 功能。
8.11. overcloud 软件仓库 复制链接链接已复制到粘贴板!
您可以在 Red Hat Enterprise Linux 9.0 上运行 Red Hat OpenStack Platform 17.0。因此,您必须将这些软件仓库的内容锁定到相应的 Red Hat Enterprise Linux 版本。
除此处指定的存储库外,都不支持。除非建议,否则请不要启用任何其他产品或存储库,除了下表中列出的产品或存储库,否则您可能会遇到软件包依赖项问题。请勿启用 Extra Packages for Enterprise Linux (EPEL)。
Satellite 软件仓库不会被列出,因为 RHOSP 17.0 不支持 Satellite。计划在以后的发行版本中提供 Satellite 支持。仅支持 Red Hat CDN 作为软件包存储库和容器 registry。NFV 存储库没有列出,因为 RHOSP 17.0 不支持 NFV。
Controller 节点软件仓库
下表列出了用于 overcloud 中 Controller 节点的核心软件仓库。
| 名称 | 软件仓库 | 要求说明 |
|---|---|---|
| Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs) Extended Update Support (EUS) |
| x86_64 系统的基本操作系统仓库。 |
| Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs) |
| 包括 Red Hat OpenStack Platform 的依赖软件包。 |
| Red Hat Enterprise Linux 9 for x86_64 - High Availability (RPMs) Extended Update Support (EUS) |
| Red Hat Enterprise Linux 的高可用性工具。 |
| Red Hat OpenStack Platform 17 for RHEL 9 x86_64 (RPMs) |
| Red Hat OpenStack Platform 核心软件仓库。 |
| Red Hat Fast Datapath for RHEL 9 (RPMS) |
| 为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。 |
| Red Hat Ceph Storage Tools 5 for RHEL 9 x86_64 (RPMs) |
| Red Hat Ceph Storage 5 for Red Hat Enterprise Linux 9 的工具。 |
Compute 和 ComputeHCI 节点软件仓库
下表列出了 overcloud 中 Compute 和 ComputeHCI 节点的核心软件仓库。
| 名称 | 软件仓库 | 要求说明 |
|---|---|---|
| Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs) Extended Update Support (EUS) |
| x86_64 系统的基本操作系统仓库。 |
| Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs) |
| 包括 Red Hat OpenStack Platform 的依赖软件包。 |
| Red Hat Enterprise Linux 9 for x86_64 - High Availability (RPMs) Extended Update Support (EUS) |
| Red Hat Enterprise Linux 的高可用性工具。 |
| Red Hat OpenStack Platform 17 for RHEL 9 x86_64 (RPMs) |
| Red Hat OpenStack Platform 核心软件仓库。 |
| Red Hat Fast Datapath for RHEL 9 (RPMS) |
| 为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。 |
| Red Hat Ceph Storage Tools 5 for RHEL 9 x86_64 (RPMs) |
| Red Hat Ceph Storage 5 for Red Hat Enterprise Linux 9 的工具。 |
Real Time Compute 软件仓库
下表列出了 Real Time Compute (RTC) 功能的软件仓库。
| 名称 | 软件仓库 | 要求说明 |
|---|---|---|
| Red Hat Enterprise Linux 9 for x86_64 - Real Time (RPMs) |
|
Real Time KVM (RT-KVM) 的软件仓库。包含用于启用实时内核的软件包。对 RT-KVM 为目标的所有 Compute 节点启用此软件仓库。注意:您需要单独订阅 |
Ceph Storage 节点软件仓库
下表列出了用于 overcloud 的与 Ceph Storage 有关的软件仓库。
| 名称 | 软件仓库 | 要求说明 |
|---|---|---|
| Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs) |
| x86_64 系统的基本操作系统仓库。 |
| Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs) |
| 包括 Red Hat OpenStack Platform 的依赖软件包。 |
| Red Hat OpenStack Platform 17 Director Deployment Tools for RHEL 9 x86_64 (RPMs) |
|
帮助 director 配置 Ceph Storage 节点的软件包。此软件仓库包含在单机 Ceph Storage 订阅中。如果您使用 OpenStack Platform 和 Ceph Storage 组合订阅,请使用 |
| Red Hat OpenStack Platform 17 for RHEL 9 x86_64 (RPMs) |
|
帮助 director 配置 Ceph Storage 节点的软件包。此软件仓库包含在 OpenStack Platform 和 Ceph Storage 组合订阅中。如果您使用独立的 Ceph Storage 订阅,请使用 |
| Red Hat Ceph Storage Tools 5 for RHEL 9 x86_64 (RPMs) |
| 提供节点与 Ceph Storage 集群进行通信的工具。 |
| Red Hat Fast Datapath for RHEL 9 (RPMS) |
| 为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。如果您在 Ceph Storage 节点上使用 OVS,请将此存储库添加到网络接口配置(NIC)模板中。 |
8.12. 节点置备和配置 复制链接链接已复制到粘贴板!
您可以使用 OpenStack Bare Metal (ironic)服务或外部工具为 Red Hat OpenStack Platform (RHOSP)环境置备 overcloud 节点。在置备节点时,您可以使用 director 配置它们。
- 使用 OpenStack Bare Metal (ironic) 服务置备
- 使用裸机服务置备 overcloud 节点是标准置备方法。有关更多信息,请参阅置备裸机 overcloud 节点。
- 使用外部工具置备
-
您可以使用外部工具(如 Red Hat Satellite)来置备 overcloud 节点。如果您要在没有电源管理控制的情况下创建 overcloud,请使用具有 DHCP/PXE 引导限制的网络,或者使用具有不依赖于
overcloud-hardened-uefi-uefi-full.qcow2镜像的自定义分区布局的节点,这非常有用。这种置备方法不使用 OpenStack Bare Metal 服务(ironic)来管理节点。如需更多信息,请参阅使用预置备节点配置基本 overcloud。
第 9 章 可组合服务和自定义角色 复制链接链接已复制到粘贴板!
overcloud 通常由预定义角色(如 Controller 节点、Compute 节点和不同的存储节点类型)中的节点组成。这些默认角色各自包含 director 节点上的核心 heat 模板集合中定义的一组服务。但是,您也可以创建包含特定服务集合的自定义角色。
您可以使用这种灵活性在不同的角色上创建不同的服务组合。本章介绍了自定义角色、可组合服务和使用方法的架构。
9.1. 支持的角色架构 复制链接链接已复制到粘贴板!
使用自定义角色和可组合服务时,可以使用以下构架:
- 默认架构
-
使用默认的
roles_data文件。所有控制器服务都包含在一个 Controller 角色中。 - 支持的独立角色
-
使用
/usr/share/openstack-tripleo-heat-templates/roles中的预定义文件来生成自定义roles_data文件。更多信息请参阅 第 9.4 节 “支持的自定义角色”。 - 自定义可组合服务
-
创建自己的角色,并使用它们生成自定义
roles_data文件。请注意,只有有限数量的可组合服务组合已被测试并验证,红帽不支持所有可组合服务组合。
9.2. 检查 roles_data 文件 复制链接链接已复制到粘贴板!
roles_data 文件包含 director 部署到节点上的角色 YAML 格式列表。每个角色都包含组成该角色的所有服务的定义。使用以下示例片断了解 roles_data 语法:
核心 heat 模板集合包括一个默认的 roles_data 文件,位于 /usr/share/openstack-tripleo-heat-templates/roles_data.yaml。默认文件包含以下角色类型的定义:
-
Controller -
Compute -
BlockStorage -
ObjectStorage -
Ceph 存储.
openstack overcloud deploy 命令在部署过程中包含默认的 roles_data.yaml 文件。但是,您可以使用 -r 参数使用自定义 roles_data 文件覆盖此文件:
openstack overcloud deploy --templates -r ~/templates/roles_data-custom.yaml
$ openstack overcloud deploy --templates -r ~/templates/roles_data-custom.yaml
9.3. 创建 roles_data 文件 复制链接链接已复制到粘贴板!
虽然您可以手动创建自定义 roles_data 文件,但您也可以使用单独的角色模板自动生成该文件。director 提供 openstack overcloud role generate 命令来加入多个预定义角色,并自动生成自定义 roles_data 文件。
流程
列出默认角色模板:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看角色定义:
openstack overcloud role show Compute
$ openstack overcloud role show ComputeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成包含
Controller、Compute和Networker角色的自定义roles_data.yaml文件:openstack overcloud roles \ generate -o <custom_role_file> \ Controller Compute Networker
$ openstack overcloud roles \ generate -o <custom_role_file> \ Controller Compute NetworkerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<custom_role_file>替换为要生成的新角色文件的名称和位置,如/home/stack/templates/roles_data.yaml。注意Controller和Networker角色包含相同的网络代理。这意味着网络服务从Controller角色扩展到Networker角色,overcloud 会平衡Controller和Networker节点之间网络服务的负载。要使此
Networker角色独立,您可以创建自己的自定义Controller角色,以及所需的任何其他角色。这可让您从您自己的自定义角色生成roles_data.yaml文件。
将
roles目录从核心 heat 模板集合复制到stack用户的主目录:cp -r /usr/share/openstack-tripleo-heat-templates/roles/. /home/stack/templates/roles/
$ cp -r /usr/share/openstack-tripleo-heat-templates/roles/. /home/stack/templates/roles/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在此目录中添加或修改自定义角色文件。将
-roles-path选项与任何角色子命令一起使用,以将此目录用作自定义角色的源:openstack overcloud role \ generate -o my_roles_data.yaml \ --roles-path /home/stack/templates/roles \ Controller Compute Networker
$ openstack overcloud role \ generate -o my_roles_data.yaml \ --roles-path /home/stack/templates/roles \ Controller Compute NetworkerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令从
~/roles目录中的各个角色生成单个my_roles_data.yaml文件。
默认角色集合还包含 ControllerOpenstack 角色,该角色不包括 Networker, Messaging, 和 Database 角色的服务。您可以将 ControllerOpenstack 与独立的 Networker, Messaging, 和 Database 角色结合使用。
9.4. 支持的自定义角色 复制链接链接已复制到粘贴板!
下表包含可用自定义角色的信息。您可以在 /usr/share/openstack-tripleo-heat-templates/roles 目录中找到自定义角色模板。
| 角色 | 描述 | File |
|---|---|---|
|
| OpenStack Block Storage (cinder)节点。 |
|
|
| 完整的单机 Ceph Storage 节点。包括 OSD、MON、对象网关(RGW)、对象操作(MDS)、管理器(MGR)和 RBD 镜像功能。 |
|
|
| 独立横向扩展 Ceph Storage 文件角色。包括 OSD 和对象操作(MDS)。 |
|
|
| 独立横向扩展 Ceph Storage 对象角色。包括 OSD 和对象网关(RGW)。 |
|
|
| Ceph Storage OSD 节点角色。 |
|
|
| 备用 Compute 节点角色。 |
|
|
| DVR 启用 Compute 节点角色。 |
|
|
| 具有超融合基础架构的计算节点.包括 Compute 和 Ceph OSD 服务。 |
|
|
|
Compute 实例 HA 节点角色.与 |
|
|
| 具有 Cavium Liquidio 智能 NIC 的计算节点. |
|
|
| 计算 OVS DPDK RealTime 角色。 |
|
|
| 计算 OVS DPDK 角色。 |
|
|
|
为实时行为优化的计算角色。使用此角色时,需要确保 |
|
|
| 计算 SR-IOV RealTime 角色。 |
|
|
| 计算 SR-IOV 角色。 |
|
|
| 标准 Compute 节点角色。 |
|
|
|
不包含数据库、消息传递、网络和 OpenStack Compute (nova)控制组件的控制器角色。使用 |
|
|
| 载入核心 Controller 服务的控制器角色,但没有 Ceph Storage (MON) 组件。此角色处理数据库、消息传递和网络功能,但不能处理任何 Ceph 存储功能。 |
|
|
|
不包含 OpenStack Compute (nova)控制组件的控制器角色。将 与 |
|
|
|
不包含数据库、消息传递和网络组件的控制器角色。与 |
|
|
| 载入所有核心服务的 controller 角色,并使用 Ceph NFS。此角色处理数据库、消息传递和网络功能。 |
|
|
| 带有所有核心服务控制器角色。此角色处理数据库、消息传递和网络功能。 |
|
|
| 与正常的 Controller 角色相同,但部署了 OVN 元数据代理。 |
|
|
| 独立数据库角色.使用 Pacemaker 作为 Galera 集群管理的数据库。 |
|
|
| 具有超融合基础架构和所有 Ceph 存储服务的计算节点。包括 OSD、MON、对象网关(RGW)、对象操作(MDS)、管理器(MGR)和 RBD 镜像功能。 |
|
|
| 具有超融合基础架构和 Ceph 存储文件服务的计算节点。包括 OSD 和对象操作(MDS)。 |
|
|
| 具有超融合基础架构和 Ceph 存储块服务的计算节点。包括 OSD、MON 和 Manager。 |
|
|
| 具有超融合基础架构和 Ceph Storage 对象服务的计算节点。包括 OSD 和对象网关(RGW)。 |
|
|
| Ironic Conductor 节点角色. |
|
|
| 独立消息传递角色.使用 Pacemaker 管理的 RabbitMQ. |
|
|
| 独立网络角色.自行运行 OpenStack 网络(neutron)代理。如果您的部署使用 ML2/OVN 机制驱动程序,请参阅使用 ML2/OVN 部署自定义角色 中的其他步骤。 |
|
|
| 与正常的 Networker 角色相同,但部署了 OVN 元数据代理。请参阅 使用 ML2/OVN 部署自定义角色 中的其他步骤。 |
|
|
|
独立 |
|
|
| Swift Object Storage 节点角色。 |
|
|
| 包含所有指标和警报服务的 Telemetry 角色。 |
|
9.5. 检查角色参数 复制链接链接已复制到粘贴板!
每个角色包含以下参数:
- name
-
(必需) 角色的名称,它是一个纯文本名称,没有空格或特殊字符。检查所选名称不会导致与其他资源冲突。例如,使用
Networker作为名称而不是Network。 - description
- (可选) 角色的纯文本描述。
- tags
(可选) 定义角色属性的标签的 YAML 列表。使用此参数定义主角色,带有
controller和primary标签:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果没有标记主要角色,则您定义的第一个角色将成为主要角色。确保此角色是 Controller 角色。
- networks
要在角色上配置的网络的 YAML 列表或字典。如果使用 YAML 列表,请列出每个可组合网络:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用一个字典,请将每个网络映射到可组合网络中的一个特定的
子网。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认网络包括
External,InternalApi,Storage,StorageMgmt,Tenant, 和Management。- CountDefault
- (可选) 定义您要为此角色部署的默认节点数。
- HostnameFormatDefault
(可选) 定义角色的默认主机名格式。默认命名规则使用以下格式:
[STACK NAME]-[ROLE NAME]-[NODE ID]
[STACK NAME]-[ROLE NAME]-[NODE ID]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,默认 Controller 节点被命名为:
overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ...
overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow - disable_constraints
- (可选) 定义在使用 director 部署时是否禁用 OpenStack Compute (nova)和 OpenStack Image Storage (glance)约束。使用预置备节点部署 overcloud 时,请使用此参数。有关更多信息,请参阅 Director 安装和使用指南中的 使用预置备节点配置 基本 overcloud。
- update_serial
(可选) 定义 OpenStack 更新选项期间要同时更新多少个节点。在默认的
roles_data.yaml文件中:-
Controller、Object Storage 和 Ceph Storage 节点的默认值为
1。 -
Compute 和 Block Storage 节点的默认值为
25。
如果从自定义角色中省略此参数,则默认为
1。-
Controller、Object Storage 和 Ceph Storage 节点的默认值为
- ServicesDefault
- (可选) 定义节点上要包含的默认服务列表。更多信息请参阅 第 9.8 节 “检查可组合服务架构”。
您可以使用这些参数创建新角色,并定义要在角色中包含哪些服务。
openstack overcloud deploy 命令将 roles_data 文件中的参数集成到一些基于 Jinja2 的模板中。例如,在某些点上,overcloud.j2.yaml heat 模板迭代 roles_data.yaml 中的角色列表,并创建特定于每个对应角色的参数和资源。
例如,以下片段包含 overcloud.j2.yaml heat 模板中的每个角色的资源定义:
此代码片段演示了如何将基于 Jinja2 的模板包含 {{role.name}} 变量,将各个角色的名称定义为 OS::Heat::ResourceGroup 资源。这又使用 roles_data 文件中的每个 name 参数来为每个对应的 OS::Heat::ResourceGroup 资源命名。
9.6. 创建新角色 复制链接链接已复制到粘贴板!
您可以根据部署的要求,使用可组合服务架构将角色分配给裸机节点。例如,您可能希望创建新的 Horizon 角色来仅托管 OpenStack 控制面板(horizon)。
流程
-
以
stack用户的身份登录 undercloud。 Source
stackrc文件:source ~/stackrc
[stack@director ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
roles目录从核心 heat 模板集合复制到stack用户的主目录:cp -r /usr/share/openstack-tripleo-heat-templates/roles/. /home/stack/templates/roles/
$ cp -r /usr/share/openstack-tripleo-heat-templates/roles/. /home/stack/templates/roles/Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在
home/stack/templates/roles中创建一个名为Horizon.yaml的新文件。 在
Horizon.yaml中添加以下配置,以创建一个包含基本和核心 OpenStack Dashboard 服务的新Horizon角色:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果要在现有 overcloud 中扩展服务,请保留
Controller角色中的现有服务。如果要创建新 overcloud,并且希望 OpenStack 仪表板保留在独立角色上,请从Controller角色定义中删除 OpenStack Dashboard 组件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成一个名为
roles_data_horizon.yaml的新角色数据文件,其中包含Controller、Compute和Horizon角色:openstack overcloud roles \ generate -o /home/stack/templates/roles_data_horizon.yaml \ --roles-path /home/stack/templates/roles \ Controller Compute Horizon
(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_horizon.yaml \ --roles-path /home/stack/templates/roles \ Controller Compute HorizonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:编辑
overcloud-baremetal-deploy.yaml节点定义文件以配置 Horizon 节点的放置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.7. 指南和限制 复制链接链接已复制到粘贴板!
请注意可组合角色架构的以下指南和限制。
对于不是由 Pacemaker 管理的服务:
- 您可以将服务分配给独立自定义角色。
- 您可以在初始部署后创建额外的自定义角色,并部署它们以扩展现有服务。
对于由 Pacemaker 管理的服务:
- 您可以将 Pacemaker 管理的服务分配给独立自定义角色。
-
Pacemaker 有 16 个节点限制。如果将 Pacemaker 服务(
OS::TripleO::Services::Pacemaker)分配给 16 个节点,则后续节点必须使用 Pacemaker 远程服务(OS::TripleO::Services::PacemakerRemote)。您不能在同一角色上具有 Pacemaker 服务和 Pacemaker 远程服务。 -
不要在不包含 Pacemaker 管理的服务的角色上包括 Pacemaker 服务(
OS::TripleO::Services::Pacemaker)。 -
您无法扩展或缩减包含
OS::TripleO::Services::Pacemaker或OS::TripleO::Services::PacemakerRemote服务的自定义角色。
常规限制:
- 您无法在主版本升级过程中更改自定义角色和可组合服务。
- 在部署 overcloud 后,您无法修改任何角色的服务列表。在 Overcloud 部署后修改服务列表可能会导致部署错误并在节点上保留孤立的服务。
9.8. 检查可组合服务架构 复制链接链接已复制到粘贴板!
核心 heat 模板集合包含两组可组合服务模板:
-
deployment包含关键 OpenStack 服务的模板。 -
puppet/services包含用于配置可组合服务的传统模板。在某些情况下,可组合服务使用此目录中的模板来实现兼容性。在大多数情况下,可组合服务使用部署目录中的模板。
每个模板都包含一个用于标识其用途的描述。例如,deployment/time/ntp-baremetal-puppet.yaml 服务模板包含以下描述:
description: > NTP service deployment using puppet, this YAML file creates the interface between the HOT template and the puppet manifest that actually installs and configure NTP.
description: >
NTP service deployment using puppet, this YAML file
creates the interface between the HOT template
and the puppet manifest that actually installs
and configure NTP.
这些服务模板作为特定于 Red Hat OpenStack Platform 部署的资源注册。这意味着,您可以使用 overcloud-resource-registry-puppet.j2.yaml 文件中定义的唯一 heat 资源命名空间调用每个资源。所有服务都使用 OS::TripleO::Services 命名空间进行资源类型。
有些资源直接使用基本可组合服务模板:
resource_registry: ... OS::TripleO::Services::Ntp: deployment/time/ntp-baremetal-puppet.yaml ...
resource_registry:
...
OS::TripleO::Services::Ntp: deployment/time/ntp-baremetal-puppet.yaml
...
但是,核心服务需要容器并使用容器化服务模板。例如,keystone 容器化服务使用以下资源:
resource_registry: ... OS::TripleO::Services::Keystone: deployment/keystone/keystone-container-puppet.yaml ...
resource_registry:
...
OS::TripleO::Services::Keystone: deployment/keystone/keystone-container-puppet.yaml
...
这些容器化模板通常引用其他模板以包含依赖项。例如,deployment/keystone/keystone-container-puppet.yaml 模板将基本模板的输出存储在 ContainersCommon 资源中:
resources:
ContainersCommon:
type: ../containers-common.yaml
resources:
ContainersCommon:
type: ../containers-common.yaml
然后,容器化模板可以包含 containers-common.yaml 模板中的功能和数据。
overcloud.j2.yaml heat 模板包含基于 Jinja2 代码的部分,用于在 roles_data.yaml 文件中为每个自定义角色定义服务列表:
对于默认角色,这将创建以下服务列表参数: ControllerServices、ComputeServices、BlockStorageServices、ObjectStorageServices、CephStorageServices。
您可以在 roles_data.yaml 文件中定义每个自定义角色的默认服务。例如,默认 Controller 角色包含以下内容:
然后,这些服务被定义为 ControllerServices 参数的默认列表。
您还可以使用环境文件来覆盖服务参数的默认列表。例如,您可以在环境文件中将 ControllerServices 定义为 parameter_default,以覆盖 roles_data.yaml 文件中的服务列表。
9.9. 在角色中添加和删除服务 复制链接链接已复制到粘贴板!
添加或删除服务的基本方法涉及为节点角色创建默认服务列表的副本,然后添加或删除服务。例如,您可能想要从 Controller 节点中删除 OpenStack Orchestration (heat)。
流程
创建
默认角色目录的自定义副本:cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.
$ cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
~/roles/Controller.yaml文件,并修改ServicesDefault参数的服务列表。滚动到 OpenStack 编排服务并删除它们:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成新
roles_data文件:openstack overcloud roles generate -o roles_data-no_heat.yaml \ --roles-path ~/roles \ Controller Compute Networker
$ openstack overcloud roles generate -o roles_data-no_heat.yaml \ --roles-path ~/roles \ Controller Compute NetworkerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
openstack overcloud deploy命令时包括此新roles_data文件:openstack overcloud deploy --templates -r ~/templates/roles_data-no_heat.yaml
$ openstack overcloud deploy --templates -r ~/templates/roles_data-no_heat.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令在 Controller 节点上安装 OpenStack Orchestration 服务的情况下部署 overcloud。
您还可以使用自定义环境文件禁用 roles_data 文件中的服务。将服务重定向到 OS::Heat::None 资源。例如:
resource_registry: OS::TripleO::Services::HeatApi: OS::Heat::None OS::TripleO::Services::HeatApiCfn: OS::Heat::None OS::TripleO::Services::HeatApiCloudwatch: OS::Heat::None OS::TripleO::Services::HeatEngine: OS::Heat::None
resource_registry:
OS::TripleO::Services::HeatApi: OS::Heat::None
OS::TripleO::Services::HeatApiCfn: OS::Heat::None
OS::TripleO::Services::HeatApiCloudwatch: OS::Heat::None
OS::TripleO::Services::HeatEngine: OS::Heat::None
9.10. 启用禁用的服务 复制链接链接已复制到粘贴板!
一些服务默认是禁用的。这些服务在 overcloud-resource-registry-puppet.j2.yaml 文件中注册为 null 操作(OS::Heat::None)。例如,块存储备份服务(cinder-backup)被禁用:
OS::TripleO::Services::CinderBackup: OS::Heat::None
OS::TripleO::Services::CinderBackup: OS::Heat::None
若要启用此服务,请包含一个环境文件,它将资源链接到 puppet/services 目录中对应的 heat 模板。有些服务在 environment 目录中有预定义的环境文件。例如,块存储备份服务使用 environments/cinder-backup.yaml 文件,其中包含以下条目:
流程
在环境文件中添加一个条目,它将
CinderBackup服务链接到包含cinder-backup配置的 heat 模板:resource_registry: OS::TripleO::Services::CinderBackup: ../podman/services/pacemaker/cinder-backup.yaml ...
resource_registry: OS::TripleO::Services::CinderBackup: ../podman/services/pacemaker/cinder-backup.yaml ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此条目覆盖默认的 null 操作资源并启用该服务。
运行
openstack overcloud deploy命令时包括此环境文件:openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml
$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.11. 创建没有服务的通用节点 复制链接链接已复制到粘贴板!
您可以在不配置任何 OpenStack 服务的情况下创建通用 Red Hat Enterprise Linux 9.0 节点。当您需要在核心 Red Hat OpenStack Platform (RHOSP)环境之外托管软件时,这非常有用。例如,RHOSP 提供与监控工具(如 Kibana 和 Sensu)集成。如需更多信息,请参阅 监控工具配置指南。虽然红帽不提供对监控工具本身的支持,但 director 可以创建一个通用的 Red Hat Enterprise Linux 9.0 节点来托管这些工具。
通用节点仍然使用 overcloud-hardened-uefi-full.qcow2 镜像而不是基础 Red Hat Enterprise Linux 9 镜像。这意味着节点已安装了一些 Red Hat OpenStack Platform 软件,但不启用或配置。
流程
在自定义
roles_data.yaml文件中创建一个不包括ServicesDefault列表的通用角色:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保保留现有的
Controller和Compute角色。创建一个环境文件
generic-node-params.yaml,在选择要置备的节点时指定您需要多少通用 Red Hat Enterprise Linux 9 节点和类别:parameter_defaults: OvercloudGenericFlavor: baremetal GenericCount: 1
parameter_defaults: OvercloudGenericFlavor: baremetal GenericCount: 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在运行
openstack overcloud deploy命令时,包含 roles 文件和环境文件:openstack overcloud deploy --templates \ -r ~/templates/roles_data_with_generic.yaml \ -e ~/templates/generic-node-params.yaml
$ openstack overcloud deploy --templates \ -r ~/templates/roles_data_with_generic.yaml \ -e ~/templates/generic-node-params.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此配置部署一个三节点环境,具有一个 Controller 节点、一个 Compute 节点和一个通用 Red Hat Enterprise Linux 9 节点。
第 10 章 配置 overcloud 网络 复制链接链接已复制到粘贴板!
要为 overcloud 配置物理网络,请创建以下配置文件:
-
网络配置文件
network_data.yaml遵循网络数据模式中定义的结构。 -
网络接口控制器(NIC)配置文件,使用 Jinja2 ansible 格式的 NIC 模板文件
j2。
10.1. 网络配置文件示例 复制链接链接已复制到粘贴板!
以下是 IPv4 和 IPv6 的网络数据模式示例。
10.1.1. IPv4 的网络数据模式示例 复制链接链接已复制到粘贴板!
10.1.2. IPv6 的网络数据模式示例 复制链接链接已复制到粘贴板!
10.2. 网络隔离 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP)提供隔离的 overcloud 网络,以便您可以隔离托管特定类型的网络流量。流量分配给特定的网络接口或绑定。使用绑定提供容错功能,如果使用正确的绑定协议,也可以提供负载共享。如果没有配置隔离网络,RHOSP 将 provisioning 网络用于所有服务。
网络配置由两个部分组成:应用于整个网络的参数,以及用于配置部署节点上网络接口的模板。
您可以为 RHOSP 部署创建以下隔离网络:
- IPMI
- 用于节点电源管理的网络。安装 undercloud 之前已预定义了此网络。
- 置备
- director 使用这个网络进行部署和管理。provisioning 网络通常配置在专用的接口上。初始部署使用带有 PXE 的 DHCP,然后网络转换为静态 IP。默认情况下,PXE 引导必须在原生 VLAN 上进行,但有些系统控制器允许从 VLAN 进行引导。默认情况下,计算和存储节点使用调配接口作为 DNS、NTP 和系统维护的默认网关。
- 内部 API
- 内部 API 网络用于使用 API 通信、RPC 消息和数据库通信 RHOSP 服务之间的通信。
- 租户
Networking 服务(neutron)使用以下方法之一为各个租户(项目)提供自己的网络:
- VLAN 隔离,其中每个租户网络都是网络 VLAN。
- 隧道(通过 VXLAN 或 GRE)
网络流量在每个租户网络内隔离。每个租户网络关联有一个 IP 子网,网络命名空间意味着多个租户网络可以使用相同的地址范围,而不会造成冲突。
- 存储
- 用于块存储、NFS、iSCSI 等的网络。出于性能的原因,最好将其隔离为完全独立的交换机结构。
- 存储管理
- OpenStack Object Storage (swift)使用此网络来同步参与的副本节点之间的数据对象。代理服务充当用户请求和底层存储层之间的中间接口。代理接收传入的请求,并找到所需的副本来检索请求的数据。使用 Ceph 后端的服务通过存储管理网络连接,因为它们不直接与 Ceph 交互,而是使用 frontend 服务。请注意,RBD 驱动程序是一个例外,因为此流量直接连接到 Ceph。
- 外部
- 托管用于图形系统管理的 OpenStack 控制面板(horizon)、OpenStack 服务的公共 API,并为目的地为实例的传入流量执行 SNAT。
- 浮动 IP
- 允许传入流量在浮动 IP 地址和租户网络中实际分配给实例的 IP 地址映射,从而访问实例。如果在独立于外部的 VLAN 上托管浮动 IP,您可以将浮动 IP VLAN 中继到 Controller 节点,并在 overcloud 创建后通过网络服务(neutron)添加 VLAN。这提供了创建连接到多个网桥的多个浮动 IP 网络的方法。VLAN 是中继的,但没有配置为接口。相反,网络服务(neutron)在每个浮动 IP 网络所选网桥上创建一个具有 VLAN 分段 ID 的 OVS 端口。
provisioning 网络必须是原生 VLAN,其他网络可以中继。
undercloud 可用作默认网关。但是,所有流量都位于 IP 伪装 NAT (网络地址转换),无法从 RHOSP 网络的其余部分访问。undercloud 也是 overcloud 默认路由的单点故障。如果在 provisioning 网络上的路由器设备上配置了外部网关,undercloud neutron DHCP 服务器可以改为提供该服务。
10.2.1. 每个角色所需的网络 复制链接链接已复制到粘贴板!
您可以使用 VLAN 创建租户网络,但您可以创建 VXLAN 隧道以进行特殊使用,而无需消耗租户 VLAN。VXLAN 功能可以添加到具有租户 VLAN 的部署中,但不能将租户 VLAN 添加到部署的 overcloud 中,而不会造成严重中断。
下表详细介绍了附加到每个角色的隔离网络:
| 角色 | Network |
|---|---|
| Controller | 置备、内部 API、存储、存储管理、租户、外部 |
| Compute | 置备、内部 API、存储、租户 |
| Ceph Storage | 置备、内部 API、存储、存储管理 |
| Cinder 存储 | 置备、内部 API、存储、存储管理 |
| Swift Storage | 置备、内部 API、存储、存储管理 |
10.2.2. 网络定义文件配置选项 复制链接链接已复制到粘贴板!
使用下表了解配置网络定义文件 network_data.yaml 的可用选项,采用 YAML 格式:
| Name | 选项 | 类型 | 默认值 |
|---|---|---|---|
|
| 网络的名称。 | 字符串 | |
|
| 可选:网络的低情况名称。 | 字符串 |
|
|
| 可选:网络的 DNS 域名。 | 字符串 | |
|
| 最大传输单元(MTU)。 | number |
|
|
| 可选:如果使用 IPv6,则设置为 true。 | 布尔值 |
|
|
| 在网络上创建 VIP。 | 布尔值 |
|
|
| 包含网络的子网。 | 字典 |
| Name | 选项 | 类型 / Element | 示例 |
|---|---|---|---|
|
| IPv4 CIDR 块表示法。 | 字符串 | 192.0.5.0/24 |
|
| IPv6 CIDR 块表示法。 | 字符串 | 2001:db6:fd00:1000::/64 |
|
| 可选: Gateway IPv4 address。 | 字符串 | 192.0.5.1 |
|
| 子网的开始和结束地址。 | 列出 / 字典 | start: 192.0.5.100 end: 192.0.5.150 |
|
| 子网的开始和结束地址。 | 列出 / 字典 | start: 2001:db6:fd00:1000:100::1 end: 2001:db6:fd00:1000:150::1 |
|
| 需要通过网络网关路由的 IPv4 网络列表。 | 列出 / 字典 | |
|
| 需要通过网络网关路由的 IPv6 网络列表。 | 列出 / 字典 | |
|
| 可选:网络的 VLAN ID。 | number |
routes 和 routes_ipv6 选项包含一个路由列表。每个路由都是一个带有 目的地 和 下一跃点 键的字典条目。这两个选项都是字符串类型。
routes:
- destination: 198.51.100.0/24
nexthop: 192.0.5.1
- destination: 203.0.113.0/24
nexthost: 192.0.5.1
routes:
- destination: 198.51.100.0/24
nexthop: 192.0.5.1
- destination: 203.0.113.0/24
nexthost: 192.0.5.1
routes:
- destination: 2001:db6:fd00:2000::/64
nexthop: 2001:db6:fd00:1000:100::1
- destination: 2001:db6:fd00:3000::/64
nexthost: 2001:db6:fd00:1000:100::1
routes:
- destination: 2001:db6:fd00:2000::/64
nexthop: 2001:db6:fd00:1000:100::1
- destination: 2001:db6:fd00:3000::/64
nexthost: 2001:db6:fd00:1000:100::1
| Name | 选项 | 类型 / Element | 默认值 |
|---|---|---|---|
|
| Neutron 网络名称。 | 字符串 | |
|
| 可选:预定义的固定 IP 地址。 | 字符串 | |
|
| Neutron 子网名称。指定虚拟 IP neutron 端口的子网。使用路由网络进行部署需要。 | 字符串 | |
|
| 可选: FQDN (完全限定域名)。 | 列出 / 字典 |
|
|
| 可选:虚拟 IP 名称。 | 字符串 |
|
10.2.3. 配置网络隔离 复制链接链接已复制到粘贴板!
要启用并配置网络隔离,您必须将所需的元素添加到 network_data.yaml 配置文件中。
流程
创建网络 YAML 定义文件:
cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation-ipv6.yaml /home/stack/templates/network_data.yaml
$ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation-ipv6.yaml /home/stack/templates/network_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
network_data.yaml文件中的选项,使其与 overcloud 网络环境的要求匹配:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3. 可组合网络 复制链接链接已复制到粘贴板!
如果要在不同网络上托管特定的网络流量,可以创建自定义可组合网络。director 提供启用了网络隔离的默认网络拓扑。您可以在 /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation.yaml 中找到此配置。
overcloud 默认使用以下预定义网络段集合:
- 内部 API
- 存储
- 存储管理
- 租户
- 外部
您可以使用可组合网络为各种服务添加网络。例如,如果您有一个专用于 NFS 流量的网络,您可以将其提供给多个角色。
director 支持在部署和更新阶段创建自定义网络。您可以将这些额外网络用于裸机节点、系统管理或为不同的角色创建单独的网络。您还可以使用它们为网络间路由流量的分割部署创建多组网络。
10.3.1. 添加可组合网络 复制链接链接已复制到粘贴板!
使用可组合网络为各种服务添加网络。例如,如果您有一个专用于存储备份流量的网络,您可以将网络提供给多个角色。
您可以在 /usr/share/openstack-tripleo-heat-templates/network-data-samples 目录中找到示例文件。
流程
列出可用的示例配置文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 复制最适合您的需要的网络配置文件示例:
cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation.yaml /home/stack/templates/network_data.yaml
$ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation.yaml /home/stack/templates/network_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
network_data.yaml配置文件并为新网络添加一个部分:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
network_data.yaml文件中的以下参数:name- 设置网络的名称。
vip- 启用在网络上创建虚拟 IP 地址。
name_lower-
设置名称的小写版本,director 映射到分配给
roles_data.yaml文件中的角色的对应网络。 subnets- 一个或多个子网防御。
subnet_name- 设置子网的名称。
ip_subnet- 以 CIDR 格式设置 IPv4 子网。
allocation_pools- 设置 IPv4 子网的 IP 范围。
gateway_ip- 设置网络的网关。
vlan- 设置网络的 VLAN ID。
ipv6- 将值设为 true 或 false。
ipv6_subnet- 设置 IPv6 子网。
gateway_ipv6- 设置 IPv6 网络的网关。
ipv6_allocation_pools- 设置 IPv6 子网的 IP 范围。
routes_ipv6- 设置 IPv6 网络的路由。
将您需要的网络 VIP 定义模板示例从
/usr/share/openstack-tripleo-heat-templates/network-data-samples复制到您的环境文件目录中。以下示例将vip-data-default-network-isolation.yaml复制到名为vip_data.yaml的本地环境文件:cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/vip-data-default-network-isolation.yaml /home/stack/templates/vip_data.yaml
$ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/vip-data-default-network-isolation.yaml /home/stack/templates/vip_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
vip_data.yaml配置文件。虚拟 IP 数据是虚拟 IP 地址定义的列表,各自包含分配 IP 地址的网络的名称。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<vip_address> 替换为所需的虚拟 IP 地址。
您可以使用
vip_data.yaml文件中的以下参数:network- 设置 neutron 网络名称。这是唯一需要的参数。
ip_address- 设置 VIP 的 IP 地址。
子网- 设置 neutron 子网名称。在创建虚拟 IP neutron 端口时,使用 指定子网。当您的部署使用路由网络时,需要此参数。
dns_name- 设置 FQDN (完全限定域名)。
name- 设置虚拟 IP 名称。
-
将
复制示例网络配置模板。Jinja2 模板用于定义 NIC 配置模板。如果其中一个示例与您的要求匹配,请浏览
/usr/share/ansible/roles/tripleo_network_config/templates/目录中提供的示例。如果示例与您的要求不匹配,请复制示例配置文件,并根据您的需要进行修改:cp /usr/share/ansible/roles/tripleo_network_config/templates/single_nic_vlans/single_nic_vlans.j2 /home/stack/templates/
$ cp /usr/share/ansible/roles/tripleo_network_config/templates/single_nic_vlans/single_nic_vlans.j2 /home/stack/templates/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
single_nic_vlans.j2配置文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
overcloud-baremetal-deploy.yaml配置文件中设置network_config模板:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 调配 overcloud 网络。此操作会生成一个输出文件,该文件将在部署 overcloud 时使用环境文件:
openstack overcloud network provision --output <deployment_file> /home/stack/templates/<networks_definition_file>.yaml
(undercloud)$ openstack overcloud network provision --output <deployment_file> /home/stack/templates/<networks_definition_file>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<networks_definition_file> 替换为网络定义文件的名称,如network_data.yaml。 -
将
<deployment_file> 替换为要在部署命令中生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-networks-deployed.yaml。
-
将
置备网络 VIP 并生成
vip-deployed-environment.yaml文件。在部署 overcloud 时,您可以使用此文件:openstack overcloud network vip provision --stack <stack> --output <deployment_file> /home/stack/templates/vip_data.yaml
(overcloud)$ openstack overcloud network vip provision --stack <stack> --output <deployment_file> /home/stack/templates/vip_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 &
lt;stack> 替换为置备网络 VIP 的堆栈的名称。如果未指定,则默认为 overcloud。 -
将
<deployment_file> 替换为要在部署命令中生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-vip-deployed.yaml。
-
将 &
10.3.2. 在角色中包含可组合网络 复制链接链接已复制到粘贴板!
您可以将可组合网络分配给环境中定义的 overcloud 角色。例如,您可以包括带有 Ceph Storage 节点的自定义 StorageBackup 网络。
流程
如果您还没有自定义
roles_data.yaml文件,请将默认值复制到您的主目录中:cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml /home/stack/templates/roles_data.yaml
$ cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml /home/stack/templates/roles_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
编辑自定义
roles_data.yaml文件。 将网络名称包括在您要向其添加
网络的角色的 network 列表中。例如,要将StorageBackup网络添加到 Ceph Storage 角色中,请使用以下示例片断:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将自定义网络添加到其各自角色后,保存文件。
运行 openstack overcloud deploy 命令时,请使用 -r 选项包含自定义 roles_data.yaml 文件。如果没有使用 -r 选项,部署命令将默认的角色集合与相应的分配网络一起使用。
10.3.3. 为可组合网络分配 OpenStack 服务 复制链接链接已复制到粘贴板!
每个 OpenStack 服务都分配到资源注册表中的默认网络类型。这些服务绑定到网络分配的网络中的 IP 地址。虽然 OpenStack 服务划分到这些网络,但实际物理网络的数量可能会有所不同,如网络环境文件中定义的不同。您可以通过在环境文件中定义新的网络映射(如 /home/stack/templates/service-reassignments.yaml ),将 OpenStack 服务重新分配给不同的网络类型。ServiceNetMap 参数决定了您要用于每个服务的网络类型。
例如,您可以通过修改突出显示的部分将存储管理网络服务重新分配给存储备份网络:
parameter_defaults:
ServiceNetMap:
SwiftStorageNetwork: storage_backup
CephClusterNetwork: storage_backup
parameter_defaults:
ServiceNetMap:
SwiftStorageNetwork: storage_backup
CephClusterNetwork: storage_backup
更改这些参数到 storage_backup,会将这些服务放置在 Storage Backup 网络中,而不是 Storage Management 网络。这意味着,您必须只为 Storage Backup 网络而不是 Storage Management 网络定义一组 parameter_defaults。
director 将自定义 ServiceNetMap 参数定义合并到从 ServiceNetMapDefaults 获取的预定义默认值列表中,并覆盖默认值。director 返回完整列表,包括自定义到 ServiceNetMap,后者用于为各种服务配置网络分配。
对于使用 Pacemaker 的节点,服务映射适用于 network_data.yaml 文件中使用 vip: true 的网络。overcloud 负载均衡器将来自 VIP 的流量重定向到特定的服务端点。
您可以在 /usr/share/openstack-tripleo-heat-templates/network/service_net_map.j2.yaml 文件的 ServiceNetMapDefaults 参数中找到默认服务的完整列表。
10.3.4. 启用自定义可组合网络 复制链接链接已复制到粘贴板!
使用其中一个默认 NIC 模板启用自定义可组合网络。在本例中,使用带有 VLAN 模板的 Single NIC (custom_single_nic_vlans)。
流程
查找 stackrc undercloud 凭证文件:
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 置备 overcloud 网络:
openstack overcloud network provision \ --output overcloud-networks-deployed.yaml \ custom_network_data.yaml
$ openstack overcloud network provision \ --output overcloud-networks-deployed.yaml \ custom_network_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 置备网络 VIP:
openstack overcloud network vip provision \ --stack overcloud \ --output overcloud-networks-vips-deployed.yaml \ custom_vip_data.yaml$ openstack overcloud network vip provision \ --stack overcloud \ --output overcloud-networks-vips-deployed.yaml \ custom_vip_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 置备 overcloud 节点:
openstack overcloud node provision \ --stack overcloud \ --output overcloud-baremetal-deployed.yaml \ overcloud-baremetal-deploy.yaml$ openstack overcloud node provision \ --stack overcloud \ --output overcloud-baremetal-deployed.yaml \ overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 构建
openstack overcloud deploy命令,按所需顺序指定配置文件和模板,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
本例命令在 overcloud 中的节点之间部署可组合网络,包括额外的自定义网络。
10.3.5. 重命名默认网络 复制链接链接已复制到粘贴板!
您可以使用 network_data.yaml 文件修改默认网络的用户可见名称:
- InternalApi
- 外部
- 存储
- StorageMgmt
- 租户
要更改这些名称,请不要修改 name 字段。相反,将 name_lower 字段更改为网络的新名称,并使用新名称更新 ServiceNetMap。
流程
在
network_data.yaml文件中,为您要重命名的每个网络的name_lower参数输入新名称:- name: InternalApi name_lower: MyCustomInternalApi
- name: InternalApi name_lower: MyCustomInternalApiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
service_net_map_replace参数中包括name_lower参数的默认值:- name: InternalApi name_lower: MyCustomInternalApi service_net_map_replace: internal_api
- name: InternalApi name_lower: MyCustomInternalApi service_net_map_replace: internal_apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4. 自定义网络接口模板 复制链接链接已复制到粘贴板!
配置 第 10.2 节 “网络隔离” 后,您可以创建一组自定义网络接口模板,以适应环境中的节点。例如,您可以包含以下文件:
-
用于配置网络默认值的环境文件(
/usr/share/openstack-tripleo-heat-templates/environments/network/multiple-nics/network-environment.yaml)。 - 为各个节点定义 NIC 布局的模板。overcloud 核心模板集合包含一组用于不同用例的默认值。要创建自定义 NIC 模板,请呈现默认的 Jinja2 模板作为自定义模板的基础。
-
启用 NIC 的自定义环境文件。本例使用引用自定义接口模板的自定义环境文件(
/home/stack/templates/custom-network-configuration.yaml)。 - 自定义网络参数的任何其他环境文件。
-
如果自定义网络,则自定义
network_data.yaml文件。 -
如果您创建额外的或自定义可组合网络,则自定义
network_data.yaml文件和自定义roles_data.yaml文件。
上一个列表中的一些文件是 Jinja2 格式文件,它带有一个 .j2.yaml 扩展名。director 在部署过程中将这些文件呈现给 .yaml 版本。
10.4.1. 自定义网络架构 复制链接链接已复制到粘贴板!
NIC 模板示例可能不适用于特定的网络配置。例如,您可能想创建自己的自定义 NIC 模板,该模板适合特定的网络布局。您可能需要将控制服务和数据服务分开来分隔到单独的 NIC。在这种情况下,您可以使用以下方法将服务映射到 NIC 分配:
NIC1 (Provisioning)
- 置备/控制平面
NIC2 (控制组)
- 内部 API
- 存储管理
- 外部(公共 API)
NIC3 (Data Group)
- 租户网络(VXLAN 隧道)
- 租户 VLAN/ Provider VLAN
- 存储
- 外部 VLAN (利用 IP/SNAT)
NIC4 (管理)
- 管理
10.4.2. 网络接口参考 复制链接链接已复制到粘贴板!
网络接口配置包含以下参数:
Interface
定义一个网络接口。配置使用实际接口名称("eth0", "eth1", "enp0s25")或一组数字接口 ("nic1", "nic2", "nic3") 定义各个接口:
- type: interface
name: nic2
- type: interface
name: nic2
| 选项 | 默认 | 描述 |
|---|---|---|
| name | 接口的名称。 | |
| use_dhcp | False | 使用 DHCP 获取 IP 地址。 |
| use_dhcpv6 | False | 使用 DHCP 获取 v6 IP 地址。 |
| addresses | 分配给接口的 IP 地址列表。 | |
| Routes | 分配给接口的路由列表。更多信息请参阅 Routes。 | |
| mtu | 1500 | 连接的最大传输单元(MTU)。 |
| primary | False | 将接口定义为主接口。 |
| persist_mapping | False | 编写设备别名配置而不是系统名称。 |
| dhclient_args | 无 | 要传递给 DHCP 客户端的参数。 |
| dns_servers | 无 | 要用于接口的 DNS 服务器列表。 |
| ethtool_opts |
将这个选项设置为 |
vlan
定义 VLAN。使用从 parameters 部分中传递的 VLAN ID 和子网。
例如:
| 选项 | 默认 | 描述 |
|---|---|---|
| vlan_id | VLAN ID。 | |
| device | 附加 VLAN 的父设备。当 VLAN 不是 OVS 网桥的成员时,请使用此参数。例如,使用此参数将 VLAN 附加到绑定接口设备。 | |
| use_dhcp | False | 使用 DHCP 获取 IP 地址。 |
| use_dhcpv6 | False | 使用 DHCP 获取 v6 IP 地址。 |
| addresses | 分配给 VLAN 的 IP 地址列表。 | |
| Routes | 分配给 VLAN 的路由列表。更多信息请参阅 Routes。 | |
| mtu | 1500 | 连接的最大传输单元(MTU)。 |
| primary | False | 将 VLAN 定义为主接口。 |
| persist_mapping | False | 编写设备别名配置而不是系统名称。 |
| dhclient_args | 无 | 要传递给 DHCP 客户端的参数。 |
| dns_servers | 无 | 要用于 VLAN 的 DNS 服务器列表。 |
ovs_bond
定义 Open vSwitch 中的绑定将两个或更多 接口 加入在一起。这有助于冗余,并增加带宽。
例如:
| 选项 | 默认 | 描述 |
|---|---|---|
| name | 绑定的名称。 | |
| use_dhcp | False | 使用 DHCP 获取 IP 地址。 |
| use_dhcpv6 | False | 使用 DHCP 获取 v6 IP 地址。 |
| addresses | 分配给绑定的 IP 地址列表。 | |
| Routes | 分配给绑定的路由列表。更多信息请参阅 Routes。 | |
| mtu | 1500 | 连接的最大传输单元(MTU)。 |
| primary | False | 将接口定义为主接口。 |
| 成员 | 要在绑定中使用的接口对象序列。 | |
| ovs_options | 创建绑定时传递给 OVS 的一组选项。 | |
| ovs_extra | 在绑定的网络配置文件中设置为 OVS_EXTRA 参数的一组选项。 | |
| defroute | True |
使用 DHCP 服务提供的默认路由。仅在启用 |
| persist_mapping | False | 编写设备别名配置而不是系统名称。 |
| dhclient_args | 无 | 要传递给 DHCP 客户端的参数。 |
| dns_servers | 无 | 要用于绑定的 DNS 服务器列表。 |
ovs_bridge
在 Open vSwitch 中定义一个网桥,将多个 interface, ovs_bond, 和 vlan 对象连接在一起。
网络接口类型 ovs_bridge 采用 参数名称。
如果您有多个网桥,则必须使用不同于接受 bridge_name 的默认网桥名称。如果您没有使用不同名称,那么在聚合阶段,两个网络绑定将放在同一个网桥中。
如果您要为外部 tripleo 网络定义 OVS 网桥,则保留 bridge_name 和 interface_name 值作为部署框架,则分别将这些值替换为外部网桥名称和外部接口名称。
例如:
OVS 网桥连接到 Networking 服务(neutron)服务器,以获取配置数据。如果 OpenStack 控制流量(通常是 Control Plane 和内部 API 网络)位于 OVS 网桥上,那么每当您升级 OVS 时,任何时候都会丢失与 neutron 服务器的连接,或者由 admin 用户或进程重启 OVS 网桥。这会导致一些停机时间。如果在这些情况下无法接受停机时间,您必须将 Control 组网络放在单独的接口或绑定中,而不是 OVS 网桥上:
- 当您将内部 API 网络放在置备接口上的 VLAN 上时,您可以在第二个接口上获取最小设置。
- 要实现绑定,至少需要两个绑定(我们的网络接口)。将控制组放在 Linux 绑定(Linux 网桥)上。如果交换机不支持 LACP 回退到单一接口进行 PXE 引导,那么这个解决方案至少需要 5 个 NIC。
| 选项 | 默认 | 描述 |
|---|---|---|
| name | 网桥的名称。 | |
| use_dhcp | False | 使用 DHCP 获取 IP 地址。 |
| use_dhcpv6 | False | 使用 DHCP 获取 v6 IP 地址。 |
| addresses | 分配给网桥的 IP 地址列表。 | |
| Routes | 分配给网桥的路由列表。更多信息请参阅 Routes。 | |
| mtu | 1500 | 连接的最大传输单元(MTU)。 |
| 成员 | 您要在桥接中使用的接口、VLAN 和绑定对象序列。 | |
| ovs_options | 创建网桥时要传递给 OVS 的一组选项。 | |
| ovs_extra | 将一组选项设置为网桥的网络配置文件中的 OVS_EXTRA 参数。 | |
| defroute | True |
使用 DHCP 服务提供的默认路由。仅在启用 |
| persist_mapping | False | 编写设备别名配置而不是系统名称。 |
| dhclient_args | 无 | 要传递给 DHCP 客户端的参数。 |
| dns_servers | 无 | 要用于网桥的 DNS 服务器列表。 |
linux_bond
定义将两个或多个 接口 接合在一起的 Linux 绑定。这有助于冗余,并增加带宽。确保在 bonding_options 参数中包含基于内核的绑定选项。
例如:
请注意,nic2 使用 primary: true 来确保绑定对 nic2 使用 MAC 地址。
| 选项 | 默认 | 描述 |
|---|---|---|
| name | 绑定的名称。 | |
| use_dhcp | False | 使用 DHCP 获取 IP 地址。 |
| use_dhcpv6 | False | 使用 DHCP 获取 v6 IP 地址。 |
| addresses | 分配给绑定的 IP 地址列表。 | |
| Routes | 分配给绑定的路由列表。请参阅 Routes。 | |
| mtu | 1500 | 连接的最大传输单元(MTU)。 |
| primary | False | 将接口定义为主接口。 |
| 成员 | 要在绑定中使用的接口对象序列。 | |
| bonding_options | 创建绑定时的一组选项。 | |
| defroute | True |
使用 DHCP 服务提供的默认路由。仅在启用 |
| persist_mapping | False | 编写设备别名配置而不是系统名称。 |
| dhclient_args | 无 | 要传递给 DHCP 客户端的参数。 |
| dns_servers | 无 | 要用于绑定的 DNS 服务器列表。 |
linux_bridge
定义一个 Linux 网桥,它将多个 interface, linux_bond, 和 vlan 对象连接在一起。外部网桥还对参数使用两个特殊值:
-
bridge_name,它被外部网桥名称替换。 -
interface_name,它被外部接口替代。
例如:
| 选项 | 默认 | 描述 |
|---|---|---|
| name | 网桥的名称。 | |
| use_dhcp | False | 使用 DHCP 获取 IP 地址。 |
| use_dhcpv6 | False | 使用 DHCP 获取 v6 IP 地址。 |
| addresses | 分配给网桥的 IP 地址列表。 | |
| Routes | 分配给网桥的路由列表。更多信息请参阅 Routes。 | |
| mtu | 1500 | 连接的最大传输单元(MTU)。 |
| 成员 | 您要在桥接中使用的接口、VLAN 和绑定对象序列。 | |
| defroute | True |
使用 DHCP 服务提供的默认路由。仅在启用 |
| persist_mapping | False | 编写设备别名配置而不是系统名称。 |
| dhclient_args | 无 | 要传递给 DHCP 客户端的参数。 |
| dns_servers | 无 | 要用于网桥的 DNS 服务器列表。 |
Routes
定义要应用到网络接口、VLAN、网桥或绑定的路由列表。
例如:
- type: linux_bridge
name: bridge_name
...
routes: {{ [ctlplane_host_routes] | flatten | unique }}
- type: linux_bridge
name: bridge_name
...
routes: {{ [ctlplane_host_routes] | flatten | unique }}
| 选项 | 默认 | 描述 |
|---|---|---|
| ip_netmask | 无 | 目标网络的 IP 和子网掩码。 |
| default | False |
将此路由设置为默认路由。等同于设置 |
| next_hop | 无 | 用于访问目标网络的路由器的 IP 地址。 |
10.4.3. 网络接口布局示例 复制链接链接已复制到粘贴板!
以下控制器节点 NIC 模板的代码片段演示了如何配置自定义网络场景,使控制组与 OVS 网桥分开:
此模板使用五个网络接口,并将多个标记的 VLAN 设备分配到编号的接口。在 nic4 和 nic5 上,此模板创建 OVS 网桥。
10.5. 其他 overcloud 网络配置 复制链接链接已复制到粘贴板!
本章介绍了 第 10.4 节 “自定义网络接口模板” 中概述的概念和程序,并提供一些额外的信息来帮助配置 overcloud 网络的一部分。
10.5.1. 配置自定义接口 复制链接链接已复制到粘贴板!
单个接口可能需要修改。以下示例显示了使用第二个 NIC 来连接到带有 DHCP 地址的基础架构网络的修改,并将另一个 NIC 用于绑定:
网络接口模板使用实际接口名称(eth0, eth1, enp0s25)或一组编号的接口(nic1, nic2, nic3)。当使用编号接口(nic1, nic2 等)而不是命名接口(eth0, eno2 等)时,角色中的主机的网络接口不必完全相同。例如,一个主机可能具有接口 em1 和 em2,而另一个主机具有 eno1 和 eno2,但您可以将两个主机的 NIC 指代为 nic1 和 nic2。
编号接口的顺序与指定网络接口类型的顺序对应:
-
ethX接口,如eth0、eth1等。这些通常是板载接口。 -
enoX接口,如eno0、eno1等。这些通常是板载接口。 -
enX接口,按字母数字排序,如enp3s0、enp3s1、ens3等。这些通常是附加接口。
编号的 NIC 方案仅包含实时接口,例如当接口有电缆连接到交换机时。如果您有一些主机具有四个接口,且一些有六个接口,请使用 nic1 到 nic4,并且每个主机上仅连接四个电缆。
为预置备节点自定义 NIC 映射
如果使用预置备节点,您可以通过在环境文件中配置 NetConfigDataLookup heat 参数来指定特定节点的 os-net-config 映射。
NetConfigDataLookup heat 参数的配置等同于节点定义文件中的 net_config_data_lookup 属性,即 overcloud-baremetal-deploy.yaml。如果没有使用预置备节点,您必须在节点定义文件中配置 NIC 映射。有关配置 net_config_data_lookup 属性的更多信息,请参阅 裸机节点置备属性。
您可以为每个节点上的物理接口分配别名,以预先确定哪个物理 NIC 映射到特定别名,如 nic1 或 nic2,您可以将 MAC 地址映射到指定的别名。您可以使用 MAC 地址或 DMI 关键字映射特定节点,也可以使用 DMI 关键字映射一组节点。以下示例为物理接口配置三个节点和具有别名的两个节点组。生成的配置由 os-net-config 应用。在每个节点上,您可以在 /etc/os-net-config/mapping.yaml 文件的 interface_mapping 部分中看到应用的配置。
os-net-config-mappings.yaml示例
通常,os-net-config 仅注册已在 UP 状态连接的接口。但是,如果您硬编码接口带有自定义映射文件,接口也会注册,即使它处于 DOWN 状态。
10.5.2. 配置路由和默认路由 复制链接链接已复制到粘贴板!
您可以通过以下两种方式之一设置主机的默认路由:如果接口使用 DHCP,并且 DHCP 服务器提供网关地址,则系统为该网关使用默认路由。否则,您可以在具有静态 IP 的接口上设置默认路由。
虽然 Linux 内核支持多个默认网关,但它仅使用具有最低指标的网关。如果有多个 DHCP 接口,这可能会导致无法预计的默认网关。在这种情况下,建议为使用默认路由的接口以外的接口设置 defroute: false。
例如,您可能希望 DHCP 接口(nic3)是默认路由。使用以下 YAML 片段禁用另一个 DHCP 接口上的默认路由(nic2):
defroute 参数仅适用于通过 DHCP 获取的路由。
要在具有静态 IP 的接口上设置静态路由,请指定到子网的路由。例如,您可以通过内部 API 网络上 172.17.0.1 上的网关将路由设置为 10.1.2.0/24 子网:
10.5.3. 配置基于策略的路由 复制链接链接已复制到粘贴板!
要在 Controller 节点上配置来自不同网络的无限访问,请配置基于策略的路由。基于策略的路由使用路由表,在具有多个接口的主机上,您可以根据源地址通过特定接口发送流量。您可以将来自不同源的数据包路由到不同的网络,即使目的地是相同的。
例如,您可以将路由配置为根据数据包的源地址将流量发送到内部 API 网络,即使外部网络的默认路由也是如此。您还可以为每个接口定义特定的路由规则。
Red Hat OpenStack Platform 使用 os-net-config 工具为 overcloud 节点配置网络属性。os-net-config 工具管理 Controller 节点上的以下网络路由:
-
/etc/iproute2/rt_tables文件中的路由表 -
/etc/sysconfig/network-scripts/rule-{ifname}文件中的 IPv4 规则 -
/etc/sysconfig/network-scripts/rule6-{ifname}文件中的 IPv6 规则 -
路由表在
/etc/sysconfig/network-scripts/route-{ifname}中特定路由
先决条件
- 您已成功安装了 undercloud。如需更多信息,请参阅 Director 安装和使用 指南中的 安装 director。
流程
从
/home/stack/templates/custom-nics目录中创建自定义 NIC 模板中的接口条目,为接口定义路由,并定义与您的部署相关的规则:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在部署命令中包含您的自定义 NIC 配置和网络环境文件,以及与部署相关的任何其他环境文件:
openstack overcloud deploy --templates \ -e /home/stack/templates/<custom-nic-template> -e <OTHER_ENVIRONMENT_FILES>
$ openstack overcloud deploy --templates \ -e /home/stack/templates/<custom-nic-template> -e <OTHER_ENVIRONMENT_FILES>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在 Controller 节点上输入以下命令,以验证路由配置是否正常工作:
cat /etc/iproute2/rt_tables $ ip route $ ip rule
$ cat /etc/iproute2/rt_tables $ ip route $ ip ruleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.5.4. 配置巨型帧 复制链接链接已复制到粘贴板!
最大传输单元(MTU)设置决定了通过单一以太网帧传输的最大数据量。使用较大的值会降低开销,因为每个帧以标头的形式添加数据。默认值为 1500,使用更高的值要求配置交换机端口来支持巨型帧。大多数交换机支持至少 9000 的 MTU,但很多交换机默认配置为 1500。
VLAN 的 MTU 无法超过物理接口的 MTU。确保在绑定或接口上包含 MTU 值。
存储、存储管理、内部 API 和租户网络都可从巨型帧中受益。
您可以在 jinja2 模板或 network_data.yaml 文件中更改 mtu 的值。如果您在 network_data.yaml 文件中设置值,它会在部署过程中渲染。
路由器通常无法在第 3 层边界之间转发巨型帧。为避免连接问题,请不要更改 Provisioning 接口、外部接口和任何浮动 IP 接口的默认 MTU。
10.5.5. 配置 ML2/OVN 北向路径 MTU 发现,以实现巨型帧碎片 复制链接链接已复制到粘贴板!
如果您的内部网络上的虚拟机将巨型帧发送到外部网络,并且内部网络的最大传输单元(MTU)超过外部网络的 MTU,则北向帧可以轻松地超过外部网络的容量。
ML2/OVS 会自动处理通过大小的数据包问题,ML2/OVN 会自动处理它用于 TCP 数据包。
但是,为了确保在使用 ML2/OVN 机制驱动程序的部署中正确处理过度北向 UDP 数据包,您需要执行额外的配置步骤。
这些步骤将 ML2/OVN 路由器配置为将 ICMP"碎片处理所需的"数据包返回到发送虚拟机,其中发送应用可以将有效负载分成较小的数据包。
在 east/west 流量中,RHOSP ML2/OVN 部署不支持大于 east/west 路径上最小 MTU 的数据包碎片。例如:
- VM1 位于 Network1 上,其 MTU 为 1300。
- VM2 位于 Network2 上,其 MTU 为 1200。
在 VM1 和 VM2 之间带有大小为 1171 或不成功的一个 ping。大于 1171 的 ping 会导致数据包丢失百分比。
由于没有客户的具体要求,红帽还没有计划提供对它的支持。
流程
在 ml2_conf.ini 的 [ovn] 部分中设置以下值:
ovn_emit_need_to_frag = True
ovn_emit_need_to_frag = TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.5.6. 在中继接口上配置原生 VLAN 复制链接链接已复制到粘贴板!
如果中继接口或绑定在原生 VLAN 上有网络,则该 IP 地址直接分配给网桥,且没有 VLAN 接口。
以下示例配置了一个绑定接口,其中 External 网络位于原生 VLAN 中:
当您将地址或路由语句移到网桥时,从网桥中删除对应的 VLAN 接口。对所有适用的角色进行更改。外部网络仅位于控制器上,因此只有控制器模板需要更改。Storage 网络会附加到所有角色,因此如果存储网络位于默认的 VLAN 上,则所有角色都需要修改。
10.5.7. 增加 netfilter 跟踪的最大连接数 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP)网络服务(neutron)使用 netfilter 连接跟踪来构建有状态的防火墙,并在虚拟网络上提供网络地址转换(NAT)。有些情况下,可能会导致内核空间达到最大连接限制,并导致错误,如 nf_conntrack: 表 full、丢弃数据包。您可以增加连接跟踪(conntrack)的限制,并避免这些类型的错误。您可以在 RHOSP 部署中为一个或多个角色或所有节点增加 conntrack 限制。
先决条件
- RHOSP undercloud 安装成功。
流程
-
以
stack用户身份登录 undercloud 主机。 提供 undercloud 凭证文件:
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建自定义 YAML 环境文件。
示例
vi /home/stack/templates/custom-environment.yaml
$ vi /home/stack/templates/custom-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您的环境文件必须包含 keyword
参数_defaults和ExtraSysctlSettings。为 netfilter 可在变量net.nf_conntrack_max中跟踪的最大连接数输入新值。示例
在本例中,您可以在 RHOSP 部署中的所有主机中设置 conntrack 限制:
parameter_defaults: ExtraSysctlSettings: net.nf_conntrack_max: value: 500000parameter_defaults: ExtraSysctlSettings: net.nf_conntrack_max: value: 500000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 &
lt;role>Parameter参数为特定角色设置 conntrack 限制:parameter_defaults: <role>Parameters: ExtraSysctlSettings: net.nf_conntrack_max: value: <simultaneous_connections>parameter_defaults: <role>Parameters: ExtraSysctlSettings: net.nf_conntrack_max: value: <simultaneous_connections>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<role> 替换为角色的名称。例如,使用
ControllerParameters为 Controller 角色设置 conntrack 限制,或使用ComputeParameters为 Compute 角色设置 conntrack 限制。将
<simultaneous_connections> 替换为您要允许的同时连接的数量。示例
在本例中,您只能为 RHOSP 部署中的 Controller 角色设置 conntrack 限制:
parameter_defaults: ControllerParameters: ExtraSysctlSettings: net.nf_conntrack_max: value: 500000parameter_defaults: ControllerParameters: ExtraSysctlSettings: net.nf_conntrack_max: value: 500000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意net.nf_conntrack_max的默认值为500000连接。最大值为:4294967295。
运行部署命令,并包括核心 heat 模板、环境文件和新的自定义环境文件。
重要环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源更为优先。
示例
openstack overcloud deploy --templates \ -e /home/stack/templates/custom-environment.yaml
$ openstack overcloud deploy --templates \ -e /home/stack/templates/custom-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.6. 网络接口绑定 复制链接链接已复制到粘贴板!
您可以在自定义网络配置中使用各种绑定选项。
10.6.1. overcloud 节点的网络接口绑定 复制链接链接已复制到粘贴板!
您可以将多个物理 NIC 捆绑在一起,形成一个名为绑定的单个逻辑通道。您可以配置绑定来为高可用性系统或增加吞吐量提供冗余。
Red Hat OpenStack Platform 支持 Open vSwitch (OVS)内核绑定、OVS-DPDK 绑定和 Linux 内核绑定。
| 绑定类型 | 类型值 | 允许网桥类型 | 允许的成员 |
|---|---|---|---|
| OVS 内核绑定 |
|
|
|
| OVS-DPDK 绑定 |
|
|
|
| Linux 内核绑定 |
|
|
|
不要在同一节点上组合 ovs_bridge 和 ovs_user_bridge。
10.6.2. 创建 Open vSwitch (OVS)绑定 复制链接链接已复制到粘贴板!
您可以在网络接口模板中创建 OVS 绑定。例如,您可以创建一个绑定作为 OVS 用户空间网桥的一部分:
在本例中,您可以从两个 DPDK 端口创建绑定。
ovs_options 参数包含绑定选项。您可以使用 BondInterfaceOvsOptions 参数在网络环境文件中配置绑定选项:
environment_parameters: BondInterfaceOvsOptions: "bond_mode=active_backup"
environment_parameters:
BondInterfaceOvsOptions: "bond_mode=active_backup"
10.6.3. Open vSwitch (OVS)绑定选项 复制链接链接已复制到粘贴板!
您可以使用 NIC 模板文件中的 ovs_options heat 参数设置各种 Open vSwitch (OVS)绑定选项。
bond_mode=balance-slb-
源负载均衡(slb)根据源 MAC 地址和输出 VLAN 平衡流,并在流量模式发生变化时定期重新平衡。当您使用
balance-slbbonding 选项配置绑定时,远程交换机不需要配置。Networking 服务(neutron)将每个源 MAC 和 VLAN 对分配给一个链接,并通过该链接传输来自该 MAC 和 VLAN 的所有数据包。使用基于源 MAC 地址和 VLAN 号的简单哈希算法,随着流量模式的变化定期重新平衡。balance-slb模式与 Linux 绑定驱动程序使用的模式 2 绑定类似。即使交换机没有配置为使用 LACP,也可以使用此模式来提供负载均衡。 bond_mode=active-backup-
当您使用
active-backup绑定模式配置绑定时,网络服务会将一个 NIC 保留为待机状态。当活跃连接失败时,待机 NIC 会恢复网络操作。物理交换机仅会显示一个 MAC 地址。这个模式不需要切换配置,链接连接到单独的交换机时可以正常工作。这个模式不提供负载均衡。 lacp=[active | passive | off]-
控制链路聚合控制协议(LACP)行为。只有某些交换机支持 LACP。如果您的交换机不支持 LACP,请使用
bond_mode=balance-slb或bond_mode=active-backup。 other-config:lacp-fallback-ab=true- 如果 LACP 失败,则将 active-backup 设置为绑定模式。
other_config:lacp-time=[fast | slow]- 将 LACP heartbeat 设置为 1 秒 (fast) 或 30 秒 (slow)。默认设置会较慢。
other_config:bond-detect-mode=[miimon | carrier]- 将链路检测设置为使用 miimon heartbeats (miimon)或监控载体(carrier)。默认值为载体。
other_config:bond-miimon-interval=100- 如果使用 miimon,请设置心跳间隔(毫秒)。
bond_updelay=1000- 设置链接必须激活的时间间隔(毫秒),以防止流量过长。
other_config:bond-rebalance-interval=10000- 设置流在绑定成员间重新平衡的时间间隔(毫秒)。将此值设置为 0,以禁用绑定成员之间的流重新平衡。
10.6.4. 使用带有 Open vSwitch (OVS)绑定模式的链路聚合控制协议(LACP) 复制链接链接已复制到粘贴板!
您可以将绑定与可选的链路聚合控制协议(LACP)一起使用。LACP 是一个协商协议,它为负载平衡和容错创建动态绑定。
使用下表了解 OVS 内核和 OVS-DPDK 绑定接口与 LACP 选项的兼容性。
OVS/OVS-DPDK balance-tcp 模式仅作为技术预览提供。
在控制和存储网络上,红帽建议您使用带有 VLAN 和 LACP 的 Linux 绑定,因为 OVS 绑定可能会在 OVS 或 neutron 代理重启时发生,用于更新、热修复和其他事件。Linux bond/LACP/VLAN 配置在没有 OVS 中断预算的情况下提供 NIC 管理。
| 目标 | OVS 绑定模式 | 兼容 LACP 选项 | 备注 |
| 高可用性(主动-被动) |
|
| |
| 增加了吞吐量(主动-主动) |
|
|
|
|
|
|
|
10.6.5. 创建 Linux 绑定 复制链接链接已复制到粘贴板!
您可以在网络接口模板中创建 Linux 绑定。例如,您可以创建一个绑定两个接口的 Linux 绑定:
bonding_options 参数为 Linux 绑定设置特定的绑定选项。
模式-
设置绑定模式,在示例中为
802.3ad或 LACP 模式。有关 Linux 绑定模式的更多信息,请参阅 Red Hat Enterprise Linux 9 配置和管理网络指南中的 "上游交换配置依赖绑定模式 "。 lacp_rate- 定义 LACP 数据包是每 1 秒发送一次,或每 30 秒发送一次。
updelay- 定义接口在用于流量前必须处于活跃状态的最短时间。这个最小配置有助于缓解端口中断。
miimon- 使用驱动程序的 MIIMON 功能监控端口状态的时间间隔(毫秒)。
使用以下附加示例作为配置您自己的 Linux 绑定的指南:
Linux 绑定设置为带有一个 VLAN 的
active-backup模式:Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVS 网桥上的 Linux 绑定。bond 设置为
802.3adLACP 模式,带有一个 VLAN:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您必须设置
min_viable_mtu_ctlplane,然后才能使用它。将/usr/share/ansible/roles/tripleo_network_config/templates/2_linux_bonds_vlans.j2复制到您的 templates 目录,并根据您的需要进行修改。如需更多信息,请参阅 添加可组合网络,并参考与网络配置模板相关的步骤。
10.7. 更新网络配置文件的格式 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP) 17.0 中更改了网络配置 yaml 文件格式。网络配置文件 network_data.yaml 的结构已更改,NIC 模板文件格式已从 yaml 文件格式改为 Jinja2 ansible 格式 j2。
您可以使用以下转换工具将当前部署中的现有网络配置文件转换为 RHOSP 17+ 格式:
-
convert_v1_net_data.py -
convert_heat_nic_config_to_ansible_j2.py
您还可以手动转换现有的 NIC 模板文件。
您需要转换的文件包括:
-
network_data.yaml - 控制器 NIC 模板
- 计算 NIC 模板
- 任何其它自定义网络文件
10.7.1. 更新网络配置文件的格式 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP) 17.0 中更改了网络配置 yaml 文件格式。您可以使用 convert_v1_net_data.py 转换工具,将现有网络配置文件转换为 RHOSP 17+ 格式。
流程
下载转换工具:
-
/usr/share/openstack-tripleo-heat-templates/tools/convert_v1_net_data.py
-
将 RHOSP 16+ 网络配置文件转换为 RHOSP 17+ 格式:
python3 convert_v1_net_data.py <network_config>.yaml
$ python3 convert_v1_net_data.py <network_config>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 <
network_config> 替换为您要转换的现有配置文件的名称,如network_data.yaml。
-
将 <
10.7.2. 自动将 NIC 模板转换为 Jinja2 Ansible 格式 复制链接链接已复制到粘贴板!
在 Red Hat OpenStack Platform (RHOSP) 17.0 中,NIC 模板文件格式已从 yaml 文件格式改为 Jinja 2 Ansible 格式。
您可以使用 convert_heat_nic_config_to_ansible_j2.py 转换工具将当前部署中现有的 NIC 模板文件转换为 Jinja2 格式。
您还可以手动转换现有的 NIC 模板文件。如需更多信息,请参阅 手动将 NIC 模板转换为 Jinja2 Ansible 格式。
您需要转换的文件包括:
- 控制器 NIC 模板
- 计算 NIC 模板
- 任何其它自定义网络文件
流程
下载转换工具:
-
/usr/share/openstack-tripleo-heat-templates/tools/convert_heat_nic_config_to_ansible_j2.py
-
将您的 Compute 和 Controller NIC 临时文件以及任何其他自定义网络文件转换为 Jinja2 Ansible 格式:
python3 convert_heat_nic_config_to_ansible_j2.py \ [--stack <overcloud> | --standalone] --networks_file <network_config.yaml> \ <network_template>.yaml
$ python3 convert_heat_nic_config_to_ansible_j2.py \ [--stack <overcloud> | --standalone] --networks_file <network_config.yaml> \ <network_template>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<overcloud>替换为 overcloud 堆栈的名称或 UUID。如果未指定--stack,堆栈默认为overcloud。注意您只能在 RHOSP 16 部署中使用--
stack选项,因为它需要在 undercloud 节点上运行编排服务(heat)。从 RHOSP 17 开始,RHOSP 部署使用临时 heat,它在容器中运行编排服务。如果编排服务不可用,或者您没有堆栈,则使用-standalone选项,而不是-stack。-
将
<network_config.yaml> 替换为描述网络部署的配置文件的名称,如network_data.yaml。 -
将 <
network_template> 替换为您要转换的网络配置文件的名称。
重复此命令,直到您转换了所有自定义网络配置文件。
convert_heat_nic_config_to_ansible_j2.py脚本为您传递给它的每个yaml文件生成一个.j2文件以进行转换。-
检查每个生成的
.j2文件,以确保配置正确并完成您的环境,并手动解决工具生成的任何注释,突出显示无法转换配置的位置。有关手动将 NIC 配置转换为 Jinja2 格式的更多信息,请参阅 Heat 参数到 Ansible 变量映射。 在
network-environment.yaml文件中配置*NetworkConfigTemplate参数以指向生成的.j2文件:parameter_defaults: ControllerNetworkConfigTemplate: '/home/stack/templates/custom-nics/controller.j2' ComputeNetworkConfigTemplate: '/home/stack/templates/custom-nics/compute.j2'
parameter_defaults: ControllerNetworkConfigTemplate: '/home/stack/templates/custom-nics/controller.j2' ComputeNetworkConfigTemplate: '/home/stack/templates/custom-nics/compute.j2'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为旧网络配置文件从
network-environment.yaml文件中删除resource_registry映射:resource_registry: OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
resource_registry: OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.7.3. 手动将 NIC 模板转换为 Jinja2 Ansible 格式 复制链接链接已复制到粘贴板!
在 Red Hat OpenStack Platform (RHOSP) 17.0 中,NIC 模板文件格式已从 yaml 文件格式改为 Jinja 2 Ansible 格式。
您可以手动转换现有的 NIC 模板文件。
您还可以使用 convert_heat_nic_config_to_ansible_j2.py 转换工具将当前部署中现有的 NIC 模板文件转换为 Jinja2 格式。如需更多信息,请参阅 自动将 NIC 模板转换为 Jinja2 ansible 格式。
您需要转换的文件包括:
- 控制器 NIC 模板
- 计算 NIC 模板
- 任何其它自定义网络文件
流程
-
创建 Jinja2 模板。您可以使用
os-net-config模式创建新模板,或者从 undercloud 节点上的/usr/share/ansible/roles/tripleo_network_config/templates/目录中复制并编辑示例模板。 将 heat 内部函数替换为 Jinja2 过滤器。例如,使用以下过滤器来计算
min_viable_mtu:{% set mtu_list = [ctlplane_mtu] %} {% for network in role_networks %} {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }} {%- endfor %} {% set min_viable_mtu = mtu_list | max %}{% set mtu_list = [ctlplane_mtu] %} {% for network in role_networks %} {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }} {%- endfor %} {% set min_viable_mtu = mtu_list | max %}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Ansible 变量为您的部署配置网络属性。您可以手动配置每个单独的网络,或者通过迭代
role_networks来编程地配置每个网络:要手动配置每个网络,请将每个
get_param函数替换为对应的 Ansible 变量。例如,如果您的当前部署使用get_param: InternalApiNetworkVlanID配置vlan_id,那么请在模板中添加以下配置:vlan_id: {{ internal_api_vlan_id }}vlan_id: {{ internal_api_vlan_id }}Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表 10.12. 从 heat 参数映射到 Ansible vars的示例网络属性 yaml文件格式Jinja2 ansible 格式, j2Copy to Clipboard Copied! Toggle word wrap Toggle overflow - type: vlan device: nic2 vlan_id: {{ internal_api_vlan_id }} addresses: - ip_netmask: {{ internal_api_ip }}/{{ internal_api_cidr }}- type: vlan device: nic2 vlan_id: {{ internal_api_vlan_id }} addresses: - ip_netmask: {{ internal_api_ip }}/{{ internal_api_cidr }}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为了通过编程方式配置每个网络,请将 Jinja2 for-loop 结构添加到您的模板中,通过使用
role_networks检索可用网络。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
有关 heat 参数与 Ansible
vars等效的映射的完整列表,请参阅 Heat 参数到 Ansible 变量映射。在
network-environment.yaml文件中配置*NetworkConfigTemplate参数以指向生成的.j2文件:parameter_defaults: ControllerNetworkConfigTemplate: '/home/stack/templates/custom-nics/controller.j2' ComputeNetworkConfigTemplate: '/home/stack/templates/custom-nics/compute.j2'
parameter_defaults: ControllerNetworkConfigTemplate: '/home/stack/templates/custom-nics/controller.j2' ComputeNetworkConfigTemplate: '/home/stack/templates/custom-nics/compute.j2'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为旧网络配置文件从
network-environment.yaml文件中删除resource_registry映射:resource_registry: OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
resource_registry: OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.7.4. Heat 参数到 Ansible 变量映射 复制链接链接已复制到粘贴板!
在 Red Hat OpenStack Platform (RHOSP) 17.x 中,NIC 模板文件格式已从 yaml 文件格式更改为 Jinja2 ansible 格式 j2。
要手动将现有 NIC 模板文件转换为 Jinja2 ansible 格式,您可以将 heat 参数映射到 Ansible 变量,以配置部署中预置备节点的网络属性。如果运行 openstack overcloud node provision 而不指定-- network-config 可选参数,您还可以将 heat 参数映射到 Ansible 变量。
例如,如果您的当前部署使用 get_param: InternalApiNetworkVlanID 配置了 vlan_id,则将其替换为您的新 Jinja2 模板中的以下配置:
vlan_id: {{ internal_api_vlan_id }}
vlan_id: {{ internal_api_vlan_id }}
如果使用 --network-config 可选参数运行 openstack overcloud 节点置备节点,则必须使用 overcloud-baremetal-deploy.yaml 中的参数来配置部署的网络属性。如需更多信息,请参阅置备 定义文件映射的 Heat 参数。
下表列出从 heat vars 到等效的 Ansible 变量的可用映射
| Heat 参数 | Ansible 变量 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注意
此 Ansible 变量填充了在 |
|
|
|
配置表中没有列出的 heat 参数
要配置不在表中列出的 heat 参数,您必须将参数配置为 {{role.name}}ExtraGroupVars。在将参数配置为 {{role.name}}ExtraGroupVars 参数后,您可以在新模板中使用它。例如,要配置 StorageSupernet 参数,请在网络配置文件中添加以下配置:
parameter_defaults:
ControllerExtraGroupVars:
storage_supernet: 172.16.0.0/16
parameter_defaults:
ControllerExtraGroupVars:
storage_supernet: 172.16.0.0/16
然后,您可以将 {{ storage_supernet }} 添加到 Jinja2 模板。
如果将 --network-config 选项用于节点置备,则此过程将无法正常工作。需要自定义 vars 的用户不应使用 --network-config 选项。相反,在创建 Heat 堆栈后,将节点网络配置应用到 config-download ansible 运行。
将 Ansible 变量语法转换为以编程方式配置每个网络
当您使用 Jinja2 for-loop 结构通过迭代 role_networks 来检索可用网络时,您需要检索每个网络角色的小写名称以添加到每个属性。使用以下结构将以上表中的 Ansible 变量转换为所需的语法:
{{ lookup(‘vars’, networks_lower[network] ~ ‘_<property>’) }}
-
将
<property> 替换为您要设置的属性,如ip、vlan_id或mtu。
例如,要动态填充每个 NetworkVlanID 的值,请将 {{ <network_name>_vlan_id }} 替换为以下配置:
{{ lookup(‘vars’, networks_lower[network] ~ ‘_vlan_id’) }}`
{{ lookup(‘vars’, networks_lower[network] ~ ‘_vlan_id’) }}`
10.7.5. 用于置备定义文件映射的 heat 参数 复制链接链接已复制到粘贴板!
如果使用 --network-config 可选参数运行 openstack overcloud node provision 命令置备节点,则必须使用节点定义文件 overcloud-baremetal-deploy.yaml 中的参数来配置部署的网络属性。
如果您的部署使用预置备节点,您可以将 heat 参数映射到 Ansible 变量,以配置网络属性。如果运行 openstack overcloud node provision 而不指定-- network-config 可选参数,您还可以将 heat 参数映射到 Ansible 变量。有关使用 Ansible 变量配置网络属性的更多信息,请参阅 Heat 参数到 Ansible 变量映射。
下表列出了 heat 参数到节点定义文件 overcloud-baremetal-deploy.yaml 中等效的 network_config 属性的可用映射。
| Heat 参数 | network_config 属性 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
下表列出了 heat 参数中的可用映射,到网络定义文件 network_data.yaml 中等效的属性。
| Heat 参数 | IPv4 network_data.yaml 属性 | IPv6 network_data.yaml 属性 |
|---|---|---|
|
|
- name: <network_name>
subnets:
subnet01:
ip_subnet: 172.16.1.0/24
|
- name: <network_name>
subnets:
subnet01:
ipv6_subnet: 2001:db8:a::/64
|
|
|
- name: <network_name>
subnets:
subnet01:
...
vlan: <vlan_id>
|
- name: <network_name>
subnets:
subnet01:
...
vlan: <vlan_id>
|
|
|
- name: <network_name> mtu:
|
- name: <network_name> mtu:
|
|
|
- name: <network_name>
subnets:
subnet01:
ip_subnet: 172.16.16.0/24
gateway_ip: 172.16.16.1
|
- name: <network_name>
subnets:
subnet01:
ipv6_subnet: 2001:db8:a::/64
gateway_ipv6: 2001:db8:a::1
|
|
|
|
|
10.7.6. 对网络数据模式的更改 复制链接链接已复制到粘贴板!
在 Red Hat OpenStack Platform (RHOSP) 17 中更新了网络数据模式。RHOSP 16 及更早版本中使用的网络数据模式的主要区别,以及 RHOSP 17 及更高版本中使用的网络数据模式,如下所示:
-
基本子网已移至
子网映射。这会协调非路由和路由部署的配置,如 spine-leaf networking。 -
enabled选项不再使用 来忽略禁用的网络。相反,您必须从配置文件中删除禁用的网络。 -
因为使用的 heat 资源已被删除,所以不再需要
compat_name选项。 -
以下参数在网络级别上不再有效:
ip_subnet,gateway_ip,allocation_pools,routes,ipv6_subnet,gateway_ipv6,ipv6_allocation_pools, 和routes_ipv6。这些参数仍在子网级别上使用。 -
引入了一个新的参数
physical_network,用于在metalsmith中创建 ironic 端口。 -
新的参数
network_type和segmentation_id替换{{network.name}}NetValueSpecs,用于将网络类型设置为vlan。 RHOSP 17 中弃用了以下参数:
-
{{network.name}}NetCidr -
{{network.name}}SubnetName -
{{network.name}}Network -
{{network.name}}AllocationPools -
{{network.name}}Routes -
{{network.name}}SubnetCidr_{{subnet}} -
{{network.name}}AllocationPools_{{subnet}} -
{{network.name}}Routes_{{subnet}}
-
第 11 章 置备和部署 overcloud 复制链接链接已复制到粘贴板!
要创建 overcloud,您必须执行以下任务:
为您的物理网络置备网络资源:
- 如果您要部署网络隔离或自定义可组合网络,以 YAML 格式创建一个网络定义文件。
- 运行网络置备命令,包括网络定义文件。
- 以 YAML 格式创建网络虚拟 IP (VIP)定义文件。
- 运行网络 VIP 置备命令,包括网络 VIP 定义文件。
置备裸机节点:
- 以 YAML 格式创建节点定义文件。
- 运行裸机节点置备命令,包括节点定义文件。
部署 overcloud。
- 运行部署命令,包括置备命令生成的 heat 环境文件。
11.1. 置备 overcloud 网络 复制链接链接已复制到粘贴板!
要为 Red Hat OpenStack Platform (RHOSP)物理网络环境配置网络资源,您必须执行以下任务:
- 为您的 overcloud 配置和调配网络资源。
- 为您的 overcloud 配置和调配网络虚拟 IP。
11.1.1. 配置和置备 overcloud 网络定义 复制链接链接已复制到粘贴板!
您可以使用 YAML 格式的网络定义文件为 overcloud 配置物理网络。置备过程会从您的网络定义文件创建一个 heat 环境文件,其中包含您的网络规格。部署 overcloud 时,请将此 heat 环境文件包含在部署命令中。
先决条件
- 已安装 undercloud。如需更多信息,请参阅安装 director。
流程
查找
stackrcundercloud 凭据文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将您需要的网络定义模板示例从
/usr/share/openstack-tripleo-heat-templates/network-data-samples复制到环境文件目录中:cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation.yaml /home/stack/templates/network_data.yaml
(undercloud)$ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation.yaml /home/stack/templates/network_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为您的网络环境配置网络定义文件。例如,您可以更新外部网络定义:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 为您的环境配置任何其他网络和网络属性。有关您可以在网络定义文件中配置网络属性的属性的更多信息,请参阅配置 overcloud 网络。
置备 overcloud 网络:
openstack overcloud network provision \ [--templates <templates_directory> \] --output <deployment_file> \ /home/stack/templates/<networks_definition_file>
(undercloud)$ openstack overcloud network provision \ [--templates <templates_directory> \] --output <deployment_file> \ /home/stack/templates/<networks_definition_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:包含--
templates选项以使用您自己的模板,而不是位于/usr/share/openstack-tripleo-heat-templates中的默认模板。将<templates_directory>替换为包含模板的目录的路径。 -
将
<deployment_file> 替换为要在部署命令中生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-networks-deployed.yaml。 -
将
<networks_definition_file> 替换为网络定义文件的名称,如network_data.yaml。
-
可选:包含--
网络置备完成后,您可以使用以下命令检查创建的网络和子网:
openstack network list openstack subnet list openstack network show <network> openstack subnet show <subnet>
(undercloud)$ openstack network list (undercloud)$ openstack subnet list (undercloud)$ openstack network show <network> (undercloud)$ openstack subnet show <subnet>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<network> 替换为您要检查的网络的名称或 UUID。 -
将
<subnet> 替换为您要检查的子网名称或 UUID。
-
将
11.1.2. 为 overcloud 配置和置备网络 VIP 复制链接链接已复制到粘贴板!
您可以使用 YAML 格式的网络 VIP 定义文件为您的 overcloud 配置网络虚拟 IP (VIP)。置备过程从包含 VIP 规格的 VIP 定义文件创建一个 heat 环境文件。部署 overcloud 时,请将此 heat 环境文件包含在部署命令中。
先决条件
- 已安装 undercloud。如需更多信息,请参阅安装 director。
- 您的 overcloud 网络已调配。有关更多信息,请参阅配置和置备 overcloud 网络定义。
流程
查找
stackrcundercloud 凭据文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将您需要的网络 VIP 定义模板示例从
/usr/share/openstack-tripleo-heat-templates/network-data-samples复制到环境文件目录中:cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/vip-data-default-network-isolation.yaml /home/stack/templates/vip_data.yaml
(undercloud)$ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/vip-data-default-network-isolation.yaml /home/stack/templates/vip_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:为您的环境配置 VIP 定义文件。例如,以下内容定义了外部网络和 control plane VIP:
- network: external dns_name: overcloud - network: ctlplane dns_name: overcloud
- network: external dns_name: overcloud - network: ctlplane dns_name: overcloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 为您的环境配置任何其他网络 VIP 属性。有关您可以在 VIP 定义文件中配置 VIP 属性的属性的更多信息,请参阅 添加可组合网络。
置备网络 VIP:
openstack overcloud network vip provision \ [--templates <templates_directory> \] --stack <stack> \ --output <deployment_file> \ /home/stack/templates/<vip_definition_file>
(undercloud)$ openstack overcloud network vip provision \ [--templates <templates_directory> \] --stack <stack> \ --output <deployment_file> \ /home/stack/templates/<vip_definition_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:包含--
templates选项以使用您自己的模板,而不是位于/usr/share/openstack-tripleo-heat-templates中的默认模板。将<templates_directory>替换为包含模板的目录的路径。 -
将
<stack> 替换为置备网络 VIP 的堆栈的名称,如overcloud。 -
将
<deployment_file> 替换为要在部署命令中生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-vip-deployed.yaml。 -
将
<vip_definition_file> 替换为 VIP 定义文件的名称,如vip_data.yaml。
-
可选:包含--
网络 VIP 置备完成后,您可以使用以下命令检查创建的 VIP:
openstack port list openstack port show <port>
(undercloud)$ openstack port list (undercloud)$ openstack port show <port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<port> 替换为您要检查的端口的名称或 UUID。
-
将
后续步骤
11.2. 置备裸机 overcloud 节点 复制链接链接已复制到粘贴板!
要配置 Red Hat OpenStack Platform (RHOSP)环境,您必须执行以下任务:
- 为您的 overcloud 注册裸机节点。
- 为 director 提供裸机节点硬件的清单。
- 在节点定义文件中配置裸机节点的数量、属性和网络布局。
- 为每个裸机节点分配一个与节点匹配的资源类,作为其指定的角色。
您还可以执行其他可选任务,如将配置文件匹配到指定 overcloud 节点。
11.2.1. 为 overcloud 注册节点 复制链接链接已复制到粘贴板!
director 需要节点定义模板,用于指定节点的硬件和电源管理详细信息。您可以使用 JSON 格式、node .json 或 YAML 格式创建此模板 nodes.yaml。
流程
创建名为
nodes.json或nodes.yaml的模板,用于列出您的节点。使用以下 JSON 和 YAML 模板示例了解如何创建节点定义模板的结构:示例 JSON 模板
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 YAML 模板
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此模板包含以下属性:
- name
- 节点的逻辑名称。
- ports
访问特定 IPMI 设备的端口。您可以定义以下可选端口属性:
-
地址:节点上网络接口的 MAC 地址。对于每个系统的 Provisioning NIC,只使用 MAC 地址。 -
physical_network:连接到 Provisioning NIC 的物理网络。 -
local_link_connection:如果在内省期间使用 IPv6 置备并且 LLDP 未正确填充本地链接连接,则必须在local_link_connection参数中包含带有switch_id和port_id字段的虚拟数据。有关如何包含虚拟数据的更多信息,请参阅使用 director 内省来收集裸机节点硬件信息。
-
- cpu
- 节点上的 CPU 数量。(可选)
- memory
- 以 MB 为单位的内存大小。(可选)
- disk
- 以 GB 为单位的硬盘的大小。(可选)
- arch
- 系统架构。 (可选)
- pm_type
要使用的电源管理驱动程序。此示例使用 IPMI 驱动程序 (
ipmi)。注意IPMI 是首选的受支持电源管理驱动程序。有关支持的电源管理类型及其选项的更多信息,请参阅 电源管理驱动程序。如果这些电源管理驱动程序不能正常工作,请将 IPMI 用于电源管理。
- pm_user; pm_password
- IPMI 的用户名和密码。
- pm_addr
- IPMI 设备的 IP 地址。
验证模板格式化和语法:
source ~/stackrc (undercloud)$ openstack overcloud node import --validate-only ~/nodes.json
$ source ~/stackrc (undercloud)$ openstack overcloud node import --validate-only ~/nodes.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将模板文件保存到
stack用户的主目录(/home/stack/nodes.json)。 将模板导入到 director,从模板将每个节点注册到 director:
openstack overcloud node import ~/nodes.json
(undercloud)$ openstack overcloud node import ~/nodes.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 等待节点完成注册和配置。完成后,确认 director 已成功注册节点:
openstack baremetal node list
(undercloud)$ openstack baremetal node listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.2.2. 创建裸机节点硬件的清单 复制链接链接已复制到粘贴板!
director 需要 Red Hat OpenStack Platform (RHOSP)部署中的节点硬件清单,以进行配置集标记、基准测试和手动根磁盘分配。
您可以使用以下方法之一将硬件清单提供给 director:
- 自动 :您可以使用 director 的内省过程从每个节点收集硬件信息。此进程在每个节点上引导内省代理。内省代理从节点收集硬件数据并将数据送回 director。director 将硬件数据存储在 OpenStack 内部数据库中。
- 手动:您可以为每个裸机手动配置基本硬件清单。此清单存储在裸机置备服务(ironic)中,用于管理和监控裸机。
与设置裸机置备服务端口的手动方法相比,director 自动内省过程具有以下优点:
-
内省记录了硬件信息中所有连接的端口,包括用于 PXE 引导的端口(如果尚未在
nodes.yaml中配置)。 -
如果属性可以使用 LLDP 发现,则 introspection 会为每个端口设置
local_link_connection属性。使用手动方法时,您必须在注册节点时为每个端口配置local_link_connection。 -
在部署 spine-and-leaf 或 DCN 架构时,内省会为裸机置备服务端口设置
physical_network属性。
11.2.2.1. 使用 director 内省来收集裸机节点硬件信息 复制链接链接已复制到粘贴板!
将物理计算机注册为裸机节点后,您可以使用 director 内省自动添加其硬件详细信息并为每个以太网 MAC 地址创建端口。
作为自动内省的替代选择,您可以手动为 director 提供裸机节点的硬件信息。如需更多信息,请参阅 手动配置裸机节点硬件信息。
先决条件
- 您已为 overcloud 注册了裸机节点。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 pre-introspection 验证组来检查内省要求:
validation run --group pre-introspection \ --inventory <inventory_file>
(undercloud)$ validation run --group pre-introspection \ --inventory <inventory_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<inventory_file> 替换为 Ansible 清单文件的名称和位置,如~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml。注意当您运行验证时,输出中的
Reasons列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。
- 查看验证报告的结果。
可选:查看特定验证的详细输出:
validation history get --full <UUID>
(undercloud)$ validation history get --full <UUID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<UUID> 替换为您要查看的报告中特定验证的 UUID。重要FAILED验证不会阻止您部署或运行 Red Hat OpenStack Platform。但是,FAILED验证可能会显示生产环境中潜在的问题。
检查每个节点的硬件属性。您可以检查所有节点或特定节点的硬件属性:
检查所有节点的硬件属性:
openstack overcloud node introspect --all-manageable --provide
(undercloud)$ openstack overcloud node introspect --all-manageable --provideCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
--all-manageable选项仅内省处于受管理状态的节点。在此示例中,所有节点都处于受管理状态。 -
使用
--provide选项在内省后将所有节点重置为available状态。
-
使用
检查特定节点的硬件属性:
openstack overcloud node introspect --provide <node1> [node2] [noden]
(undercloud)$ openstack overcloud node introspect --provide <node1> [node2] [noden]Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用--
provide选项将所有指定节点在内省后重置为available状态。 -
将
<node1>,[node2], 及所有节点(直到[noden])替换为您要内省的每个节点的 UUID。
-
使用--
在一个单独的终端窗口中监控内省进度日志:
sudo tail -f /var/log/containers/ironic-inspector/ironic-inspector.log
(undercloud)$ sudo tail -f /var/log/containers/ironic-inspector/ironic-inspector.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要确保内省进程完成运行。内省通常需要 15 分钟时间用于裸机节点。但是,错误大小的内省网络可能会导致它需要更长的时间,这可能会导致内省失败。
可选:如果您已经为通过 IPv6 的裸机置备配置了 undercloud,那么您还需要检查 LLDP 是否为 Bare Metal Provisioning 服务(ironic)端口设置
local_link_connection:openstack baremetal port list --long -c UUID -c "Node UUID" -c "Local Link Connection"
$ openstack baremetal port list --long -c UUID -c "Node UUID" -c "Local Link Connection"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果裸机节点上的端口 Local Link Connection 字段为空,则必须使用虚拟数据手动填充
local_link_connection值。以下示例将假的开关 ID 设置为52:54:00:00:00:00,并将虚拟端口 ID 设置为p0:openstack baremetal port set <port_uuid> \ --local-link-connection switch_id=52:54:00:00:00:00 \ --local-link-connection port_id=p0
$ openstack baremetal port set <port_uuid> \ --local-link-connection switch_id=52:54:00:00:00:00 \ --local-link-connection port_id=p0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 “Local Link Connection” 字段是否包含虚拟数据:
openstack baremetal port list --long -c UUID -c "Node UUID" -c "Local Link Connection"
$ openstack baremetal port list --long -c UUID -c "Node UUID" -c "Local Link Connection"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
内省完成后,所有节点都会变为 available 状态。
11.2.2.2. 手动配置裸机节点硬件信息 复制链接链接已复制到粘贴板!
将物理计算机注册为裸机节点后,您可以手动添加其硬件详情,并为每个以太网 MAC 地址创建裸机端口。在部署 overcloud 之前,必须至少创建一个裸机端口。
作为手动内省的替代选择,您可以使用自动 director 内省过程来收集裸机节点的硬件信息。有关更多信息,请参阅使用 director 内省来收集裸机节点硬件信息。
先决条件
- 您已为 overcloud 注册了裸机节点。
-
您已为
nodes.json中注册的节点上的每个端口配置了local_link_connection。有关更多信息 ,请参阅为 overcloud 注册节点。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为节点驱动程序指定部署内核和部署 ramdisk:
openstack baremetal node set <node> \ --driver-info deploy_kernel=<kernel_file> \ --driver-info deploy_ramdisk=<initramfs_file>
(undercloud)$ openstack baremetal node set <node> \ --driver-info deploy_kernel=<kernel_file> \ --driver-info deploy_ramdisk=<initramfs_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node>替换为裸机节点的 ID。 -
将
<kernel_file> 替换为.kernel镜像的路径,例如file:///var/lib/ironic/httpboot/agent.kernel。 -
将
<initramfs_file> 替换为.initramfs镜像的路径,如file:///var/lib/ironic/httpboot/agent.ramdisk。
-
将
更新节点属性以匹配节点上的硬件规格:
openstack baremetal node set <node> \ --property cpus=<cpu> \ --property memory_mb=<ram> \ --property local_gb=<disk> \ --property cpu_arch=<arch>
(undercloud)$ openstack baremetal node set <node> \ --property cpus=<cpu> \ --property memory_mb=<ram> \ --property local_gb=<disk> \ --property cpu_arch=<arch>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node>替换为裸机节点的 ID。 -
将
<cpu> 替换为 CPU 数量。 -
将 &
lt;ram> 替换为 RAM (以 MB 为单位)。 -
将
<disk>替换为磁盘大小(以 GB 为单位)。 -
将 &
lt;arch> 替换为 architecture 类型。
-
将
可选:为每个节点指定 IPMI 密码套件:
openstack baremetal node set <node> \ --driver-info ipmi_cipher_suite=<version>
(undercloud)$ openstack baremetal node set <node> \ --driver-info ipmi_cipher_suite=<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node>替换为裸机节点的 ID。 将
<version> 替换为节点上要使用的密码套件版本。设置为以下有效值之一:-
3- 节点使用带有 SHA1 密码套件的 AES-128。 -
17- 节点使用带有 SHA256 密码套件的 AES-128。
-
-
将
可选:如果您有多个磁盘,请设置根设备提示来通知部署 ramdisk 哪个磁盘用于部署:
openstack baremetal node set <node> \ --property root_device='{"<property>": "<value>"}'(undercloud)$ openstack baremetal node set <node> \ --property root_device='{"<property>": "<value>"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node>替换为裸机节点的 ID。 将
<property> 和 <value> 替换为您要用于部署的磁盘详情,如root_device='{"size": "128"}'RHOSP 支持以下属性:
-
model(字符串):设备识别码。 -
vendor(字符串):设备厂商。 -
serial(字符串):磁盘序列号。 -
hctl(字符串):SCSI 的 Host:Channel:Target:Lun。 -
size(整数):设备的大小(以 GB 为单位)。 -
wwn(字符串):唯一的存储 ID。 -
wwn_with_extension(字符串):唯一存储 ID 附加厂商扩展名。 -
wwn_vendor_extension(字符串):唯一厂商存储标识符。 -
rotational(布尔值):旋转磁盘设备为 true (HDD),否则为 false (SSD)。 name(字符串):设备名称,例如: /dev/sdb1 仅对具有持久名称的设备使用此属性。注意如果您指定多个属性,该设备必须与所有这些属性匹配。
-
-
将
通过在 provisioning 网络中创建带有 NIC 的 MAC 地址的端口来通知节点网卡的裸机置备服务:
openstack baremetal port create --node <node_uuid> <mac_address>
(undercloud)$ openstack baremetal port create --node <node_uuid> <mac_address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node_uuid>替换为裸机节点的唯一 ID。 -
将
<mac_address> 替换为用于 PXE 引导的 NIC 的 MAC 地址。
-
将
验证节点的配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证输出
Result表示以下内容:-
false:接口验证失败。如果提供的原因缺少instance_info.image_source参数,这可能是因为它在置备过程中填充,因此此时还没有设置。如果您使用整个磁盘镜像,则可能需要设置image_source来传递验证。 -
true:接口已通过验证。 -
None: 接口不支持您的驱动。
-
11.2.3. 为 overcloud 置备裸机节点 复制链接链接已复制到粘贴板!
要置备裸机节点,您需要以 YAML 格式在节点定义文件中定义部署的裸机节点的数量和属性,并将 overcloud 角色分配给这些节点。您还可以定义节点的网络布局。
置备过程会从节点定义文件创建一个 heat 环境文件。此 heat 环境文件包含您在节点定义文件中配置的节点规格,包括节点数、预测节点放置、自定义镜像和自定义 NIC。当您部署 overcloud 时,请将此文件包括在部署命令中。置备过程还为节点定义文件中为每个节点或角色定义的所有网络置备端口资源。
先决条件
- 已安装 undercloud。如需更多信息,请参阅安装 director。
- 裸机节点已注册、内省,并可用于置备和部署。有关更多信息,请参阅为 overcloud 注册节点,以及创建 裸机节点硬件的清单。
流程
查找
stackrcundercloud 凭据文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
overcloud-baremetal-deploy.yaml节点定义文件,并为您要置备的每个角色定义节点数。例如,要置备三个 Controller 节点和三个 Compute 节点,请将以下配置添加到overcloud-baremetal-deploy.yaml文件中:- name: Controller count: 3 - name: Compute count: 3
- name: Controller count: 3 - name: Compute count: 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:配置预先节点放置。例如,使用以下配置在节点
node00、node01和node02上置备三个 Controller 节点,在node04、node05和node06上置备三个 Compute 节点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 默认情况下,置备过程使用
overcloud-hardened-uefi-full.qcow2镜像。您可以通过指定镜像的本地或远程 URL 来更改特定节点上使用的镜像,或用于角色的所有节点的镜像。以下示例将镜像改为本地 QCOW2 镜像:特定节点
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 角色的所有节点
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为角色或者特定节点的网络布局定义网络布局:
特定节点
以下示例为特定 Controller 节点置备网络,并为内部 API 网络分配可预测的 IP:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 角色的所有节点
以下示例为 Controller 和 Compute 角色置备网络:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您可以使用位于
/usr/share/ansible/roles/tripleo_network_config/templates中的示例 NIC 模板在本地环境文件目录中创建自己的 NIC 模板。
可选:如果默认磁盘分区大小不满足您的要求,请配置磁盘分区分配。例如,
/var/log分区的默认分区大小是 10 GB。考虑日志存储和保留要求,以确定 10 GB 是否满足您的要求。如果您需要增加日志存储的分配的磁盘大小,请在节点定义文件中添加以下配置来覆盖默认值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<log_size> 替换为要分配给日志文件的磁盘大小。
-
将
-
如果您使用 Object Storage 服务(swift)和整个磁盘 overcloud 镜像、
overcloud-hardened-uefi-full,则需要根据磁盘大小以及/var和/srv的存储要求配置/srv分区的大小。如需更多信息,请参阅为对象存储服务配置整个磁盘分区。 - 可选:使用自定义资源类或配置集功能为特定角色设计 overcloud 节点。如需更多信息,请参阅通过匹配资源类并为角色指定 overcloud 节点和通过匹配配置集为角色设计 overcloud 节点。
- 定义您要分配给节点的任何其他属性。有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。如需节点定义文件示例,请参阅 节点定义文件示例。
置备 overcloud 节点:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:包含--
templates选项以使用您自己的模板,而不是位于/usr/share/openstack-tripleo-heat-templates中的默认模板。将<templates_directory>替换为包含模板的目录的路径。 -
将
<stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为overcloud。 -
包含
--network-config可选参数,为cli-overcloud-node-network-config.yamlAnsible playbook 提供网络定义。 -
将
<deployment_file>替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml。 -
将
<node_definition_file> 替换为节点定义文件的名称,如overcloud-baremetal-deploy.yaml。
-
可选:包含--
在一个单独的终端中监控置备进度:
watch openstack baremetal node list
(undercloud)$ watch openstack baremetal node listCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
当置备成功后,节点状态将从
available变为active。 - 如果因为节点硬件或网络配置失败而节点置备失败,您可以在再次运行置备步骤前删除失败的节点。如需更多信息,请参阅从节点定义文件中删除失败的裸机节点。
-
当置备成功后,节点状态将从
使用
metalsmith工具获取节点的统一视图,包括分配和端口:metalsmith list
(undercloud)$ metalsmith listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证节点与主机名的关联:
openstack baremetal allocation list
(undercloud)$ openstack baremetal allocation listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
11.2.4. 裸机节点置备属性 复制链接链接已复制到粘贴板!
使用下表了解配置节点属性的可用属性,以及使用 openstack baremetal node provision 命令置备裸机节点时使用的值。
- 角色属性:使用角色属性来定义各个角色。
- 每个角色的默认和实例属性: 使用 default 或 instance 属性来指定从可用节点池中分配节点的选择条件,并在裸机节点上设置属性和网络配置属性。
有关创建 裸机定义文件的详情,请参考为 overcloud 置备裸机节点。
| 属性 | 值 |
|---|---|
|
| (必需)角色名称。 |
|
|
要为这个角色置备的节点数量。默认值为 |
|
|
|
|
|
用于为特定节点指定属性的值的字典。有关 |
|
|
覆盖这个角色的默认主机名格式。默认生成的主机名派生自 overcloud 堆栈名称、角色和递增索引,它们都是小写的。例如,Controller 角色的默认格式为 |
|
|
Ansible playbook 和 Ansible 变量的值字典。playbook 在节点置备后针对角色实例运行,然后再进行节点网络配置。如需有关指定 Ansible playbook 的更多信息,请参阅 |
| 属性 | 值 |
|---|---|
|
|
( |
|
|
(仅限 |
|
|
要在节点上置备的镜像的详情。有关支持的 |
|
| 选择与节点功能匹配的条件。 |
|
|
向传递给节点的 config-drive 添加 data 和 first-boot 命令。如需更多信息,请参阅 注意
对于必须在第一次引导时执行的配置,只使用 |
|
|
设置为 |
|
|
代表实例网络的字典列表。有关配置网络属性的更多信息,请参阅 |
|
|
连接到角色或实例的网络配置文件。有关配置到网络配置文件的链接的更多信息,请参阅 |
|
| 用于配置集匹配的选择条件。有关更多信息,请参阅通过匹配配置集为角色设计 overcloud 节点。 |
|
|
设置为 |
|
|
与节点的资源类匹配的选择条件。默认值为 |
|
|
GiB 中根分区的大小。默认值为 |
|
| MiB 中 swap 分区的大小。 |
|
| 作为与节点遍历匹配的选择条件的遍历列表。 |
| 属性 | 值 |
|---|---|
|
|
指定您要置备到节点上的根分区或完整磁盘镜像的 URL。支持的 URL 方案: 注意
如果您使用 |
|
|
指定根分区或完整磁盘镜像的 MD5 校验和。当 |
|
| 指定内核镜像的镜像引用或 URL。仅在分区镜像中使用此属性。 |
|
| 指定 ramdisk 镜像的镜像引用或 URL。仅在分区镜像中使用此属性。 |
| 属性 | 值 |
|---|---|
|
| 要用于这个网络的特定 IP 地址。 |
|
| 要创建网络端口的网络。 |
|
| 要创建网络端口的子网。 |
|
| 使用现有端口而不是创建新端口。 |
|
|
在 provisioning 网络( |
| 属性 | 值 |
|---|---|
|
| 指定应用节点网络配置时要使用的 Ansible J2 NIC 配置模板。有关配置 NIC 模板的详情,请参考配置 overcloud 网络。 |
|
|
用于创建用于访问外部网络的 OVS 网桥的名称。默认网桥名称为 |
|
|
指定要添加到公共网桥的接口名称。默认接口是 |
|
|
设置为 |
|
|
为每个节点或节点组指定 NIC 映射配置 |
|
|
用于默认路由的网络。默认路由网络是 |
|
| 配置节点网络时要跳过的网络列表。 |
|
|
要按优先级顺序添加到 |
|
|
用于绑定接口的 OVS 选项或绑定选项,如 |
|
| 指定 DPDK 绑定或 DPDK 端口所需的 RX 队列数量。 |
| 属性 | 值 |
|---|---|
|
|
|
|
|
与 config-drive |
| 属性 | 值 |
|---|---|
|
| 相对于角色定义 YAML 文件的 Ansible playbook 的路径。 |
|
| 运行 playbook 时要设置的额外 Ansible 变量。使用以下语法指定额外变量: ansible_playbooks:
- playbook: a_playbook.yaml
extra_vars:
param1: value1
param2: value2
例如,要增大使用整个磁盘 overcloud 镜像 |
11.2.5. 从节点定义文件中删除失败的裸机节点 复制链接链接已复制到粘贴板!
如果因为节点硬件或网络配置失败而节点置备失败,您可以在再次运行置备步骤前删除失败的节点。要删除在置备过程中失败的裸机节点,请标记您要从节点定义文件中的堆栈中删除的节点,并在置备正常工作的裸机节点前取消置备节点。
先决条件
- 已安装 undercloud。如需更多信息,请参阅安装 director。
- 由于节点硬件故障,裸机节点置备会失败。
流程
查找
stackrcundercloud 凭据文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
overcloud-baremetal-deploy.yaml节点定义文件。 减少节点分配到的角色的
count参数。例如,以下配置更新了ObjectStorage角色的 count 参数,以反映专用于ObjectStorage的节点数量被减少为 3:- name: ObjectStorage count: 3
- name: ObjectStorage count: 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
定义您要从堆栈中删除的节点的
主机名和名称(如果尚未在角色的instances属性中定义)。 将属性
provisioned: false添加到您要删除的节点。例如,要从堆栈中删除节点overcloud-objectstorage-1,请在overcloud-baremetal-deploy.yaml文件中包含以下片断:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 取消置备裸机节点:
openstack overcloud node unprovision \ --stack <stack> \ --network-ports \ /home/stack/templates/overcloud-baremetal-deploy.yaml
(undercloud)$ openstack overcloud node unprovision \ --stack <stack> \ --network-ports \ /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为overcloud。
-
将
置备 overcloud 节点,以生成更新的 heat 环境文件,以包含在部署命令中:
openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
(undercloud)$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<deployment_file>替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml。
-
将
11.2.6. 通过匹配资源类为角色设计 overcloud 节点 复制链接链接已复制到粘贴板!
您可以使用自定义资源类为特定角色指定 overcloud 节点。资源类将节点与部署角色匹配。默认情况下,所有节点都被分配为 baremetal 的资源类。
要在置备节点后更改分配给节点的资源类,您必须使用 scale down 过程取消置备节点,然后使用扩展过程使用新的资源类分配来重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点。
先决条件
- 您需要为 overcloud 执行裸机节点的初始置备。
流程
使用自定义资源类分配您要为角色指定的每个裸机节点:
openstack baremetal node set \ --resource-class <resource_class> <node>
(undercloud)$ openstack baremetal node set \ --resource-class <resource_class> <node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<resource_class> 替换为资源类的名称,如baremetal.CPU-PINNING。 -
将
<node>替换为裸机节点的 ID。
-
将
-
将角色添加到
overcloud-baremetal-deploy.yaml文件中(如果尚未定义)。 指定您要分配给角色节点的资源类:
- name: <role> count: 1 defaults: resource_class: <resource_class>- name: <role> count: 1 defaults: resource_class: <resource_class>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<role> 替换为角色的名称。 -
将
<resource_class> 替换为在第 1 步中为资源类指定的名称。
-
将
- 返回到 Provisioning 裸机节点,让 overcloud 完成置备过程。
11.2.7. 通过匹配配置集为角色设计 overcloud 节点 复制链接链接已复制到粘贴板!
您可以使用配置集功能为特定角色指定 overcloud 节点。配置集与部署角色的节点功能匹配。
您还可以使用内省规则执行自动配置集分配。如需更多信息,请参阅配置自动配置集标记。
要在置备节点后更改分配给节点的配置集,您必须使用 scale down 过程取消置备节点,然后使用扩展流程使用新配置集分配重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点。
先决条件
- 您需要为 overcloud 执行裸机节点的初始置备。
流程
每次添加新节点功能时,现有节点功能都会被覆盖。因此,您必须检索每个注册节点的现有功能,以便再次设置它们:
openstack baremetal node show <node> \ -f json -c properties | jq -r .properties.capabilities
$ openstack baremetal node show <node> \ -f json -c properties | jq -r .properties.capabilitiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过将 profile:<profile> 添加到节点的现有功能,为您要与角色
配置集匹配的每个裸机节点分配配置集功能:openstack baremetal node set <node> \ --property capabilities="profile:<profile>,<capability_1>,...,<capability_n>"
(undercloud)$ openstack baremetal node set <node> \ --property capabilities="profile:<profile>,<capability_1>,...,<capability_n>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node> 替换为裸机节点的名称或 ID。 -
将
<profile> 替换为与角色配置集匹配的配置集的名称。 -
将
<capability_1> 以及所有功能(直到<capability_n>)替换为在第 1 步中获取的每个功能。
-
将
-
将角色添加到
overcloud-baremetal-deploy.yaml文件中(如果尚未定义)。 定义您要分配给角色节点的配置集:
- name: <role> count: 1 defaults: profile: <profile>- name: <role> count: 1 defaults: profile: <profile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<role> 替换为角色的名称。 -
将
<profile> 替换为与节点功能匹配的配置集名称。
-
将
- 返回到 Provisioning 裸机节点,让 overcloud 完成置备过程。
11.2.8. 为对象存储服务配置整个磁盘分区 复制链接链接已复制到粘贴板!
完整磁盘镜像 overcloud-hardened-uefi-full 将分区为单独的卷。默认情况下,使用整个磁盘 overcloud 镜像部署的节点 /var 分区会自动增加,直到磁盘被完全分配为止。如果您使用 Object Storage 服务(swift),请根据磁盘大小以及 /var 和 /srv 的存储要求来配置 /srv 分区的大小。
先决条件
- 您需要为 overcloud 执行裸机节点的初始置备。
流程
使用
role_growvols_args作为overcloud-baremetal-deploy.yaml节点定义文件中的 Ansible_playbooks 定义中的额外 Ansible 变量来配置/srv和/var分区。将/srv或/var设置为绝对大小(以 GB 为单位),并将其他大小设置为 100% 以消耗剩余的磁盘空间。以下示例配置将
/srv设置为 Controller 节点上部署的对象存储服务绝对大小,并将/var设置为 100% 以消耗剩余的磁盘空间:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例配置将
/var设置为绝对大小,/srv设置为 100%,以消耗 Object Storage 节点的其余磁盘空间:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 返回到 Provisioning 裸机节点,让 overcloud 完成置备过程。
11.2.9. 节点定义文件示例 复制链接链接已复制到粘贴板!
以下示例节点定义文件定义了三个 Controller 节点以及三个 Compute 节点以及它们使用的默认网络预测节点放置。这个示例还演示了如何定义根据匹配资源类或节点功能配置集指定的自定义角色。
11.2.10. 启用虚拟介质引导 复制链接链接已复制到粘贴板!
该功能在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息。
您可以使用 Redfish 虚拟介质引导,向节点的 Baseboard Management Controller (BMC) 提供引导镜像,以便 BMC 可将镜像插入到其中一个虚拟驱动器中。然后,节点可以从虚拟驱动器引导到镜像中存在的操作系统。
Redfish 硬件类型支持通过虚拟介质引导部署、救援和用户镜像。裸机置备服务(ironic)使用与节点关联的内核和 ramdisk 镜像,在节点部署时为 UEFI 或 BIOS 引导模式构建可引导的 ISO 镜像。虚拟介质引导的主要优点是可以消除 PXE 的 TFTP 镜像传输阶段,并使用 HTTP GET 或其他方法。
要通过虚拟介质使用 redfish 硬件类型引导节点,请将引导接口设置为 redfish-virtual-media,并定义 EFI 系统分区(ESP)镜像。然后将注册节点配置为使用 Redfish 虚拟介质引导。
前提条件
-
在
undercloud.conf文件的enabled_hardware_types参数中启用 redfish 驱动程序。 - 注册和注册裸机节点。
- Image Service (glance) 中的 IPA 和实例镜像。
- 对于 UEFI 节点,还必须在 Image Service (glance) 中有一个 EFI 系统分区镜像 (ESP)。
- 裸机类别。
- 用于清理和置备的网络。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将裸机置备服务引导接口设置为
redfish-virtual-media:openstack baremetal node set --boot-interface redfish-virtual-media <node>
(undercloud)$ openstack baremetal node set --boot-interface redfish-virtual-media <node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node> 替换为节点的名称。
-
将
定义 ESP 镜像:
openstack baremetal node set --driver-info bootloader=<esp> <node>
(undercloud)$ openstack baremetal node set --driver-info bootloader=<esp> <node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<esp> 替换为镜像服务(glance)镜像 UUID 或 ESP 镜像的 URL。 -
将
<node> 替换为节点的名称。
-
将
在裸机节点上创建一个端口,并将端口与裸机节点上 NIC 的 MAC 地址关联:
openstack baremetal port create --pxe-enabled True \ --node <node_uuid> <mac_address>
(undercloud)$ openstack baremetal port create --pxe-enabled True \ --node <node_uuid> <mac_address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node_uuid> 替换为裸机节点的 UUID。 -
将
<mac_address> 替换为裸机节点上 NIC 的 MAC 地址。
-
将
11.2.11. 为多磁盘 Ceph 集群定义根磁盘 复制链接链接已复制到粘贴板!
Ceph Storage 节点通常使用多个磁盘。director 必须使用多个磁盘配置来识别根磁盘。overcloud 镜像在置备过程中写入根磁盘。
硬件属性用于识别根磁盘。有关您可以用来识别根磁盘的属性的更多信息,请参阅 第 11.2.12 节 “标识根磁盘的属性”。
流程
从每个节点的硬件内省验证磁盘信息:
openstack baremetal introspection data save <node_uuid> | --file <output_file_name>
(undercloud)$ openstack baremetal introspection data save <node_uuid> | --file <output_file_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node_uuid> 替换为节点的 UUID。 将 <
output_file_name> 替换为包含节点内省输出的文件名称。例如,一个节点的数据可能会显示 3 个磁盘:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
使用唯一硬件属性为节点设置根磁盘:
(undercloud)$ openstack baremetal node set --property root_device='{<property_value>}' <node-uuid>-
将 <
property_value> 替换为内省数据中的唯一硬件属性值,以设置根磁盘。 将
<node_uuid> 替换为节点的 UUID。注意唯一的硬件属性是硬件内省步骤中唯一标识磁盘的任何属性。例如,以下命令使用磁盘序列号来设置根磁盘:
(undercloud)$ openstack baremetal node set --property root_device='{"serial": "61866da04f380d001ea4e13c12e36ad6"}' 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0
-
将 <
- 将每个节点的 BIOS 配置为首先从网络引导,然后配置根磁盘。
director 识别特定磁盘以用作根磁盘。运行 openstack overcloud node provision 命令时,director 置备 overcloud 镜像并将其写入根磁盘。
11.2.12. 标识根磁盘的属性 复制链接链接已复制到粘贴板!
您可以定义多个属性以帮助 director 识别根磁盘:
-
model(字符串):设备识别码。 -
vendor(字符串):设备厂商。 -
serial(字符串):磁盘序列号。 -
hctl(字符串):SCSI 的 Host:Channel:Target:Lun。 -
size(整数):设备的大小(以 GB 为单位)。 -
wwn(字符串):唯一的存储 ID。 -
wwn_with_extension(字符串):唯一存储 ID 附加厂商扩展名。 -
wwn_vendor_extension(字符串):唯一厂商存储标识符。 -
rotational(布尔值):旋转磁盘设备为 true (HDD),否则为 false (SSD)。 -
name(字符串):设备名称,例如:/dev/sdb1。
将 name 属性用于具有持久名称的设备。不要使用 name 属性来为没有持久名称的设备设置根磁盘,因为在节点引导时该值可能会改变。
11.2.13. 使用 overcloud-minimal 镜像来避免使用红帽订阅授权 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP)部署的默认镜像是 overcloud-hardened-uefi-full.qcow2。overcloud-hardened-uefi-full.qcow2 镜像使用有效的 Red Hat OpenStack Platform (RHOSP)订阅。当您不想消耗您的订阅权利时,您可以使用 overcloud-minimal 镜像以避免达到您付费的红帽订阅的限制。例如,这非常有用,例如,您希望只使用 Ceph 守护进程置备节点,或者当您要置备您不想运行任何其他 OpenStack 服务时的裸机操作系统(OS)时。有关如何获取 overcloud-minimal 镜像的信息,请参阅 获取 overcloud 节点的镜像。
overcloud-minimal 镜像仅支持标准 Linux 网桥。overcloud-minimal 镜像不支持 Open vSwitch (OVS),因为 OVS 是一个需要 Red Hat OpenStack Platform 订阅权利的 OpenStack 服务。部署 Ceph Storage 节点不需要 OVS。使用 linux_bond 定义绑定,而不使用 ovs_bond。有关 linux_bond 的更多信息,请参阅创建 Linux 绑定。
流程
-
打开
overcloud-baremetal-deploy.yaml文件。 为您要使用
overcloud-minimal镜像的节点添加或更新image属性。您可以在特定节点上将镜像设置为overcloud-minimal,或针对角色的所有节点:特定节点
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 角色的所有节点
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
roles_data.yaml角色定义文件中,将rhsm_enforce参数设置为False。rhsm_enforce: False
rhsm_enforce: FalseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 provisioning 命令:
openstack overcloud node provision \ --stack stack \ --output /home/stack/templates/overcloud-baremetal-deployed.yaml \ /home/stack/templates/overcloud-baremetal-deploy.yaml
(undercloud)$ openstack overcloud node provision \ --stack stack \ --output /home/stack/templates/overcloud-baremetal-deployed.yaml \ /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
overcloud-baremetal-deployed.yaml环境文件传递给openstack overcloud deploy命令。
11.3. 配置和部署 overcloud 复制链接链接已复制到粘贴板!
在为 overcloud 置备网络资源和裸机节点后,您可以使用 director 安装提供的未编辑 heat 模板文件以及您创建的任何自定义环境文件来配置 overcloud。完成 overcloud 的配置后,您可以部署 overcloud 环境。
一个基本的 overcloud 会使用本地 LVM 存储作为块存储,这种配置不受支持。红帽建议您使用外部存储解决方案,如 Red Hat Ceph Storage,用于块存储。
11.3.1. 先决条件 复制链接链接已复制到粘贴板!
- 您已置备了 overcloud 所需的网络资源和裸机节点。
11.3.2. 使用环境文件配置 overcloud 复制链接链接已复制到粘贴板!
undercloud 包括一组构成您的 overcloud 创建计划的 heat 模板。您可以使用环境文件来自定义 overcloud 的各个方面,这些文件是 YAML 格式的文件,其内容可覆盖核心 heat 模板集合中的参数和资源。您可以根据需要纳入多个环境文件。环境文件扩展名必须为 .yaml 或 .template。
红帽建议将自定义环境文件组织在一个单独目录中,比如 templates 目录。
您可以使用 -e 选项在 overcloud 部署中包含环境文件。使用 -e 选项添加到 overcloud 的所有环境文件都会成为 overcloud 堆栈定义的一部分。环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源具有优先权。
要在初始部署后修改 overcloud 配置,请执行以下操作:
- 修改定制环境文件和 heat 模板中的参数。
-
使用相同的环境文件再次运行
openstack overcloud deploy命令
不要直接编辑 overcloud 配置,因为 director 在更新 overcloud 栈时会覆盖任何手动配置。
Open Virtual Networking (OVN)是 Red Hat OpenStack Platform 17.0 中的默认网络机制驱动程序。如果要将 OVN 与分布式虚拟路由 (DVR) 搭配使用,则必须在 openstack overcloud deploy 命令中包含 environments/services/neutron-ovn-dvr-ha.yaml 文件。如果要在没有 DVR 的情况下使用 OVN,则必须在 openstack overcloud deploy 命令中包含 environment/services/neutron-ovn-ha.yaml 文件。
11.3.3. 创建 undercloud CA 信任的环境文件 复制链接链接已复制到粘贴板!
如果您的 undercloud 使用 TLS,而证书颁发机构 (CA) 未获得公开信任,可将此 CA 用于 undercloud 操作的 SSL 端点加密。为确保其余部署可以访问 undercloud 端点,请将您的 overcloud 节点配置成信任 undercloud CA。
要使这种方法奏效,overcloud 节点必须有一个指向 undercloud 公共端点的网络路由。依赖于脊叶型网络的部署可能必须应用这种配置。
有两种自定义证书可用于 undercloud:
-
用户提供的证书 - 当您自行提供证书时,会应用此定义。证书可能来自于您自己的 CA,也可能是自签名的。这通过使用
undercloud_service_certificate选项来传递。在这种情况下,您必须信任自签名证书,或 CA(具体取决于您的部署)。 -
自动生成的证书 - 当您通过
certmonger生成使用自己的本地 CA 的证书时,会应用此定义。使用undercloud.conf文件中的generate_service_certificate选项启用自动生成的证书。在这种情况下,director 在/etc/pki/ca-trust/source/anchors/cm-local-ca.pem生成 CA 证书,并配置 undercloud 的 HAProxy 实例以使用服务器证书。将 CA 证书添加到inject-trust-anchor-hiera.yaml文件中以将其呈现给 OpenStack Platform。
本例中使用了位于 /home/stack/ca.crt.pem 的一个自签名证书。如果您使用自动生成的证书,请改为使用 /etc/pki/ca-trust/source/anchors/cm-local-ca.pem。
步骤
打开证书文件,仅复制证书部分。不要包括其密钥:
vi /home/stack/ca.crt.pem
$ vi /home/stack/ca.crt.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您需要的证书部分与下方简写的示例类似:
-----BEGIN CERTIFICATE----- MIIDlTCCAn2gAwIBAgIJAOnPtx2hHEhrMA0GCSqGSIb3DQEBCwUAMGExCzAJBgNV BAYTAlVTMQswCQYDVQQIDAJOQzEQMA4GA1UEBwwHUmFsZWlnaDEQMA4GA1UECgwH UmVkIEhhdDELMAkGA1UECwwCUUUxFDASBgNVBAMMCzE5Mi4xNjguMC4yMB4XDTE3 -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- MIIDlTCCAn2gAwIBAgIJAOnPtx2hHEhrMA0GCSqGSIb3DQEBCwUAMGExCzAJBgNV BAYTAlVTMQswCQYDVQQIDAJOQzEQMA4GA1UEBwwHUmFsZWlnaDEQMA4GA1UECgwH UmVkIEhhdDELMAkGA1UECwwCUUUxFDASBgNVBAMMCzE5Mi4xNjguMC4yMB4XDTE3 -----END CERTIFICATE-----Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个名为
/home/stack/inject-trust-anchor-hiera.yaml的 YAML 文件,其包含下列内容以及您从 PEM 文件复制而来的证书:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意- 证书字符串必须采用 PEM 格式。
-
CAMap参数可能包含其他与 SSL/TLS 配置相关的证书。
-
将
/home/stack/inject-trust-anchor-hiera.yaml文件添加到您的部署命令中。在部署 overcloud 的过程中,director 将 CA 证书复制到每个 overcloud 节点。因此,每个节点都会信任 undercloud 的 SSL 端点提供的加密。
11.3.4. 在新部署中禁用 TSX 复制链接链接已复制到粘贴板!
从 Red Hat Enterprise Linux 8.3 开始,内核默认禁用对 Intel 事务同步扩展 (TSX)功能的支持。
您必须为新的 overcloud 显式禁用 TSX,除非您特别需要将其用于工作负载或第三方供应商。
在环境文件中设置 KernelArgs heat 参数。
parameter_defaults:
ComputeParameters:
KernelArgs: "tsx=off"
parameter_defaults:
ComputeParameters:
KernelArgs: "tsx=off"
在运行 openstack overcloud deploy 命令时包含该环境文件:
11.3.5. 验证 overcloud 配置 复制链接链接已复制到粘贴板!
在部署 overcloud 之前,请验证您的 heat 模板和环境文件。
由于 17.0 中 API 的更改,以下验证当前不稳定:
- switch-vlans
- network-environment
- dhcp-provisioning
-
FAILED验证不会阻止您部署或运行 Red Hat OpenStack Platform。但是,FAILED验证可能会显示生产环境中潜在的问题。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用部署所需的所有环境文件更新 overcloud 堆栈:
openstack overcloud deploy --templates \ -e environment-file1.yaml \ -e environment-file2.yaml \ ... --stack-only
$ openstack overcloud deploy --templates \ -e environment-file1.yaml \ -e environment-file2.yaml \ ... --stack-onlyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证您的 overcloud 堆栈:
validation run \ --group pre-deployment \ --inventory <inventory_file>
$ validation run \ --group pre-deployment \ --inventory <inventory_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<inventory_file> 替换为 Ansible 清单文件的名称和位置,如~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml。
注意当您运行验证时,输出中的
Reasons列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。-
将
查看验证报告的结果:
validation history get [--full] [--validation-log-dir <log_dir>] <uuid>
$ validation history get [--full] [--validation-log-dir <log_dir>] <uuid>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选: 使用 use-
full选项查看验证运行中的详细输出。 -
可选: 使用
--validation-log-dir选项将验证运行的输出写入验证日志。 -
将
<uuid> 替换为验证运行的 UUID。
-
可选: 使用 use-
11.3.6. 创建 overcloud 复制链接链接已复制到粘贴板!
创建 Red Hat OpenStack Platform (RHOSP) overcloud 环境的最后一个阶段是运行 openstack overcloud deploy 命令以创建 overcloud。有关可用于 openstack overcloud deploy 命令的选项的详情,请参考 部署命令选项。
流程
收集 overcloud 环境所需的环境文件和配置文件,包括安装 director 的未编辑的 heat 模板文件,以及您创建的自定义环境文件。这应该包括以下文件:
-
overcloud-baremetal-deployed.yaml节点定义文件。 -
overcloud-networks-deployed.yaml网络定义文件。 -
overcloud-vip-deployed.yaml网络 VIP 定义文件。 - 容器化 OpenStack 服务的容器镜像位置。
- 任何用于红帽 CDN 或 Satellite 注册的环境文件。
- 任何其它自定义环境文件。
-
- 按照优先级顺序组织环境文件和配置文件,首先列出未编辑的 heat 模板文件,后跟包含自定义配置的环境文件,如覆盖默认属性。
构建
openstack overcloud deploy命令,按所需顺序指定配置文件和模板,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - -n /home/stack/templates/network_data.yaml
- 指定自定义网络配置。使用网络隔离或自定义可组合网络时需要此项。有关配置 overcloud 网络的详情,请参考配置 overcloud 网络。
- -e /home/stack/containers-prepare-parameter.yaml
- 添加容器镜像准备环境文件。您在安装 undercloud 的过程中生成了此文件,可使用此文件创建 overcloud。
- -e /home/stack/inject-trust-anchor-hiera.yaml
- 添加用于在 undercloud 中安装自定义证书的环境文件。
- -r /home/stack/templates/roles_data.yaml
- 如果使用自定义角色或要启用多架构云,则生成的角色数据。
overcloud 创建完毕后,director 会提供为配置 overcloud 而执行的 Ansible play 的总结:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 overcloud 创建完成后,director 提供了访问 overcloud 的详细信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以将部署命令保存在您在每次使用新 env 文件更新配置时添加到的文件中。
11.3.7. 部署命令选项 复制链接链接已复制到粘贴板!
下表列出 openstack overcloud deploy 命令的其他参数。
一些选项在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它们只应用于测试,不应在生产环境中使用。有关技术预览功能的更多信息,请参阅覆盖范围详细信息。
| 参数 | 描述 |
|---|---|
|
|
包含您要部署的 heat 模板的目录。如果为空,部署命令会使用位于 |
|
| 要创建或更新的堆栈的名称 |
|
| 以分钟为单位的部署超时持续时间 |
|
| 要用于虚拟机监控程序的虚拟化类型 |
|
|
要用于同步时间的网络时间协议 (NTP) 服务器。您也可以在以逗号分隔的列表中指定多个 NTP 服务器,例如: |
|
|
为环境变量 |
|
|
定义访问 overcloud 节点的 SSH 用户。SSH 访问通常通过 |
|
| 定义用于 SSH 访问 overcloud 节点的密钥路径。 |
|
| 定义要用于 SSH 访问 overcloud 节点的网络名称。 |
|
|
要传递给 overcloud 部署的额外环境文件。您可以多次指定此选项。请注意,传递到 |
|
| 包含要在部署中包括的环境文件的目录。部署命令以数字顺序,然后以字母顺序处理这些环境文件。 |
|
|
定义角色文件并覆盖 |
|
|
定义网络文件并覆盖 |
|
|
定义计划环境文件,并覆盖 |
|
| 如果您不希望在部署后删除临时文件,并记录其位置,则使用此选项。 |
|
| 如果您要在不执行实际部署的情况下更新计划,则使用此选项。 |
|
| overcloud 在创建过程中会执行一组部署前检查。如果部署前检查出现任何非严重错误,则此选项会退出创建。我们推荐使用此选项,因为任何错误都有可能造成部署失败。 |
|
| overcloud 在创建过程中会执行一组部署前检查。如果部署前检查出现任何非关键警告,则此选项会退出创建。openstack-tripleo-validations |
|
| 如果您要在不创建 overcloud 的情况下对 overcloud 执行验证检查,则使用此选项。 |
|
|
使用此选项从 |
|
| 使用此选项跳过 overcloud 部署后配置。 |
|
| 使用此选项强制进行 overcloud 部署后配置。 |
|
|
如果您不希望部署命令为 |
|
| 带有选项和参数的 YAML 文件的路径。 |
|
| 如果要禁用 overcloud 服务的密码生成,则使用此选项。 |
|
|
如果要部署预置备 overcloud 节点,则使用此选项。与 |
|
|
如果您要禁用 |
|
|
如果您要禁用 overcloud 栈创建,并仅运行 |
|
|
要用于保存 |
|
|
Ansible 配置文件的路径。该文件的配置会覆盖 |
|
|
您要用于 |
|
|
(技术预览)将此选项与以逗号分隔的节点列表一起使用,将 config-download playbook 的执行限制在特定节点或一组节点。例如,当想要仅在新节点上运行 config-download 时, |
|
| (技术预览)将此选项与 config-download playbook 中的以逗号分隔的标签列表一起使用,通过一组特定 config-download 任务来运行部署。 |
|
| (技术预览)将此选项与您要从 config-download playbook 中跳过的以逗号分隔的标签列表一起使用。 |
运行以下命令查看完整选项列表:
(undercloud) $ openstack help overcloud deploy
(undercloud) $ openstack help overcloud deploy
某些命令行参数已过时或已弃用,它们的功能可以通过环境文件的 parameter_defaults 部分中所包含的 heat 模板参数实现。下表将已弃用的参数与 heat 模板中的等效参数对应了起来。
| 参数 | 描述 | Heat 模板参数 |
|---|---|---|
|
| 扩展的 Controller 节点数量 |
|
|
| 扩展的 Compute 节点数量 |
|
|
| 扩展的 Ceph 节点数量 |
|
|
| 扩展的 Block Storage (cinder) 节点数量 |
|
|
| 扩展的 Object Storage (swift) 节点数量 |
|
|
| 要用于 Controller 节点的 flavor |
|
|
| 要用于 Compute 节点的 flavor |
|
|
| 要用于 Ceph Storage 节点的 flavor |
|
|
| 要用于 Block Storage (cinder) 节点的 flavor |
|
|
| 要用于 Object Storage (swift) 节点的 flavor |
|
|
| overcloud 在创建过程中会执行一组部署前检查。在使用这个选项时,如果部署前检查出现任何严重错误,则会退出创建。我们推荐使用此选项,因为任何错误都有可能造成部署失败。 | 未进行参数映射 |
|
|
完全禁用部署前验证。这些验证是内置部署前验证,已由 | 未进行参数映射 |
|
|
使用 | 未进行参数映射 |
|
| 使用此选项把 overcloud 节点注册到客户门户或 Satellite 6。 |
|
|
|
使用此选项定义您要用于 overcloud 节点的注册方法。 |
|
|
| 要用于注册的组织。 |
|
|
| 使用此选项注册系统(即使已经注册过)。 |
|
|
|
注册 overcloud 节点的 Satellite 服务器的基本 URL。此参数需要使用 Satellite 的 HTTP URL 而不是 HTTPS URL。例如,使用 http://satellite.example.com 而不是 https://satellite.example.com。overcloud 的创建过程会使用此 URL 来确定服务器是 Red Hat Satellite 5 还是 Red Hat Satellite 6 服务器。如果服务器是 Red Hat Satellite 6 服务器,则 overcloud 获取 |
|
|
| 使用此选项定义您要用于注册的激活码。 |
|
这些参数计划从未来的 Red Hat OpenStack Platform 版本中移除。
11.3.8. 验证 overcloud 部署 复制链接链接已复制到粘贴板!
验证部署的 overcloud。
先决条件
- 您已部署了 overcloud。
流程
查找
stackrc凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证您的 overcloud 部署:
validation run \ --group post-deployment \ [--inventory <inventory_file>]
$ validation run \ --group post-deployment \ [--inventory <inventory_file>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<inventory_file> 替换为 ansible 清单文件的名称。默认情况下,动态清单名为tripleo-ansible-inventory。注意当您运行验证时,输出中的
Reasons列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。
查看验证报告的结果:
validation show run [--full] <UUID>
$ validation show run [--full] <UUID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<UUID> 替换为验证运行的 UUID。 -
可选: 使用 use-
full选项查看验证运行中的详细输出。
-
将
FAILED 验证不会阻止您部署或运行 Red Hat OpenStack Platform。但是,FAILED 验证可能会显示生产环境中潜在的问题。
额外的资源
11.3.9. 访问 overcloud 复制链接链接已复制到粘贴板!
director 生成凭据文件,其中包含从 undercloud 操作 overcloud 所需的凭据。director 将此文件保存为 stack 用户主目录的 overcloudrc 文件。
流程
获取
overcloudrc文件:source ~/overcloudrc
(undercloud)$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 命令提示符更改,以指示您正在访问 overcloud:
(overcloud)$Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要返回与 undercloud 交互,可提供
stackrc文件:source ~/stackrc
(overcloud)$ source ~/stackrc (undercloud)$Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令提示符更改,以指示您正在访问 undercloud:
(undercloud)$Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4. 使用预置备节点配置基本 overcloud 复制链接链接已复制到粘贴板!
本章包含基本配置流程,可用于使用预置备节点配置 Red Hat OpenStack Platform (RHOSP) 环境。这种情境与标准 overcloud 创建情境有所不同,具体体现在以下几个方面:
- 您可以使用外部工具置备节点,让 director 仅控制 overcloud 的配置。
- 您无需依赖 director 的置备方法,可直接使用节点。如果您想创建没有电源管理控制的 overcloud 或使用具有 DHCP/PXE 引导限制的网络,该方法很有用。
- director 不使用 OpenStack Compute (nova)、OpenStack Bare Metal (ironic) 或者 OpenStack Image (glance) 来管理节点。
- 预置备的节点可以使用不依赖于 QCOW2 overcloud-full 镜像的自定义分区布局。
这种情境仅包括没有自定义功能的基本配置。
您无法将预置备节点与 director 置备的节点合并。
11.4.1. 预置备节点要求 复制链接链接已复制到粘贴板!
在开始使用预置备节点部署 overcloud 前,请确保环境中存在以下配置:
- 您在 第 7 章 在 undercloud 上安装 director 中创建的 director 节点。
- 节点的一组裸机。所需的节点数量由您需要创建的 overcloud 类型所决定。这些机器必须符合为每个节点类型设定的要求。这些节点需要 Red Hat Enterprise Linux 9.0 作为主机操作系统安装。红帽建议使用最新的可用版本。
- 用于管理预置备节点的一个网络连接。本情境需要具备对节点的不间断 SSH 访问权限以进行编配代理配置。
Control Plane 网络的一个网络连接。这种网络具备两种主要情境:
将 Provisioning 网络用作 Control Plane,这种是默认情境。这个网络通常是从预置备节点到 director 的第 3 层 (L3) 可路由网络连接。本情境示例使用以下 IP 地址分配:
Expand 表 11.10. Provisioning 网络 IP 分配信息 节点名 IP 地址 Director
192.168.24.1
控制器 0
192.168.24.2
计算 0
192.168.24.3
- 使用单独的网络。如果 director 的 Provisioning 网络是私有非路由网络,则可从任何子网定义节点的 IP 地址,通过公共 API 端点与 director 通信。有关此情境要求的更多信息,请参阅 第 11.4.6 节 “为预置备节点使用单独网络”。
- 本示例中的所有其他网络类型使用 Control Plane 网络来提供 OpenStack 服务。不过,您可以为其他网络流量类型创建额外的网络。
-
如果有任何节点使用 Pacemaker 资源,服务用户
hacluster和服务组haclient必须具有 189 的 UID/GID。这是因为 CVE-2018-16877。如果与操作系统一起安装了 Pacemaker,则安装会自动创建这些 ID。如果错误设置 ID 值,请按照文章 OpenStack 小幅更新/快进升级可能在 controller 节点上在 pacemaker 步骤失败,显示消息“Could not evaluate: backup_cib” 中的步骤来更改 ID 值。 -
要防止某些服务绑定到不正确的 IP 地址并导致部署失败,请确保
/etc/hosts文件不包含node-name=127.0.0.1映射。
11.4.2. 在预置备节点上创建用户 复制链接链接已复制到粘贴板!
使用预置备节点配置 overcloud 时,director 需要对 overcloud 节点进行 SSH 访问。在预置备的节点上,您必须创建一个使用 SSH 密钥身份验证的用户,并为该用户配置免密码 sudo 访问。在预置备的节点上创建用户后,可以结合使用 --overcloud-ssh-user 和 --overcloud-ssh-key 选项及 openstack overcloud deploy 命令,创建具有预置备节点的 overcloud。
默认情况下,overcloud SSH 用户和 overcloud SSH 密钥的值是 stack 用户和 ~/.ssh/id_rsa。要创建 stack 用户,请完成以下步骤。
步骤
在每个 overcloud 节点上,创建
stack用户并设定密码。例如,在 Controller 节点上运行以下命令:useradd stack passwd stack # specify a password
[root@controller-0 ~]# useradd stack [root@controller-0 ~]# passwd stack # specify a passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 进行以下操作以使这个用户使用
sudo时不需要输入密码:echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack chmod 0440 /etc/sudoers.d/stack
[root@controller-0 ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@controller-0 ~]# chmod 0440 /etc/sudoers.d/stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在所有预置备节点上创建并配置
stack用户后,将stack用户的公共 SSH 密钥从 director 节点复制到每个 overcloud 节点。例如,要将 director 的公共 SSH 密钥复制到 Controller 节点,请运行以下命令:ssh-copy-id stack@192.168.24.2
[stack@director ~]$ ssh-copy-id stack@192.168.24.2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要复制 SSH 密钥,您可能必须在每个 overcloud 节点的 SSH 配置中临时设置 PasswordAuthentication Yes。复制 SSH 密钥后,设置 PasswordAuthentication No,并在以后使用 SSH 密钥进行身份验证。
11.4.3. 为预置备节点注册操作系统 复制链接链接已复制到粘贴板!
每个节点需要具备访问红帽订阅的权限。在每个节点上完成以下步骤,将节点注册到 Red Hat Content Delivery Network 中。以 root 用户身份或具有 sudo 特权的用户身份执行命令。
仅启用列出的软件仓库。其他软件仓库可能导致软件包和软件冲突。请勿启用任何其他软件仓库。
步骤
运行注册命令,按照提示输入您的客户门户用户名和密码:
sudo subscription-manager register
[root@controller-0 ~]# sudo subscription-manager registerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查找 Red Hat OpenStack Platform 17.0 的权利池:
sudo subscription-manager list --available --all --matches="Red Hat OpenStack"
[root@controller-0 ~]# sudo subscription-manager list --available --all --matches="Red Hat OpenStack"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上一步中的池 ID 以附加 Red Hat OpenStack Platform 16 权利:
sudo subscription-manager attach --pool=pool_id
[root@controller-0 ~]# sudo subscription-manager attach --pool=pool_idCopy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用所有默认软件仓库:
sudo subscription-manager repos --disable=*
[root@controller-0 ~]# sudo subscription-manager repos --disable=*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用所需的 Red Hat Enterprise Linux 软件仓库:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 overcloud 使用 Ceph Storage 节点,请启用相关的 Ceph Storage 软件仓库:
sudo subscription-manager repos \ --enable=rhel-9-for-x86_64-baseos-rpms \ --enable=rhel-9-for-x86_64-appstream-rpms \ --enable=openstack-beta-deployment-tools-for-rhel-9-x86_64-rpms
[root@cephstorage-0 ~]# sudo subscription-manager repos \ --enable=rhel-9-for-x86_64-baseos-rpms \ --enable=rhel-9-for-x86_64-appstream-rpms \ --enable=openstack-beta-deployment-tools-for-rhel-9-x86_64-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 除 Red Hat Ceph Storage 节点外,锁定所有 overcloud 节点上的 RHEL 版本:
sudo subscription-manager release --set=9.0
[root@controller-0 ~]# sudo subscription-manager release --set=9.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新您的系统,确保您具备最新的基础系统软件包:
sudo dnf update -y sudo reboot
[root@controller-0 ~]# sudo dnf update -y [root@controller-0 ~]# sudo rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow
节点现在可供您的 overcloud 使用。
11.4.4. 配置对 director 的 SSL/TLS 访问权限 复制链接链接已复制到粘贴板!
如果 director 使用 SSL/TLS,那么预置备节点需要用于签署 director 的 SSL/TLS 证书的证书授权机构文件。如果使用自己的证书颁发机构(CA),请在每个 overcloud 节点上执行以下操作。
步骤
-
将证书授权机构文件复制到各预置备节点上的
/etc/pki/ca-trust/source/anchors/目录中。 在每个 overcloud 节点上运行以下命令:
sudo update-ca-trust extract
[root@controller-0 ~]# sudo update-ca-trust extractCopy to Clipboard Copied! Toggle word wrap Toggle overflow
这些步骤将确保 overcloud 节点可以通过 SSL/TLS 访问 director 的公共 API。
11.4.5. 配置 control plane 网络 复制链接链接已复制到粘贴板!
预置备 overcloud 节点使用标准 HTTP 请求从 director 获取元数据。这表示所有 overcloud 节点都需要 L3 权限来访问以下之一:
-
director 的 Control Plane 网络,这是在
undercloud.conf文件中使用network_cidr参数定义的子网。overcloud 节点需要对该子网的直接访问权限或对该子网的可路由访问权限。 -
director 的公共 API 端点,使用
undercloud.conf文件中的undercloud_public_host参数指定。如果没有指向 Control Plane 的 L3 路由或希望使用 SSL/TLS 通信,则此选项可用。有关将 overcloud 节点配置为使用公共 API 端点的更多信息,请参阅 第 11.4.6 节 “为预置备节点使用单独网络”。
director 使用 Control Plane 网络管理和配置标准 overcloud。对于具有预置备节点的 overcloud,可能需要对您的网络配置进行修改以适应 director 和预置备节点之间的通信。
使用网络隔离
您可以使用网络隔离分组服务以使用特定网络,包括 Control Plane。您可以为 Control Plane 上的节点定义特定 IP 地址。有关隔离网络和创建可预测的节点放置策略的更多信息,请参阅 网络隔离。
如果使用网络隔离,请确保您的 NIC 模板不包括用于 undercloud 访问的 NIC。这些模板可能会重新配置 NIC,这会导致在部署过程中出现连接和配置问题。
分配 IP 地址
如果不使用网络隔离,则可使用一个 Control Plane 网络管理所有服务。这需要手动配置每个节点的 Control Plane NIC,以便使用 Control Plane 网络范围内的 IP 地址。如果将 director 的 Provisioning 网络用作 Control Plane,请确保所选的 overcloud IP 地址不在置备(dhcp_start 和 dhcp_end)和内省 (inspection_iprange) DHCP 范围之内。
在创建标准 overcloud 期间,director 将创建 OpenStack Networking (neutron) 端口并为 Provisioning/Control Plane 网络上的 overcloud 节点自动分配 IP 地址。但是,这可能导致 director 分配的地址与您为每个节点手动配置的 IP 地址不同。在这种情况下,使用可预测的 IP 地址策略来强制 director 使用 Control Plane 上的预置备 IP 分配。
如果您使用网络隔离,创建自定义环境文件 deployed-ports.yaml 来实现可预测的 IP 策略。以下示例自定义环境文件 deployed-ports.yaml 传递一组资源 registry 映射和参数到 director,并定义预置备节点的 IP 分配。NodePortMap、ControlPlaneVipData 和 VipPortMap 参数定义与每个 overcloud 节点对应的 IP 地址和子网 CIDR。
- 1
NodePortMap映射定义节点分配的名称。- 2
- 节点的短主机名,其格式为 <
node_hostname>。 - 3
- 节点的网络定义和 IP 分配。网络包括
ctlplane、外部、internal_api、管理、存储、storage_mgmt和租户。IP 分配包括ip_address、ip_address_uri和ip_subnet:-
IPv4:
ip_address和ip_address_uri应该设置为相同的值。 IPv6 :
-
ip_address:设置为没有方括号的 IPv6 地址。 -
ip_address_uri: 设置为方括号中的 IPv6 地址,例如[2001:0db8:85a3:0000:0000:8a2e:0370:7334]。
-
-
IPv4:
11.4.6. 为预置备节点使用单独网络 复制链接链接已复制到粘贴板!
默认情况下,director 使用 Provisioning 网络作为 overcloud Control Plane。但是,如果此网络被隔离且不可路由,则节点在配置期间不能与 director 的内部 API 通信。在这种情况下,您可能需要为节点指定一个单独的网络,并进行配置,以便通过公共 API 与 director 通信。
对于此情境,有几个需要满足的要求:
- overcloud 节点必须容纳来自 第 11.4.5 节 “配置 control plane 网络” 的基本网络配置。
- 您必须在 director 上启用 SSL/TLS,以便使用公共 API 端点。有关更多信息,请参阅在 overcloud 公共端点上启用 SSL/TLS。
-
您必须为 director 指定一个可访问的完全限定域名(FQDN)。此 FQDN 必须解析为 director 的可路由 IP 地址。使用
undercloud.conf文件中的undercloud_public_host参数来设置这个 FQDN。
本节中的示例使用了与主要情境不同的 IP 地址分配:
| 节点名 | IP 地址或 FQDN |
|---|---|
| Director(内部 API) | 192.168.24.1 (Provisioning 网络和 Control Plane) |
| Director(公共 API) | 10.1.1.1 / director.example.com |
| overcloud 虚拟 IP | 192.168.100.1 |
| 控制器 0 | 192.168.100.2 |
| 计算 0 | 192.168.100.3 |
以下章节为需要单独的 overcloud 节点网络的情境提供额外配置。
IP 地址分配
IP 分配方法类似于 第 11.4.5 节 “配置 control plane 网络”。但是,由于 Control Plane 无法从部署的服务器路由,因此您可以使用 NodePortMap、ControlPlaneVipData 和 VipPortMap 参数从所选 overcloud 节点子网分配 IP 地址,包括访问 Control Plane 的虚拟 IP 地址。以下示例是适用于此网络架构的 第 11.4.5 节 “配置 control plane 网络” 中的 deployed-ports.yaml 自定义环境文件的修改版本:
- 1
RedisVipPort资源被映射至network/ports/noop.yaml。由于默认 Redis VIP 地址来自 Control Plane,因此该映射是必要的。在这种情况下,使用noop来禁用这种 Control Plane 映射。
11.4.7. 映射预置备的节点主机名 复制链接链接已复制到粘贴板!
配置预置备节点时,必须将基于 heat 的主机名映射到实际主机名,以便 ansible-playbook 能够到达可解析主机。请使用 HostnameMap 来映射这些值。
步骤
创建环境文件,例如
hostname-map.yaml,并包括HostnameMap参数和主机名映射。请遵循以下语法:parameter_defaults: HostnameMap: [HEAT HOSTNAME]: [ACTUAL HOSTNAME] [HEAT HOSTNAME]: [ACTUAL HOSTNAME]parameter_defaults: HostnameMap: [HEAT HOSTNAME]: [ACTUAL HOSTNAME] [HEAT HOSTNAME]: [ACTUAL HOSTNAME]Copy to Clipboard Copied! Toggle word wrap Toggle overflow [HEAT HOSTNAME]通常符合以下惯例:[STACK NAME]-[ROLE]-[INDEX]:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存
hostname-map.yaml文件。
11.4.8. 为预置备节点配置 Ceph Storage 复制链接链接已复制到粘贴板!
在 undercloud 主机上完成以下步骤,为已部署的节点配置 Ceph。
流程
在 undercloud 主机上,创建环境变量
OVERCLOUD_HOSTS,并将该变量设置为您要用作 Ceph 客户端的 overcloud 主机的 IP 地址列表(以空格分隔):export OVERCLOUD_HOSTS="192.168.1.8 192.168.1.42"
export OVERCLOUD_HOSTS="192.168.1.8 192.168.1.42"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认的 overcloud 计划名称是
overcloud。如果使用其他名称,请创建一个环境变量OVERCLOUD_PLAN来存储您的自定义名称:export OVERCLOUD_PLAN="<custom-stack-name>"
export OVERCLOUD_PLAN="<custom-stack-name>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<custom-stack-name>替换为堆栈的名称。
-
将
运行
enable-ssh-admin.sh脚本,以在 Ansible 可用于配置 Ceph 客户端的 overcloud 节点上配置用户:bash /usr/share/openstack-tripleo-heat-templates/deployed-server/scripts/enable-ssh-admin.sh
bash /usr/share/openstack-tripleo-heat-templates/deployed-server/scripts/enable-ssh-admin.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行 openstack overcloud deploy 命令时,Ansible 配置您在 OVERCLOUD_HOSTS 变量中定义为 Ceph 客户端的主机。
11.4.9. 利用预置备节点创建 overcloud 复制链接链接已复制到粘贴板!
overcloud 部署使用标准 CLI 方法。对于预置备的节点,该部署命令需要使用来自核心 heat 模板集的一些额外选项和环境文件:
-
--disable-validations- 使用此选项禁止对未用于预置备基础架构的服务执行基本的 CLI 验证功能。如果不禁止这些验证,部署将失败。 -
environments/deployed-server-environment.yaml- 包含此环境文件以创建和配置预置备基础架构。这种环境文件用OS::Heat::DeployedServer资源代替OS::Nova::Server资源。
以下命令是示例 overcloud 部署命令,且环境文件特定于预置备的架构:
--overcloud-ssh-user 和 --overcloud-ssh-key 选项用于在配置阶段通过 SSH 连接每个 overcloud 节点,创建初始 tripleo-admin 用户,以及将 SSH 密钥注入 /home/tripleo-admin/.ssh/authorized_keys。要注入 SSH 密钥,请为初始 SSH 连接指定包含 --overcloud-ssh-user 和 --overcloud-ssh-key(默认为 ~/.ssh/id_rsa)的凭证。为限制使用 --overcloud-ssh-key 选项指定的私钥的风险,director 不会将该密钥传递给任何 API 服务,如 heat,只有 director openstack overcloud deploy 命令使用此密钥为 tripleo-admin 用户启用访问权限。
11.4.10. 访问 overcloud 复制链接链接已复制到粘贴板!
director 生成凭据文件,其中包含从 undercloud 操作 overcloud 所需的凭据。director 将此文件保存为 stack 用户主目录的 overcloudrc 文件。
流程
获取
overcloudrc文件:source ~/overcloudrc
(undercloud)$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 命令提示符更改,以指示您正在访问 overcloud:
(overcloud)$Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要返回与 undercloud 交互,可提供
stackrc文件:source ~/stackrc
(overcloud)$ source ~/stackrc (undercloud)$Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令提示符更改,以指示您正在访问 undercloud:
(undercloud)$Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4.11. 扩展预置备节点 复制链接链接已复制到粘贴板!
扩展预置备节点的过程与 第 19 章 扩展 overcloud 节点 中的标准扩展流程类似。但是,添加新预置备节点的流程却不相同,这是因为预置备节点不从 OpenStack Bare Metal (ironic) 和 OpenStack Compute (nova) 使用标准注册和管理流程。
扩展预置备节点
使用预置备节点扩展 overcloud 时,必须在每个节点上配置编配代理以对应 director 的节点计数。
执行以下操作以扩展 overcloud 节点:
- 根据 第 11.4.1 节 “预置备节点要求” 准备新的预置备节点。
- 扩展节点。更多信息请参阅 第 19 章 扩展 overcloud 节点。
- 在执行部署命令后,等待 director 创建新的节点资源并启动配置。
缩减预置备节点
使用预置备节点缩减 overcloud 时,请遵循 第 19 章 扩展 overcloud 节点 中的缩减说明。
在缩减操作中,您可以为 OSP 置备或预置备的节点使用主机名。您也可以将 UUID 用于 OSP 置备的节点。但是,预先部署的节点没有 UUID,因此您始终使用主机名。将 hostname 或 UUID 值传递给 openstack overcloud node delete 命令。
流程
确定您要删除的节点的名称。
openstack stack resource list overcloud -n5 --filter type=OS::TripleO::ComputeDeployedServerServer
$ openstack stack resource list overcloud -n5 --filter type=OS::TripleO::ComputeDeployedServerServerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
stack_name列中对应的节点名称传递给openstack overcloud node delete命令:openstack overcloud node delete --stack <overcloud> <stack>
$ openstack overcloud node delete --stack <overcloud> <stack>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<overcloud>替换为 overcloud 堆栈的名称或 UUID。 -
将 <
;stack_name> 替换为您要删除的节点的名称。您可以在openstack overcloud node delete命令中包含多个节点名称。
-
将
确保
openstack overcloud node delete命令已运行完:openstack stack list
$ openstack stack listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当删除操作完成后,
overcloud堆栈的状态会显示UPDATE_COMPLETE。
从堆栈中移除 overcloud 节点之后,关闭这些节点。在标准部署中,director 上的裸机服务控制此功能。但是,如果使用预置备节点,您必须手动关闭这些节点,或使用每个物理系统的电源管理控制。从堆栈中移除节点之后,如果您不关闭它们,它们可能保持运行,并作为 overcloud 环境的组成部分重新连接。
关闭移除的节点后,将其重新置备为基础操作系统配置,以免它们未来意外加入 overcloud。
在将之前已经从 overcloud 移除的节点重新部署到新的基础操作系统之前,不要尝试再次使用它们。缩减流程只从 overcloud 堆栈移除节点,不会卸载任何软件包。
移除预置备 overcloud
要移除使用预置备节点的整个 overcloud,请参阅 第 15.7 节 “移除 overcloud 堆栈” 了解标准 overcloud 移除流程。移除 overcloud 后,关闭所有节点并将其重新置备为基础操作系统配置。
在将之前已经从 overcloud 移除的节点重新部署到新的基础操作系统之前,不要尝试再次使用它们。移除流程只删除 overcloud 堆栈,不会卸载任何软件包。
第 12 章 基于 Ansible 的 overcloud 注册 复制链接链接已复制到粘贴板!
director 使用基于 Ansible 的方法将 overcloud 节点注册到红帽客户门户网站或 Red Hat Satellite Server。
I:f 从以前的 Red Hat OpenStack Platform 版本中使用了 rhel-registration 方法,您必须禁用它并切换到基于 Ansible 的方法。如需更多信息,请参阅 第 12.6 节 “切换到 rhsm 可组合服务” 和 第 12.7 节 “RHEL-registration 到 rhsm 映射”。
除了基于 director 的注册方法外,您还可以在部署后手动注册。如需更多信息,请参阅 第 12.9 节 “手动运行基于 Ansible 的注册”。
12.1. Red Hat Subscription Manager (RHSM)可组合服务 复制链接链接已复制到粘贴板!
您可以使用 rhsm 可组合服务通过 Ansible 注册 overcloud 节点。默认 roles_data 文件中的每个角色都包含 OS::TripleO::Services::Rhsm 资源,资源默认为禁用。要启用该服务,请将资源注册到 rhsm 可组合服务文件中:
resource_registry: OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/deployment/rhsm/rhsm-baremetal-ansible.yaml
resource_registry:
OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/deployment/rhsm/rhsm-baremetal-ansible.yaml
rhsm 可组合服务接受 RhsmVars 参数,您可以使用它来定义与注册相关的多个子参数:
您还可以使用 RhsmVars 参数与特定于角色的参数(如 ControllerParameters )结合使用,以便在为不同的节点类型启用特定存储库时提供灵活性。
12.2. RhsmVars sub-parameters 复制链接链接已复制到粘贴板!
在配置 rhsm 可组合服务时,使用以下子参数作为 RhsmVars 参数的一部分。有关可用 Ansible 参数的更多信息,请参阅 角色文档。
rhsm | 描述 |
|---|---|
|
|
选择注册方法。 |
|
|
要用于注册的组织。要找到此 ID,请从 undercloud 节点运行 |
|
|
要使用的订阅池 ID。如果您不想自动附加订阅,请使用此参数。要找到这个 ID,请从 undercloud 节点运行 |
|
| 要用于注册的激活码。 |
|
|
使用此参数自动将兼容订阅附加到这个系统。将值设为 |
|
| 获取内容的基本 URL。默认 URL 是 Red Hat Content Delivery Network。如果使用 Satellite 服务器,请将此值改为 Satellite 服务器内容存储库的基本 URL。 |
|
| 用于注册的订阅管理服务的主机名。默认为 Red Hat Subscription Management 主机名。如果使用 Satellite 服务器,请将此值改为您的 Satellite 服务器主机名。 |
|
| 您要启用的存储库列表。 |
|
| 注册的用户名。如果可能,使用激活码进行注册。 |
|
| 注册的密码。如果可能,使用激活码进行注册。 |
|
| 用于固定软件仓库的 Red Hat Enterprise Linux 版本。对于 Red Hat OpenStack Platform,这被设置为 9.0 |
|
|
HTTP 代理的主机名。例如: |
|
|
HTTP 代理通信的端口。例如: |
|
| 用于访问 HTTP 代理的用户名。 |
|
| 用于访问 HTTP 代理的密码。 |
只有在 rhsm_method 设置为 portal 时,才可使用 rhsm_activation_key 和 rhsm_repos。如果将 rhsm_method 设置为 satellite,则只能使用 rhsm_activation_key 或 rhsm_repos。
12.3. 将 overcloud 注册到 rhsm 可组合服务 复制链接链接已复制到粘贴板!
创建可启用和配置 rhsm 可组合服务的环境文件。director 使用此环境文件注册和订阅您的节点。
流程
-
创建名为
templates/rhsm.yml的环境文件来存储配置。 将您的配置包含在环境文件中。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
resource_registry部分将rhsm可组合服务与OS::TripleO::Services::Rhsm资源相关联,后者在每个角色上可用。 -
RhsmVars变量将参数传递给 Ansible,以配置红帽注册。
-
- 保存环境文件。
12.4. 将 rhsm 可组合服务应用到不同的角色 复制链接链接已复制到粘贴板!
您可以根据每个角色应用 rhsm 可组合服务。例如,您可以将不同的配置集合应用到 Controller 节点、Compute 节点和 Ceph Storage 节点。
流程
-
创建名为
templates/rhsm.yml的环境文件来存储配置。 将您的配置包含在环境文件中。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow resource_registry将rhsm可组合服务与OS::TripleO::Services::Rhsm资源相关联,后者在每个角色上可用。ControllerParameters、ComputeParameters和CephStorageParameters参数各自使用单独的RhsmVars参数将订阅详情传递给其各自角色。注意在
CephStorageParameters参数中设置RhsmVars参数,以使用特定于 Ceph Storage 的 Red Hat Ceph Storage 订阅和存储库。确保rhsm_repos参数包含标准 Red Hat Enterprise Linux 存储库,而不是 Controller 和 Compute 节点所需的扩展更新支持(EUS)存储库。- 保存环境文件。
12.5. 将 overcloud 注册到 Red Hat Satellite Server 复制链接链接已复制到粘贴板!
创建一个环境文件,启用并配置 rhsm 可组合服务来将节点注册到 Red Hat Satellite,而不是红帽客户门户网站。
流程
-
创建名为
templates/rhsm.yml的环境文件来存储配置。 将您的配置包含在环境文件中。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow resource_registry将rhsm可组合服务与OS::TripleO::Services::Rhsm资源相关联,后者在每个角色上可用。RhsmVars变量将参数传递给 Ansible,以配置红帽注册。- 保存环境文件。
12.6. 切换到 rhsm 可组合服务 复制链接链接已复制到粘贴板!
前面的 rhel-registration 方法运行 bash 脚本来处理 overcloud 注册。此方法的脚本和环境文件位于 /usr/share/openstack-tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/ 的核心 heat 模板集合中。
完成以下步骤,从 rhel-registration 方法切换到 rhsm 可组合服务。
流程
从将来的部署操作中排除
rhel-registration环境文件。在大多数情况下,排除以下文件:-
rhel-registration/environment-rhel-registration.yaml -
rhel-registration/rhel-registration-resource-registry.yaml
-
如果您使用自定义
roles_data文件,请确保roles_data文件中的每个角色都包含OS::TripleO::Services::Rhsm可组合服务。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
为
rhsm可组合服务参数添加环境文件,以备将来部署操作。
此方法将 rhel-registration 参数替换为 rhsm 服务参数,并更改从中启用该服务的 heat 资源:
resource_registry: OS::TripleO::NodeExtraConfig: rhel-registration.yaml
resource_registry:
OS::TripleO::NodeExtraConfig: rhel-registration.yaml
至:
resource_registry: OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/deployment/rhsm/rhsm-baremetal-ansible.yaml
resource_registry:
OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/deployment/rhsm/rhsm-baremetal-ansible.yaml
您还可以使用部署包含 /usr/share/openstack-tripleo-heat-templates/environments/rhsm.yaml 环境文件以启用该服务。
12.7. RHEL-registration 到 rhsm 映射 复制链接链接已复制到粘贴板!
为了帮助将您的详细信息从 rhel-registration 方法转换到 rhsm 方法,请使用下表来映射您的参数和值。
rhel-registration | rhsm / RhsmVars |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12.8. 使用 rhsm 可组合服务部署 overcloud 复制链接链接已复制到粘贴板!
使用 rhsm 可组合服务部署 overcloud,以便 Ansible 控制 overcloud 节点的注册过程。
流程
使用
openstack overcloud deploy命令包括rhsm.yml环境文件:openstack overcloud deploy \ <other cli args> \ -e ~/templates/rhsm.yamlopenstack overcloud deploy \ <other cli args> \ -e ~/templates/rhsm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这将启用 overcloud 的 Ansible 配置和基于 Ansible 的注册。
- 等待 overcloud 部署完成。
检查 overcloud 节点上的订阅详情。例如,登录到 Controller 节点并运行以下命令:
sudo subscription-manager status sudo subscription-manager list --consumed
$ sudo subscription-manager status $ sudo subscription-manager list --consumedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.9. 手动运行基于 Ansible 的注册 复制链接链接已复制到粘贴板!
您可以使用 director 节点上的动态清单脚本对部署的 overcloud 执行基于 Ansible 的手动注册。使用此脚本将节点角色定义为主机组,然后使用 ansible-playbook 针对它们运行 playbook。使用以下示例 playbook 手动注册 Controller 节点。
流程
创建一个 playbook,它使用
redhat_subscription模块注册您的节点。例如,以下 playbook 适用于 Controller 节点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此 play 包含三个任务:
- 注册节点。
- 禁用任何自动启用的软件仓库。
-
仅启用与 Controller 节点相关的存储库。存储库通过
repos变量列出。
部署 overcloud 后,您可以运行以下命令,以便 Ansible 对 overcloud 执行 playbook (
ansible-osp-registration.yml):ansible-playbook -i /usr/bin/tripleo-ansible-inventory ansible-osp-registration.yml
$ ansible-playbook -i /usr/bin/tripleo-ansible-inventory ansible-osp-registration.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令执行以下操作:
- 运行动态清单脚本以获取主机及其组的列表。
-
将 playbook 任务应用到 playbook 的
hosts参数中定义的节点,本例中为 Controller 组。
第 13 章 配置 NFS 存储 复制链接链接已复制到粘贴板!
您可以将 overcloud 配置为使用共享 NFS 存储。
13.1. 支持的配置和限制 复制链接链接已复制到粘贴板!
支持的 NFS 存储
- 红帽建议您使用认证的存储后端和驱动程序。红帽不推荐使用来自通用 NFS 后端的 NFS 存储,因为它的功能仅限于经过认证的存储后端和驱动程序。例如,通用 NFS 后端不支持卷加密和卷多附加等功能。有关支持的驱动程序的详情,请查看 红帽生态系统目录。
- 对于 Block Storage (cinder)和 Compute (nova)服务,您必须使用 NFS 版本 4.0 或更高版本。Red Hat OpenStack Platform (RHOSP)不支持早期版本的 NFS。
不支持的 NFS 配置
RHOSP 不支持 NetApp 功能 NAS 安全,因为它会干扰正常的卷操作。director 默认禁用该功能。因此,不要编辑以下 heat 参数,它们控制 NFS 后端还是 NetApp NFS 块存储后端是否支持 NAS 安全:
-
CinderNetappNasSecureFileOperations -
CinderNetappNasSecureFilePermissions -
CinderNasSecureFileOperations -
CinderNasSecureFilePermissions
-
使用 NFS 共享时的限制
- 当后端是 NFS 共享时,无法调整大小或重新构建具有交换内存的实例。
13.2. 配置 NFS 存储 复制链接链接已复制到粘贴板!
您可以将 overcloud 配置为使用共享 NFS 存储。
流程
-
创建一个环境文件来配置您的 NFS 存储,如
nfs_storage.yaml。 在新环境文件中添加以下参数来配置 NFS 存储:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意不要配置
CinderNfsMountOptions和GlanceNfsOptions参数,因为它们的默认值启用适合大多数 Red Hat OpenStack Platform (RHOSP)环境的 NFS 挂载选项。您可以在environments/storage/glance-nfs.yaml文件中看到GlanceNfsOptions参数的值。如果您在配置多个服务以共享同一 NFS 服务器时遇到问题,请联系红帽支持团队。使用其他环境文件将 NFS 存储环境文件添加到堆栈中,并部署 overcloud:
openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/nfs_storage.yaml
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/nfs_storage.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 14 章 执行 overcloud 安装后任务 复制链接链接已复制到粘贴板!
本章介绍创建 overcloud 后要立即执行的任务。这些任务可确保您的 overcloud 随时可用。
14.1. 检查 overcloud 部署状态 复制链接链接已复制到粘贴板!
要检查 overcloud 的部署状态,可使用 openstack overcloud status 命令。此命令返回所有部署步骤的结果。
步骤
Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行部署状态命令:
openstack overcloud status
$ openstack overcloud statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令的输出显示 overcloud 的状态:
+-----------+---------------------+---------------------+-------------------+ | Plan Name | Created | Updated | Deployment Status | +-----------+---------------------+---------------------+-------------------+ | overcloud | 2018-05-03 21:24:50 | 2018-05-03 21:27:59 | DEPLOY_SUCCESS | +-----------+---------------------+---------------------+-------------------+
+-----------+---------------------+---------------------+-------------------+ | Plan Name | Created | Updated | Deployment Status | +-----------+---------------------+---------------------+-------------------+ | overcloud | 2018-05-03 21:24:50 | 2018-05-03 21:27:59 | DEPLOY_SUCCESS | +-----------+---------------------+---------------------+-------------------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的 overcloud 使用其他名称,请使用--
stack参数来选择具有不同名称的 overcloud:openstack overcloud status --stack <overcloud_name>
$ openstack overcloud status --stack <overcloud_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<overcloud_name> 替换为 overcloud 的名称。
-
将
14.2. 创建基本 overcloud 类别 复制链接链接已复制到粘贴板!
本指南中的步骤假定您的安装中包含有类型 (flavor)。如果您尚未创建任何 flavor,请完成以下步骤,创建一组具有多种存储和处理功能的基本默认 flavor:
步骤
获取
overcloudrc文件:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
openstack flavor create命令以创建类别。使用以下选项指定每种类别的硬件要求:- --disk
- 为虚拟机卷定义硬盘空间。
- --ram
- 定义虚拟机所需的 RAM。
- --vcpus
- 定义虚拟机的虚拟 CPU 的数量。
以下示例创建默认 overcloud 类别:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 $ openstack flavor create --help 来进一步了解 openstack flavor create 命令。
14.3. 创建默认租户网络 复制链接链接已复制到粘贴板!
overcloud 需要默认租户网络,以便虚拟机在内部通信。
步骤
获取
overcloudrc文件:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建默认租户网络:
(overcloud) $ openstack network create default
(overcloud) $ openstack network create defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在网络中创建一个子网:
(overcloud) $ openstack subnet create default --network default --gateway 172.20.1.1 --subnet-range 172.20.0.0/16
(overcloud) $ openstack subnet create default --network default --gateway 172.20.1.1 --subnet-range 172.20.0.0/16Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认所创建的网络:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
这些命令创建名为 default 的基本 Networking 服务 (neutron) 网络。overcloud 自动使用内部 DHCP 机制将此网络中的 IP 地址分配给虚拟机。
14.4. 创建默认浮动 IP 网络 复制链接链接已复制到粘贴板!
要从 overcloud 以外访问您的虚拟机,您必须配置一个外部网络,为虚拟机提供浮动 IP 地址。
此流程包含两个示例。使用最适合您环境的示例:
- 原生 VLAN(扁平网络)
- 非原生 VLAN(VLAN 网络)
这两个示例都涉及使用名称 public 创建网络。overcloud 需要将这一特定名称用于默认的浮动 IP 池。这个名称对于 第 14.7 节 “验证 overcloud” 中的验证测试也很重要。
默认情况下,Openstack Networking (neutron) 将名为 datacentre 的物理网络名称映射到主机节点上的 br-ex 网桥。您将 public overcloud 网络连接到物理 datacentre,这将通过 br-ex 网桥提供网关。
先决条件
- 专用接口或原生 VLAN 用于浮动 IP 网络。
步骤
获取
overcloudrc文件:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
公共网络:创建
扁平网络获取原生 VLAN 连接:(overcloud) $ openstack network create public --external --provider-network-type flat --provider-physical-network datacentre
(overcloud) $ openstack network create public --external --provider-network-type flat --provider-physical-network datacentreCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
vlan网络获取非原生 VLAN 连接:(overcloud) $ openstack network create public --external --provider-network-type vlan --provider-physical-network datacentre --provider-segment 201
(overcloud) $ openstack network create public --external --provider-network-type vlan --provider-physical-network datacentre --provider-segment 201Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--provider-segment选项定义您要使用的 VLAN。在本例中,VLAN 是201。
使用浮动 IP 地址分配池创建子网。在本示例中,IP 范围为
10.1.1.51到10.1.1.250:(overcloud) $ openstack subnet create public --network public --dhcp --allocation-pool start=10.1.1.51,end=10.1.1.250 --gateway 10.1.1.1 --subnet-range 10.1.1.0/24
(overcloud) $ openstack subnet create public --network public --dhcp --allocation-pool start=10.1.1.51,end=10.1.1.250 --gateway 10.1.1.1 --subnet-range 10.1.1.0/24Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保此范围与外部网络中的其他 IP 地址不冲突。
14.5. 创建默认提供商网络 复制链接链接已复制到粘贴板!
提供商网络是另一类型的外部网络连接,将流量从私有租户网络路由到外部基础架构网络。该提供商网络类似于浮动 IP 网络,但提供商网络使用逻辑路由器将私有网络连接到提供商网络。
此流程包含两个示例。使用最适合您环境的示例:
- 原生 VLAN(扁平网络)
- 非原生 VLAN(VLAN 网络)
默认情况下,Openstack Networking (neutron) 将名为 datacentre 的物理网络名称映射到主机节点上的 br-ex 网桥。您将 public overcloud 网络连接到物理 datacentre,这将通过 br-ex 网桥提供网关。
步骤
获取
overcloudrc文件:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
提供商网络。创建
扁平网络获取原生 VLAN 连接:(overcloud) $ openstack network create provider --external --provider-network-type flat --provider-physical-network datacentre --share
(overcloud) $ openstack network create provider --external --provider-network-type flat --provider-physical-network datacentre --shareCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
vlan网络获取非原生 VLAN 连接:(overcloud) $ openstack network create provider --external --provider-network-type vlan --provider-physical-network datacentre --provider-segment 201 --share
(overcloud) $ openstack network create provider --external --provider-network-type vlan --provider-physical-network datacentre --provider-segment 201 --shareCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--provider-segment选项定义您要使用的 VLAN。在本例中,VLAN 是201。
这些示例命令创建共享网络。也可以指定租户而不是指定
--share,这样只有租户才能访问新网络。+ 如果将提供商网络标记为外部网络,则只有运营商可在该网络上创建端口。
向
提供商网络添加一个子网以提供 DHCP 服务:(overcloud) $ openstack subnet create provider-subnet --network provider --dhcp --allocation-pool start=10.9.101.50,end=10.9.101.100 --gateway 10.9.101.254 --subnet-range 10.9.101.0/24
(overcloud) $ openstack subnet create provider-subnet --network provider --dhcp --allocation-pool start=10.9.101.50,end=10.9.101.100 --gateway 10.9.101.254 --subnet-range 10.9.101.0/24Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个路由器,使其他网络能够通过提供商网络路由流量:
(overcloud) $ openstack router create external
(overcloud) $ openstack router create externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将路由器的外部网关设置为
提供商网络:(overcloud) $ openstack router set --external-gateway provider external
(overcloud) $ openstack router set --external-gateway provider externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将其他网络添加到该路由器。例如,运行以下命令以将子网
subnet1附加到路由器上:(overcloud) $ openstack router add subnet external subnet1
(overcloud) $ openstack router add subnet external subnet1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令将
subnet1添加到路由表中,并允许使用subnet1的虚拟机中的流量路由到提供商网络。
14.6. 创建其他网桥映射 复制链接链接已复制到粘贴板!
只要部署期间映射其他网桥,浮动 IP 网络可以使用任何网桥,而不只是 br-ex。
流程
要将名为
br-floating的新网桥映射到floating物理网络,请在环境文件中包含NeutronBridgeMappings参数:parameter_defaults: NeutronBridgeMappings: "datacentre:br-ex,floating:br-floating"
parameter_defaults: NeutronBridgeMappings: "datacentre:br-ex,floating:br-floating"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用此方法,您可以在创建 overcloud 后创建单独的外部网络。例如,要创建映射到
floating物理网络的浮动 IP 网络,请运行以下命令:source ~/overcloudrc (overcloud) $ openstack network create public --external --provider-physical-network floating --provider-network-type vlan --provider-segment 105 (overcloud) $ openstack subnet create public --network public --dhcp --allocation-pool start=10.1.2.51,end=10.1.2.250 --gateway 10.1.2.1 --subnet-range 10.1.2.0/24
$ source ~/overcloudrc (overcloud) $ openstack network create public --external --provider-physical-network floating --provider-network-type vlan --provider-segment 105 (overcloud) $ openstack subnet create public --network public --dhcp --allocation-pool start=10.1.2.51,end=10.1.2.250 --gateway 10.1.2.1 --subnet-range 10.1.2.0/24Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.7. 验证 overcloud 复制链接链接已复制到粘贴板!
Overcloud 会使用 OpenStack Integration Test Suite (tempest) 工具集来执行一系列集成测试。本节介绍运行集成测试的准备工作。有关如何使用 OpenStack Integration Test Suite 的完整说明,请参阅 OpenStack Integration Test Suite 指南。
Integration Test Suite 需要执行一些安装后步骤以确保成功测试。
步骤
如果在 undercloud 上运行这个测试,请确保 undercloud 主机能够访问 overcloud 的内部 API 网络。例如,在 undercloud 主机上添加一个临时的 VLAN,用于使用 172.16.0.201/24 地址访问内部 API 网络 (ID: 201):
source ~/stackrc (undercloud) $ sudo ovs-vsctl add-port br-ctlplane vlan201 tag=201 -- set interface vlan201 type=internal (undercloud) $ sudo ip l set dev vlan201 up; sudo ip addr add 172.16.0.201/24 dev vlan201
$ source ~/stackrc (undercloud) $ sudo ovs-vsctl add-port br-ctlplane vlan201 tag=201 -- set interface vlan201 type=internal (undercloud) $ sudo ip l set dev vlan201 up; sudo ip addr add 172.16.0.201/24 dev vlan201Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 运行集成测试,如 OpenStack Integration Test Suite 指南中所述。
在验证完成后,删除所有到 overcloud 的内部 API 的临时连接。在这个示例中,使用以下命令删除以前在 undercloud 中创建的 VLAN:
source ~/stackrc (undercloud) $ sudo ovs-vsctl del-port vlan201
$ source ~/stackrc (undercloud) $ sudo ovs-vsctl del-port vlan201Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.8. 防止 overcloud 被移除 复制链接链接已复制到粘贴板!
为 heat 设置自定义策略,以防止 overcloud 被删除。
步骤
-
创建名为
prevent-stack-delete.yaml的环境文件。 设置
HeatApiPolicies参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要heat-deny-action是您必须在 undercloud 安装中包含的默认策略。将
prevent-stack-delete.yaml环境文件添加到undercloud.conf文件中的custom_env_files参数:custom_env_files = prevent-stack-delete.yaml
custom_env_files = prevent-stack-delete.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 undercloud 安装命令以刷新配置:
openstack undercloud install
$ openstack undercloud installCopy to Clipboard Copied! Toggle word wrap Toggle overflow
此环境文件会防止您删除 overcloud 中的任何堆栈,这意味着您无法执行以下功能:
- 删除 overcloud
- 移除单独的 Compute 或 Ceph Storage 节点
- 替换 Controller 节点
要启用堆栈删除,请从 custom_env_files 参数中移除 prevent-stack-delete.yaml 文件,再运行 openstack undercloud install 命令。
第 15 章 执行基本 overcloud 管理任务 复制链接链接已复制到粘贴板!
本章介绍在 overcloud 生命周期过程中可能需要执行的基本任务。
15.1. 通过 SSH 访问 overcloud 节点 复制链接链接已复制到粘贴板!
您可以通过 SSH 协议访问每个 overcloud 节点。
-
每个 overcloud 节点都包含一个
tripleo-admin用户。 -
undercloud 上的
stack用户对每个 overcloud 节点上的tripleo-admin用户具有基于密钥的 SSH 访问权限。 -
所有 overcloud 节点都有一个短主机名,undercloud 将其解析为 control plane 网络上的 IP 地址。每个短主机名都使用
.ctlplane后缀。例如,overcloud-controller-0的短名称为overcloud-controller-0.ctlplane
先决条件
- 具有可正常工作的 control plane 网络的已部署 overcloud。
步骤
-
以
stack用户身份登录 undercloud。 查找要访问的节点的名称:
metalsmith list
(undercloud)$ metalsmith listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以
tripleo-admin用户身份连接到节点:ssh tripleo-admin@overcloud-controller-0
(undercloud)$ ssh tripleo-admin@overcloud-controller-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.2. 管理容器化服务 复制链接链接已复制到粘贴板!
Red Hat OpenStack (RHOSP) 平台在 undercloud 和 overcloud 节点上的容器中运行服务。在某些情况下,您可能需要控制主机上的单个服务。本节介绍了可在节点上运行的用于管理容器化服务的一些常见命令。
列出容器和镜像
要列出运行中的容器,请运行以下命令:
sudo podman ps
$ sudo podman ps
要在命令输出中包括停止的或失败的容器,将 --all 选项添加到命令中:
sudo podman ps --all
$ sudo podman ps --all
要列出容器镜像,请运行以下命令:
sudo podman images
$ sudo podman images
检查容器属性
要查看容器或容器镜像的属性,请使用 podman inspect 命令。例如,要检查 keystone 容器,请运行以下命令:
sudo podman inspect keystone
$ sudo podman inspect keystone
使用 Systemd 服务管理容器
早期版本的 OpenStack Platform 使用 Docker 及其守护进程管理容器。现在,Systemd 服务接口管理容器的生命周期。每个容器都是一个服务,您运行 Systemd 命令,为每个容器执行特定操作。
不建议使用 Podman CLI 停止、启动和重启容器,因为 Systemd 会应用重启策略。请使用 Systemd 服务命令。
要检查容器状态,请运行 systemctl status 命令:
要停止容器,请运行 systemctl stop 命令:
sudo systemctl stop tripleo_keystone
$ sudo systemctl stop tripleo_keystone
要启动容器,请运行 systemctl start 命令:
sudo systemctl start tripleo_keystone
$ sudo systemctl start tripleo_keystone
要重启容器,请运行 systemctl restart 命令:
sudo systemctl restart tripleo_keystone
$ sudo systemctl restart tripleo_keystone
由于没有守护进程监控容器状态,Systemd 在以下情况下自动重启大多数容器:
-
清除退出代码或信号,如运行
podman stop命令。 - 取消清除退出代码,如启动后的 podman 容器崩溃。
- 取消清除信号。
- 如果容器启动时间超过 1 分 30 秒,则超时。
有关 Systemd 服务的更多信息,请参阅 systemd.service 文档。
在重启容器后,针对其中的服务配置文件所做的所有更改都会恢复。这是因为容器基于 /var/lib/config-data/puppet-generated/ 中节点的本地文件系统上的文件重新生成服务配置。例如,如果您编辑了 keystone 容器中的 /etc/keystone/keystone.conf,并重启了该容器,则该容器会使用节点的本地文件系统上的 /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf 来重新生成配置,以覆盖重启之前在该容器中所做的所有更改。
使用 Systemd 计时器监控 podman 容器
Systemd 计时器接口管理容器运行健康检查。每个容器都有一个计时器,它会运行一个服务单员来执行健康检查脚本。
要列出所有 OpenStack Platform 容器计时器,请运行 systemctl list-timers 命令并将输出限制为包含 tripleo 的行:
sudo systemctl list-timers | grep tripleo Mon 2019-02-18 20:18:30 UTC 1s left Mon 2019-02-18 20:17:26 UTC 1min 2s ago tripleo_nova_metadata_healthcheck.timer tripleo_nova_metadata_healthcheck.service Mon 2019-02-18 20:18:34 UTC 5s left Mon 2019-02-18 20:17:23 UTC 1min 5s ago tripleo_keystone_healthcheck.timer tripleo_keystone_healthcheck.service Mon 2019-02-18 20:18:35 UTC 6s left Mon 2019-02-18 20:17:13 UTC 1min 15s ago tripleo_memcached_healthcheck.timer tripleo_memcached_healthcheck.service (...)
$ sudo systemctl list-timers | grep tripleo
Mon 2019-02-18 20:18:30 UTC 1s left Mon 2019-02-18 20:17:26 UTC 1min 2s ago tripleo_nova_metadata_healthcheck.timer tripleo_nova_metadata_healthcheck.service
Mon 2019-02-18 20:18:34 UTC 5s left Mon 2019-02-18 20:17:23 UTC 1min 5s ago tripleo_keystone_healthcheck.timer tripleo_keystone_healthcheck.service
Mon 2019-02-18 20:18:35 UTC 6s left Mon 2019-02-18 20:17:13 UTC 1min 15s ago tripleo_memcached_healthcheck.timer tripleo_memcached_healthcheck.service
(...)
要检查特定容器计时器的状态,请对运行状况检查服务运行 systemctl status 命令:
要停止、启动、重启和显示容器计时器的状态,请根据 .timer Systemd 资源运行相关 systemctl 命令。例如,要检查 tripleo_keystone_healthcheck.timer 资源的状态,可运行以下命令:
sudo systemctl status tripleo_keystone_healthcheck.timer ● tripleo_keystone_healthcheck.timer - keystone container healthcheck Loaded: loaded (/etc/systemd/system/tripleo_keystone_healthcheck.timer; enabled; vendor preset: disabled) Active: active (waiting) since Fri 2019-02-15 23:53:18 UTC; 2 days ago
$ sudo systemctl status tripleo_keystone_healthcheck.timer
● tripleo_keystone_healthcheck.timer - keystone container healthcheck
Loaded: loaded (/etc/systemd/system/tripleo_keystone_healthcheck.timer; enabled; vendor preset: disabled)
Active: active (waiting) since Fri 2019-02-15 23:53:18 UTC; 2 days ago
如果健康状况检查服务被禁用,但该服务的计时器存在并启用,则意味着检查当前超时,但将根据计时器运行。您还可以手动启动检查。
podman ps 命令不显示容器运行状态。
检查容器日志
Red Hat OpenStack Platform 17.0 记录来自所有容器的所有标准输出(stdout),以及 /var/log/containers/stdout 中每个容器整合的标准错误(stderr)。
主机会对此目录进行日志轮转以防止产生巨大的文件及占用太多磁盘空间的问题。
如果替换了容器,新的容器将输出到同一日志文件中,因为 podman 会使用容器名而非容器 ID。
您也可以使用 podman logs 命令检查容器化服务的日志。例如,要查看 keystone 容器的日志,请运行以下命令:
sudo podman logs keystone
$ sudo podman logs keystone
访问容器
要进入容器化服务的 shell,请使用 podman exec 命令以启动 /bin/bash。例如,要进入 keystone 容器的 shell,请运行以下命令:
sudo podman exec -it keystone /bin/bash
$ sudo podman exec -it keystone /bin/bash
要以根用户身份进入 keystone 容器的 shell,请运行以下命令:
sudo podman exec --user 0 -it <NAME OR ID> /bin/bash
$ sudo podman exec --user 0 -it <NAME OR ID> /bin/bash
要退出容器,请运行以下命令:
exit
# exit
15.3. 修改 overcloud 环境 复制链接链接已复制到粘贴板!
您可以修改 overcloud 以添加额外功能或更改现有操作。
流程
要修改 overcloud,请在自定义环境文件和 heat 模板中进行修改,然后从您的初始 overcloud 创建中重新运行
openstack overcloud deploy命令。例如,如果您使用 第 11.3 节 “配置和部署 overcloud” 创建 overcloud,请重新运行以下命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow director 会在 heat 中检查
overcloud栈,然后根据环境文件和 heat 模板更新栈中的每一项目。director 不会重新创建 overcloud,而是更改现有 overcloud。重要从自定义环境文件中移除参数不会将参数值恢复到默认配置。您必须从
/usr/share/openstack-tripleo-heat-templates中的核心 heat 模板集合中获得默认值,然后在自定义环境文件中手动设置这些值。如果您要包括新的环境文件,则使用 `-e` 选项将其添加到
openstack overcloud deploy命令中。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令将环境文件中的新参数和资源纳入堆栈。
重要不建议手动修改 overcloud 配置,因为 director 稍后可能会覆盖这些修改。
15.4. 将虚拟机导入 overcloud 复制链接链接已复制到粘贴板!
您可以将虚拟机从现有 OpenStack 环境迁移到 Red Hat OpenStack Platform (RHOSP) 环境。
步骤
在现有 OpenStack 环境中,通过对一个运行的服务器进行快照并下载镜像来创建一个新镜像:
openstack server image create --name <image_name> <instance_name> openstack image save --file <exported_vm.qcow2> <image_name>
$ openstack server image create --name <image_name> <instance_name> $ openstack image save --file <exported_vm.qcow2> <image_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<instance_name> 替换为实例的名称。 -
将
<image_name> 替换为新镜像的名称。 -
使用导出的虚拟机的名称替换
<exported_vm.qcow2>。
-
将
将导出的镜像复制到 undercloud 节点:
scp exported_vm.qcow2 stack@192.168.0.2:~/.
$ scp exported_vm.qcow2 stack@192.168.0.2:~/.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
以
stack用户身份登录 undercloud。 查找
overcloudrc凭证文件:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将导出的镜像上传到 overcloud 中:
(overcloud) $ openstack image create --disk-format qcow2 -file <exported_vm.qcow2> --container-format bare <image_name>
(overcloud) $ openstack image create --disk-format qcow2 -file <exported_vm.qcow2> --container-format bare <image_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动新实例:
(overcloud) $ openstack server create --key-name default --flavor m1.demo --image imported_image --nic net-id=net_id <instance_name>
(overcloud) $ openstack server create --key-name default --flavor m1.demo --image imported_image --nic net-id=net_id <instance_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以使用这些命令将现有 OpenStack 环境的每个虚拟机磁盘复制到新的 Red Hat OpenStack Platform 中。QCOW 快照丢掉了原始的层系统。
15.5. 启动临时 heat 进程 复制链接链接已复制到粘贴板!
在以前的 Red Hat OpenStack Platform (RHOSP)版本中,系统安装的 Heat 进程用于安装 overcloud。现在,我们使用 ephermal Heat 安装 overcloud,这意味着 heat-api 和 heat-engine 进程会根据 部署、更新 和 upgrade 命令按需启动。
在以前的版本中,您使用 openstack stack 命令来创建和管理堆栈。此命令默认不再可用。为了进行故障排除和调试目的,例如堆栈应该失败,您必须首先启动临时 Heat 进程才能使用 openstack stack 命令。
使用 openstack overcloud tripleo launch heat 命令,在部署外启用临时 heat。
流程
使用
openstack tripleo launch heat命令启动临时 Heat 进程:openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db
(undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-dbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 命令在启动 Heat 进程后退出,Heat 进程将继续作为 podman pod 在后台运行。
使用
podman pod ps命令来验证ephemeral-heat进程是否正在运行:sudo podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 958b141609b2 ephemeral-heat Running 2 minutes ago 44447995dbcf 3
(undercloud)$ sudo podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 958b141609b2 ephemeral-heat Running 2 minutes ago 44447995dbcf 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
export命令导出OS_CLOUD环境:export OS_CLOUD=heat
(undercloud)$ export OS_CLOUD=heatCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
openstack stack list命令列出已安装的堆栈:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
openstack stack environment show和openstack stack resource list等命令进行调试。调试完成后,停止 emphemeral Heat 进程:
openstack tripleo launch heat --kill
(undercloud)$ openstack tripleo launch heat --killCopy to Clipboard Copied! Toggle word wrap Toggle overflow
有时,导出 heat 环境会失败。当其他凭据(如 overcloudrc )正在使用时,可能会发生这种情况。在这种情况下,取消设置现有环境,并提供 heat 环境。
15.6. 运行动态清单脚本 复制链接链接已复制到粘贴板!
您可以在 Red Hat OpenStack Platform (RHOSP)环境中运行基于 Ansible 的自动化。使用位于 /home/stack/overcloud-deploy/<stack> 目录中的 tripleo-ansible-inventory.yaml 清单文件来运行 ansible play 或 ad-hoc 命令。
如果要在 undercloud 上运行 Ansible playbook 或 Ansible 临时命令,则必须使用 /home/stack/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml 清单文件。
流程
要查看您的节点清单,请运行以下命令:
ansible -i ./overcloud-deploy/overcloud/tripleo-ansible-inventory.yaml all --list
(undercloud) [stack@undercloud ~]$ ansible -i ./overcloud-deploy/overcloud/tripleo-ansible-inventory.yaml all --listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要在您的环境中执行 Ansible playbook,请运行
ansible命令,并使用-i选项包含清单文件的完整路径。例如:(undercloud) $ ansible <hosts> -i ./overcloud-deploy/tripleo-ansible-inventory.yaml <playbook> <options>
(undercloud) $ ansible <hosts> -i ./overcloud-deploy/tripleo-ansible-inventory.yaml <playbook> <options>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <hosts> 替换为您要使用的主机类型:-
controller,适用于所有 Controller 节点 -
compute,适用于所有 Compute 节点 -
overcloud,适用于所有 overcloud 子节点。例如,controller和compute节点 -
"*",适用于所有节点
-
将 &
lt;options> 替换为额外的 Ansible 选项。-
使用
--ssh-extra-args='-o StrictHostKeyChecking=no'选项跳过主机密钥检查确认操作。 -
使用
-u [USER]选项更改执行 Ansible 自动化的 SSH 用户。默认的 overcloud SSH 用户由动态清单中的ansible_ssh_user参数自动定义。-u选项会覆盖此参数。 -
使用
-m [MODULE]选项使用特定的 Ansible 模块。默认为command,用于执行 Linux 命令。 -
使用
-a [MODULE_ARGS]选项为选定的模块定义参数。
-
使用
overcloud 上的自定义 Ansible 自动化不是标准 overcloud 堆栈的一部分。后续执行 openstack overcloud deploy 命令可能会覆盖 overcloud 节点上的 OpenStack Platform 服务的基于 Ansible 的配置。
15.7. 移除 overcloud 堆栈 复制链接链接已复制到粘贴板!
您可以删除 overcloud 堆栈并取消置备所有堆栈节点。
删除 overcloud 堆栈不会清除所有 overcloud 数据。如果您需要清除所有 overcloud 数据,请联系红帽支持。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检索堆栈中所有节点的列表及其当前状态:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 overcloud 堆栈并取消置备节点和网络:
openstack overcloud delete -b <node_definition_file> \ --networks-file <networks_definition_file> --network-ports <stack>
(undercloud)$ openstack overcloud delete -b <node_definition_file> \ --networks-file <networks_definition_file> --network-ports <stack>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node_definition_file> 替换为节点定义文件的名称,如overcloud-baremetal-deploy.yaml。 -
将
<networks_definition_file> 替换为网络定义文件的名称,如network_data_v2.yaml。 -
将 <stack> 替换为您要删除的堆栈的名称。如果未指定,则默认堆栈为overcloud。
-
将
确认您要删除 overcloud:
Are you sure you want to delete this overcloud [y/N]?
Are you sure you want to delete this overcloud [y/N]?Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待 overcloud 删除,以及节点和网络取消置备。
确认裸机节点已取消置备:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除堆栈目录:
rm -rf ~/overcloud-deploy/<stack> rm -rf ~/config-download/<stack>
$ rm -rf ~/overcloud-deploy/<stack> $ rm -rf ~/config-download/<stack>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您使用
openstack overcloud deploy命令部署 overcloud 时,堆栈的目录路径可能与默认值不同。
第 16 章 使用 Ansible 配置 overcloud 复制链接链接已复制到粘贴板!
Ansible 是应用 overcloud 配置的主要方法。本章介绍了有关如何与 overcloud Ansible 配置进行交互的信息。
尽管 director 会自动生成 Ansible playbook,您最好熟悉 Ansible 语法。有关使用 Ansible 的更多信息,请参见 https://docs.ansible.com/。
Ansible 还使用了角色这一概念,但这有别于 OpenStack Platform director 中的角色。Ansible 角色形成了 playbook 的可重复使用的组件,而 director 角色包含 OpenStack 服务到节点类型的映射。
16.1. 基于 Ansible 的 overcloud 配置 (config-download) 复制链接链接已复制到粘贴板!
config-download 功能是 director 用于配置 overcloud 的方法。director 将 config-download 与 OpenStack Orchestration (heat)结合使用来生成软件配置,并将配置应用到每个 overcloud 节点。尽管 heat 从 SoftwareDeployment 资源创建所有部署数据以执行 overcloud 安装和配置,但 heat 并不应用任何配置。Heat 仅通过 heat API 提供配置数据。
作为结果,在运行 openstack overcloud deploy 命令时后会发生以下操作:
-
director 根据
openstack-tripleo-heat-templates创建新的部署计划,并通过包含环境文件和参数来自定义该计划。 - director 使用 heat 来解释部署计划,并创建 overcloud 堆栈和所有下级资源。这包括使用 OpenStack Bare Metal 服务 (ironic) 置备节点。
- Heat 也会从部署计划创建软件配置。director 从这一软件配置中编译 Ansible playbook。
-
director 在 overcloud 节点上生成一个临时用户 (
tripleo-admin),专门用于进行 Ansible SSH 访问。 - director 下载 heat 软件配置,并使用 heat 输出生成一系列 Ansible playbook。
-
director 通过
ansible-playbook将 Ansible playbook 应用到 overcloud 节点。
16.2. config-download 工作目录 复制链接链接已复制到粘贴板!
ansible-playbook 命令创建 Ansible 项目目录,默认名称为 ~/config-download/overcloud。此项目目录从 heat 存储下载的软件配置。它包括需要运行 ansible-playbook 来配置 overcloud 的所有与 Ansible 相关的文件。
目录的内容包括:
-
tripleo-ansible-inventory.yaml - 包含所有 overcloud 节点的
hosts和vars的 Ansible 清单文件。 -
ansible.log - 最近运行
ansible-playbook的日志文件。 -
ansible.cfg - 运行
ansible-playbook时使用的配置文件。 -
ansible-playbook-command.sh - Executable 脚本,用于重新运行
ansible-playbook。 SSH_PRIVATE_KEY - 用于访问 overcloud 节点的私有 ssh 密钥。
- 重现 ansible-playbook
创建项目目录后,运行 ansible-playbook-command.sh 命令以重现部署。
./ansible-playbook-command.sh
$ ./ansible-playbook-command.sh
您可以使用附加参数运行脚本,如 check mode-check、限制 hosts- limit,并覆盖 variables -e。
./ansible-playbook-command.sh --check
$ ./ansible-playbook-command.sh --check
16.3. 检查 config-download 日志 复制链接链接已复制到粘贴板!
在 config-download 过程中,Ansible 在 undercloud 上的 /home/stack 目录中创建一个名为 ansible.log 的日志文件。
流程
使用
less命令查看日志:less ~/ansible.log
$ less ~/ansible.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow
16.4. 对工作目录执行 Git 操作 复制链接链接已复制到粘贴板!
config-download 工作目录是本地 Git 软件仓库。每次运行部署操作时,director 会向工作目录添加一个包含相关更改的 Git 提交。可以执行 Git 操作以查看不同阶段部署的配置,并将此配置与不同部署进行比较。
请注意工作目录的限制。例如,如果您使用 Git 恢复到早期版本的 config-download 工作目录,则此操作仅影响工作目录中的配置。不会影响以下配置:
- overcloud 数据架构: 应用上一版本的工作目录软件配置不会撤消数据迁移和架构更改。
- overcloud 的硬件布局:恢复到之前的软件配置不会撤消与 overcloud 硬件相关的更改,如扩展或缩减。
-
heat 堆栈:恢复到以前版本的工作目录不会影响 heat 堆栈中存储的配置。heat 堆栈创建软件配置的新版本,并应用到 overcloud。要对 overcloud 进行永久更改,在重新运行
openstack overcloud deploy之前修改应用到 overcloud 堆栈的环境文件。
完成以下步骤,比较 config-download 工作目录的不同提交项。
流程
更改到 overcloud 的
config-download工作目录,通常称为overcloud:cd ~/config-download/overcloud
$ cd ~/config-download/overcloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
git log命令,以列出工作目录中的提交。您也可以通过格式化日志输出来显示日期:git log --format=format:"%h%x09%cd%x09" a7e9063 Mon Oct 8 21:17:52 2018 +1000 dfb9d12 Fri Oct 5 20:23:44 2018 +1000 d0a910b Wed Oct 3 19:30:16 2018 +1000 ...
$ git log --format=format:"%h%x09%cd%x09" a7e9063 Mon Oct 8 21:17:52 2018 +1000 dfb9d12 Fri Oct 5 20:23:44 2018 +1000 d0a910b Wed Oct 3 19:30:16 2018 +1000 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,最近的提交显示在前面。
针对两个提交哈希运行
git diff,以查看部署之间的所有变化:git diff a7e9063 dfb9d12
$ git diff a7e9063 dfb9d12Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.5. 使用 config-download 的部署方法 复制链接链接已复制到粘贴板!
在 overcloud 部署上下文中有四种使用 config-download 的主要方法:
- 标准部署
-
运行
openstack overcloud deploy命令,以在置备阶段后自动运行配置阶段。这是运行openstack overcloud deploy命令时的默认方法。 - 分离置备和配置
-
使用特定选项运行
openstack overcloud deploy命令,以分离置备和配置阶段。 - 部署后运行 ansible-playbook-command.sh 脚本
-
使用结合或分离的置备和配置阶段运行
openstack overcloud deploy命令,然后运行config-download工作目录中提供的ansible-playbook-command.sh脚本,以重新应用配置阶段。 - 置备节点,手动创建 config-download,并运行 Ansible
-
使用特定选项运行
openstack overcloud deploy命令,以置备节点,然后使用deploy_steps_playbook.yamlplaybook 运行ansible-playbook命令。
16.6. 在标准部署上运行 config-download 复制链接链接已复制到粘贴板!
执行 config-download 的默认方法是运行 openstack overcloud deploy 命令。此方法适合大多数环境。
先决条件
- 成功安装 undercloud。
- overcloud 节点已准备好进行部署。
- 与特定 overcloud 自定义相关的 heat 环境文件。
步骤
-
以
stack用户身份登录 undercloud 主机。 Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行部署命令。包括 overcloud 所需的任何环境文件:
openstack overcloud deploy \ --templates \ -e environment-file1.yaml \ -e environment-file2.yaml \ ...
$ openstack overcloud deploy \ --templates \ -e environment-file1.yaml \ -e environment-file2.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待部署过程完成。
在部署过程中,director 在 ~/config-download/overcloud 工作目录中生成 config-download 文件。在部署过程完成后,查看工作目录中的 Ansible playbook,以查看为配置 overcloud 而执行的任务 director。
16.7. 使用分离的置备和配置运行 config-download 复制链接链接已复制到粘贴板!
openstack overcloud deploy 命令运行基于 heat 的置备过程,然后运行 config-download 配置过程。您还可以运行该部署命令来单独执行每个过程。使用此方法将 overcloud 节点置备为不同的过程,以便您可以在运行 overcloud 配置过程之前在节点上执行任何手动预配置任务。
先决条件
- 成功安装 undercloud。
- overcloud 节点已准备好进行部署。
- 与特定 overcloud 自定义相关的 heat 环境文件。
步骤
-
以
stack用户身份登录 undercloud 主机。 Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--stack-only选项运行部署命令。包括 overcloud 所需的任何环境文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待置备过程完成。
为
tripleo-admin用户启用从 undercloud 到 overcloud 的 SSH 访问。config-download进程使用tripleo-admin用户来执行基于 Ansible 的配置:openstack overcloud admin authorize
$ openstack overcloud admin authorizeCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在节点上执行任何手动预配置任务。如果使用 Ansible 进行配置,请使用
tripleo-admin用户来访问节点。 使用
--config-download-only选项运行部署命令。包括 overcloud 所需的环境文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待配置过程完成。
在配置阶段,director 在 ~/config-download/overcloud 工作目录中生成 config-download 文件。在部署过程完成后,查看工作目录中的 Ansible playbook,以查看为配置 overcloud 而执行的任务 director。
当您使用标准方法或单独的置备和配置过程部署 overcloud 时,director 会在 ~/config-download/overcloud 中生成工作目录。此目录包含再次运行配置过程所需的 playbook 和脚本。
先决条件
使用以下方法之一部署的 overcloud:
- 组合置备和配置流程的标准方法。
- 分离置备和配置过程。
流程
-
以
stack用户身份登录 undercloud 主机。 运行
ansible-playbook-command.sh脚本。可以将额外的 Ansible 参数传递给该脚本,再将其原封不动地传递给
ansible-playbook命令。这样便可利用 Ansible 功能,如检查模式(--check)、限制主机(--limit)或覆盖变量(-e)。例如:./ansible-playbook-command.sh --limit Controller
$ ./ansible-playbook-command.sh --limit ControllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告when-
limit用于大规模部署,只有执行中包含的主机才会添加到跨节点的 SSHknown_hosts文件中。因此,一些操作(如实时迁移)可能无法跨不在known_hosts文件中的节点工作。注意要确保
/etc/hosts文件在所有节点上都为最新版本,请以stack用户身份运行以下命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待配置过程完成。
其他信息
这个工作目录中包含一个名为
deploy_steps_playbook.yaml的 playbook,用于管理 overcloud 配置任务。要查看此 playbook,请运行以下命令:less deploy_steps_playbook.yaml
$ less deploy_steps_playbook.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这个 playbook 会使用工作目录中所含的各种任务文件。某些任务文件是所有 OpenStack 平台角色通用的,某些任务文件则特定于某些 OpenStack 平台角色和服务器。
这个工作目录中还包含与您在 overcloud 的
roles_data文件中定义的各个角色相对应的子目录。例如:ls Controller/
$ ls Controller/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 每个 OpenStack 平台角色目录中还包含相应角色类型的各个服务器的子目录。这些目录采用可组合角色主机名格式:
ls Controller/overcloud-controller-0
$ ls Controller/overcloud-controller-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow deploy_steps_playbook.yaml中的 Ansible 任务已标记。要查看完整的标记列表,在ansible-playbook中使用 CLI 选项--list-tags:ansible-playbook -i tripleo-ansible-inventory.yaml --list-tags deploy_steps_playbook.yaml
$ ansible-playbook -i tripleo-ansible-inventory.yaml --list-tags deploy_steps_playbook.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,在
ansible-playbook-command.sh脚本中通过--tags、--skip-tags或--start-at-task来应用已标记的配置:./ansible-playbook-command.sh --tags overcloud
$ ./ansible-playbook-command.sh --tags overcloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow
对 overcloud 运行
config-downloadplaybook 时,可能会收到有关每个主机的 SSH 指纹的消息。要避免这些消息,请在运行ansible-playbook-command.sh脚本时包含--ssh-common-args="-o StrictHostKeyChecking=no":./ansible-playbook-command.sh --tags overcloud --ssh-common-args="-o StrictHostKeyChecking=no"
$ ./ansible-playbook-command.sh --tags overcloud --ssh-common-args="-o StrictHostKeyChecking=no"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.9. 使用手动创建的 playbook 运行 config-download 复制链接链接已复制到粘贴板!
您可以在标准工作流之外创建自己的 config-download 文件。例如,您可以使用 --stack-only 选项运行 openstack overcloud deploy 命令以置备节点,然后单独手动应用 Ansible 配置。
先决条件
- 成功安装 undercloud。
- overcloud 节点已准备好进行部署。
- 与特定 overcloud 自定义相关的 heat 环境文件。
步骤
-
以
stack用户身份登录 undercloud 主机。 Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--stack-only选项运行部署命令。包括 overcloud 所需的环境文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待置备过程完成。
为
tripleo-admin用户启用从 undercloud 到 overcloud 的 SSH 访问。config-download进程使用tripleo-admin用户来执行基于 Ansible 的配置:openstack overcloud admin authorize
$ openstack overcloud admin authorizeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成
config-download文件:openstack overcloud deploy \ --stack overcloud --stack-only \ --config-dir ~/overcloud-deploy/overcloud/config-download/overcloud/
$ openstack overcloud deploy \ --stack overcloud --stack-only \ --config-dir ~/overcloud-deploy/overcloud/config-download/overcloud/Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
--stack指定 overcloud 的名称。 -
--stack-only可确保命令仅部署 heat 堆栈并跳过任何软件配置。 -
--config-dir指定config-download文件的位置。
-
切换到包含
config-download文件的目录:cd ~/config-download
$ cd ~/config-downloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成静态清单文件:
tripleo-ansible-inventory \ --stack <overcloud> \ --ansible_ssh_user tripleo-admin \ --static-yaml-inventory inventory.yaml
$ tripleo-ansible-inventory \ --stack <overcloud> \ --ansible_ssh_user tripleo-admin \ --static-yaml-inventory inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
用您的 overcloud 的名称替换
<overcloud>。
-
用您的 overcloud 的名称替换
使用
~/overcloud-deploy/overcloud/config-download/overcloud文件和静态清单文件来执行配置。要执行部署 playbook,请运行ansible-playbook命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意针对 overcloud 运行
config-download/overcloudplaybook 时,您可能会收到有关每个主机的 SSH 指纹的消息。要避免这些消息,在ansible:-playbook命令中包含--ssh-common-args="-o StrictHostKeyChecking=no"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待配置过程完成。
从基于 ansible 的配置手动生成
overcloudrc文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 手动将部署状态设置为成功:
openstack workflow execution create tripleo.deployment.v1.set_deployment_status_success '{"plan": "<overcloud>"}'$ openstack workflow execution create tripleo.deployment.v1.set_deployment_status_success '{"plan": "<overcloud>"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
用您的 overcloud 的名称替换
<overcloud>。
-
用您的 overcloud 的名称替换
~/overcloud-deploy/overcloud/config-download/overcloud/ 目录包含一个名为 deploy_steps_playbook.yaml 的 playbook。这个 playbook 会使用工作目录中所含的各种任务文件。有些任务文件对所有 Red Hat OpenStack Platform (RHOSP)角色通用,一些任务文件特定于某些 RHOSP 角色和服务器。
~/overcloud-deploy/overcloud/config-download/overcloud/ 目录还包含与您在 overcloud roles_data 文件中定义的各个角色对应的子目录。每个 RHOSP 角色目录还包含该角色类型的各个服务器的子目录。这些目录采用可组合角色主机名格式,如 Controller/overcloud-controller-0。
deploy_steps_playbook.yaml 中的 Ansible 任务已标记。要查看完整的标记列表,在 ansible-playbook 中使用 CLI 选项 --list-tags:
ansible-playbook -i tripleo-ansible-inventory.yaml --list-tags deploy_steps_playbook.yaml
$ ansible-playbook -i tripleo-ansible-inventory.yaml --list-tags deploy_steps_playbook.yaml
您可以使用 ansible-playbook-command.sh 脚本中的--tags ,--skip -tags , 或--start-at-task 来应用标记的配置:
16.10. config-download 的限制 复制链接链接已复制到粘贴板!
config-download 功能有一些限制:
-
在使用 ansible-playbook CLI 参数(如
--tags、--skip-tags或--start-at-task)时,请勿随意更改部署配置的运行或应用顺序。利用这些 CLI 参数,可以轻松地重新运行先前失败的任务或在初始部署的基础上进行迭代。但是,为了保证部署的一致性,您必须通过deploy_steps_playbook.yaml依序运行所有任务。 您不能将
--start-at-task参数用于在任务名称中使用变量的某些任务。例如,--start-at-task参数不适用于以下 Ansible 任务:- name: Run puppet host configuration for step {{ step }}- name: Run puppet host configuration for step {{ step }}Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果您的 overcloud 部署包含 director 部署的 Ceph Storage 集群,则在使用
--check选项时您无法跳过step1任务,除非您也跳过external_deploy_steps任务。 -
您可以使用
--forks选项设置并行 Ansible 任务的数量。但是,在 25 个并行任务后config-download操作的性能会下降。因此,--forks选项请勿超过 25。
16.11. config-download 顶层文件 复制链接链接已复制到粘贴板!
以下文件是 config-download 工作目录内的重要顶级文件。
Ansible 配置和执行。
以下文件专用于在 config-download 工作目录中配置和执行 Ansible。
- ansible.cfg
-
运行
ansible-playbook时所使用的配置文件。 - ansible.log
-
来自最近一次
ansible-playbook运行的日志文件。 - ansible-errors.json
- 包含任何部署错误的 JSON 结构文件。
- ansible-playbook-command.sh
-
从上次部署操作重新运行
ansible-playbook命令的可执行脚本。 - ssh_private_key
- Ansible 用于访问 overcloud 节点的 SSH 私钥。
- tripleo-ansible-inventory.yaml
- 包含所有 overcloud 节点的主机和变量的 Ansible 清单文件。
- overcloud-config.tar.gz
- 工作目录的存档。
Playbook
下列文件是 config-download 工作目录中的 playbook。
- deploy_steps_playbook.yaml
- 主要的部署步骤。此 playbook 为您的 overcloud 执行主要的配置操作。
- pre_upgrade_rolling_steps_playbook.yaml
- 主要升级的升级前步骤
- upgrade_steps_playbook.yaml
- 主要升级步骤。
- post_upgrade_steps_playbook.yaml
- 主要升级的升级后步骤。
- update_steps_playbook.yaml
- 次要更新步骤。
- fast_forward_upgrade_playbook.yaml
- 快进升级任务。仅在要从一个长生命版本的 Red Hat OpenStack Platform 升级到下一个版本时使用此 playbook。
16.12. config-download 标签 复制链接链接已复制到粘贴板!
playbook 使用标记的任务控制其应用到 overcloud 的任务。使用包含 ansible-playbook CLI 参数的标签 --tags 或 --skip-tags 控制要执行的任务。以下列表包含有关默认启用的标签的信息:
- facts
- fact 收集操作。
- common_roles
- 适用于所有节点的 Ansible 角色。
- overcloud
- 用于 overcloud 部署的所有 play。
- pre_deploy_steps
-
在
deploy_steps操作之前发生的部署。 - host_prep_steps
- 主机准备步骤。
- deploy_steps
- 部署步骤。
- post_deploy_steps
-
在
deploy_steps操作后进行的步骤。 - external
- 所有外部部署任务。
- external_deploy_steps
- 仅在 undercloud 中运行的外部部署任务。
16.13. config-download 部署步骤 复制链接链接已复制到粘贴板!
deploy_steps_playbook.yaml playbook 配置 overcloud。此 playbook 应用所有必需的软件配置,以基于 overcloud 部署计划部署完整的 overcloud。
本节包含此 playbook 内使用的不同 Ansible play 的总结。本节中的 play 名称是 playbook 中使用的相同名称,也显示在 ansible-playbook 输出中。本节还包含有关在每个 play 上设置的 Ansible 标签的信息。
- 从 undercloud 收集事实
为 undercloud 节点收集的 fact。
标签:
facts- 从 overcloud 收集 fact
为 overcloud 节点收集的 fact。
标签:
facts- 加载全局变量
从
global_vars.yaml加载所有变量。标签:
always- TripleO 服务器的通用角色
将常见 Ansible 角色应用于所有 overcloud 节点,包括用于安装 bootstrap 软件包的 tripleo-bootstrap 和用于配置 ssh 已知主机的 tripleo-ssh-known-hosts。
标签:
common_roles- Overcloud 部署步骤任务 - 步骤 0
从 deploy_steps_tasks 模板接口应用任务。
标签:
overcloud、deploy_steps- 服务器部署
应用特定于服务器的 heat 部署,以进行网络和基础架构数据等配置。包括 NetworkDeployment、<Role>Deployment、<Role>AllNodesDeployment,等等。
标签:
overcloud、pre_deploy_steps- 主机准备步骤
从 host_prep_steps 模板接口应用任务。
标签:
overcloud、host_prep_steps- 外部部署步骤 [1,2,3,4,5]
应用来自 external_deploy_steps_tasks 模板接口的任务。Ansible 仅针对 undercloud 节点运行这些任务。
标签:
external、external_deploy_steps- Overcloud 部署步骤任务 [1,2,3,4,5]
从 deploy_steps_tasks 模板接口应用任务。
标签:
overcloud、deploy_steps- Overcloud 通用部署步骤任务 [1,2,3,4,5]
应用每个步骤执行的常见任务,包括 puppet 主机配置
container-puppet.py和tripleo-container-manage(容器配置和管理)。标签:
overcloud、deploy_steps- 部署后服务器
5 步部署过程后执行的配置应用特定于服务器的 heat 部署。
标签:
overcloud、post_deploy_steps- 部署之后的外部部署任务
应用来自 external_post_deploy_steps_tasks 模板接口的任务。Ansible 仅针对 undercloud 节点运行这些任务。
标签:
external、external_deploy_steps
第 17 章 使用 Ansible 管理容器 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform 17.0 使用 tripleo_container_manage Ansible 角色对容器执行管理操作。您还可以编写自定义 playbook 来执行特定的容器管理操作:
-
收集 heat 生成的容器配置数据。
tripleo_container_manage角色使用此数据来编配容器部署。 - 启动容器。
- 停止容器。
- 更新容器。
- 删除容器。
- 使用特定配置运行容器。
虽然 director 会自动执行容器管理,但您可能想要自定义容器配置,或者在不重新部署 overcloud 的情况下对容器应用热修复。
此角色仅支持 Podman 容器管理。
17.1. tripleo-container-manage 角色默认值和变量 复制链接链接已复制到粘贴板!
以下摘录显示了 tripleo_container_manage Ansible 角色的默认值和变量。
17.2. tripleo-container-manage molecule 场景 复制链接链接已复制到粘贴板!
molecule 用于测试 tripleo_container_manage 角色。下面显示了一个 molecule 默认清单:
使用方法
Red Hat OpenStack 17.0 仅支持此角色中的 Podman。Docker 支持是路线图。
Molecule Ansible 角色执行以下任务:
-
收集由 TripleO Heat 模板生成的容器配置数据。此数据用作数据源。如果容器已经由
Molecule管理,无论其 present 状态如何,配置数据将根据需要重新配置容器。 -
管理
systemd关闭文件。它创建TripleO 容器 systemd服务,在关闭或启动节点时需要服务排序。它还管理netns-placeholder服务。 删除需要或需要重新配置的容器。它使用名为
needs_delete ()的自定义过滤器,它有一组规则来确定是否需要删除容器。-
如果容器不由
tripleo_ansible管理,则容器不会被删除,或者容器config_id与输入 ID 不匹配。 -
如果容器没有
config_data,或者容器具有与输入中不匹配数据的config_data,则容器将被删除。请注意,当容器被删除时,角色还会禁用并删除systemd服务和 healtchecks。
-
如果容器不由
按照
start_order容器配置定义的特定顺序创建容器,默认值为 0。-
如果容器是
exec,则运行一个专用的playbook,使用execsasync以便可以同时运行多个 exec。 -
否则,在 async 中使用
podman_container来创建容器。如果容器有一个重启策略,则会配置systemd服务。如果容器有健康检查脚本,则会配置systemd healthcheck服务。
-
如果容器是
tripleo_container_manage_concurrency 参数默认设置为 1,而值高于 2 的值可能会公开 Podman 锁定的问题。
playbook 示例:
17.3. tripleo_container_manage 角色变量 复制链接链接已复制到粘贴板!
tripleo_container_manage Ansible 角色包含以下变量:
| 名称 | 默认值 | 描述 |
|---|---|---|
| tripleo_container_manage_check_puppet_config | false |
如果您希望 Ansible 检查 Puppet 容器配置,则使用此变量。Ansible 可使用配置 hash 来识别更新的容器配置。如果容器有一个来自 Puppet 的新配置,请将此变量设置为 |
| tripleo_container_manage_cli | podman |
使用此变量设置要用于管理容器的命令行界面。 |
| tripleo_container_manage_concurrency | 1 | 使用此变量设置要同时管理的容器数量。 |
| tripleo_container_manage_config | /var/lib/tripleo-config/ | 使用此变量设置容器配置目录的路径。 |
| tripleo_container_manage_config_id | tripleo |
使用此变量设置具体配置步骤的 ID。例如,将此值设置为 |
| tripleo_container_manage_config_patterns | *.json | 使用此变量设置用于标识容器配置目录中配置文件的 bash 正则表达式。 |
| tripleo_container_manage_debug | false |
使用此变量启用或禁用调试模式。如果要使用特定的一次性配置运行容器,以调试模式运行 |
| tripleo_container_manage_healthcheck_disable | false | 使用此变量启用或禁用健康检查。 |
| tripleo_container_manage_log_path | /var/log/containers/stdouts | 使用此变量为容器设置 stdout 日志路径。 |
| tripleo_container_manage_systemd_order | false | 使用此变量启用或禁用 Ansible 的 systemd 关闭顺序。 |
| tripleo_container_manage_systemd_teardown | true | 使用此变量触发已弃用容器的清理。 |
| tripleo_container_manage_config_overrides | {} | 使用此变量覆盖任何容器配置。此变量的值来自一个字典,其中每个键都是容器名称和您要覆盖的参数,如容器镜像或用户。此变量不会将自定义覆盖写入 JSON 容器配置文件,并且任何新的容器部署、更新或升级都会恢复到 JSON 配置文件的内容。 |
| tripleo_container_manage_valid_exit_code | [] |
使用此变量检查容器是否返回退出代码。这个值必须是列表,例如 |
17.4. tripleo-container-manage healthchecks 复制链接链接已复制到粘贴板!
在 Red Hat OpenStack 17.0 之前,容器健康检查由 systemd 计时器实现,它会运行 podman exec 来确定给定容器是否健康。现在,它使用 Podman 中的原生健康检查接口,这有助于集成和使用。
要检查容器(如 keystone)是否健康,请运行以下命令:
sudo podman healthcheck run keystone
$ sudo podman healthcheck run keystone
返回代码应为 0 和 "healthy "。
17.5. tripleo-container-manage debug 复制链接链接已复制到粘贴板!
tripleo_container_manage Ansible 角色允许您对给定容器执行特定的操作。这可用于:
- 使用特定的一次性配置运行容器。
- 输出容器命令以管理容器生命周期。
- 输出 Ansible 对容器所做的更改。
要管理单个容器,您需要了解两个操作:
- 在 overcloud 部署期间,部署容器。
- 包含容器配置生成的 JSON 文件的名称。
以下是在第 1 步中 管理 HAproxy 容器的 playbook 示例,它会覆盖镜像设置:
如果 Ansible 以检查模式运行,则不会删除或创建容器,但在 playbook 的末尾会显示命令列表来显示 playbook 的可能结果。这对于调试非常有用。
ansible-playbook haproxy.yaml --check
$ ansible-playbook haproxy.yaml --check
添加 diff 模式 将显示 Ansible 将在容器上进行的更改。
ansible-playbook haproxy.yaml --check --diff
$ ansible-playbook haproxy.yaml --check --diff
tripleo_container_manage_clean_orphans 参数是可选的。可以将其设置为 false 表示孤立的容器(带有特定的 config_id )不会被删除。它可用于管理单个容器,而不影响具有同一 config_id 的其他运行中的容器。
tripleo_container_manage_config_overrides 参数是可选的,可用于覆盖特定的容器属性,如 image 或 container 用户。参数使用容器名称和要覆盖的参数创建字典。这些参数必须存在,它们会在 TripleO Heat 模板中定义容器配置。
请注意,字典不会更新 JSON 文件中的覆盖,以便在执行更新或升级时,容器将与 JSON 文件中的配置进行重新配置。
第 18 章 使用验证框架 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP)包含一个验证框架,可用于验证 undercloud 和 overcloud 的要求和功能。该框架包括两种验证类型:
-
基于 Ansible 的手动验证,您可以通过
验证命令集执行。 - 自动动态验证,在部署过程中执行。
您必须了解您要运行的验证,并跳过与您的环境无关的验证。例如,部署前验证包括对 TLS-every 的测试。如果您不想为 TLS-everyy 配置您的环境,则此测试会失败。在 validation run 命令中使用 --validation 选项来根据您的环境来进一步调整验证。
18.1. 基于 Ansible 的验证 复制链接链接已复制到粘贴板!
在安装 Red Hat OpenStack Platform (RHOSP) director 时,director 还会从 openstack-tripleo-validations 软件包安装一组 playbook。每个 playbook 包含对某些系统要求的测试,以及定义何时运行测试的一系列组:
no-op- 运行 no-op(无操作)任务的验证,以验证工作流功能正常。这些验证在 undercloud 和 overcloud 上运行。
Prep-
检查 undercloud 节点的硬件配置的验证。在运行
openstack undercloud install命令前运行这些验证。 openshift-on-openstack- 检查环境是否满足可在 OpenStack 上部署 OpenShift 的要求的验证。
pre-introspection- 使用 Ironic 检查程序进行节点内省前要运行的验证。
pre-deployment-
在
openstack overcloud deploy命令前要运行的验证。 post-deployment- 在 overcloud 部署完成后要运行的验证。
pre-upgrade- 在升级前验证 RHOSP 部署的验证。
升级后- 升级后验证 RHOSP 部署的验证。
18.2. 更改验证配置文件 复制链接链接已复制到粘贴板!
验证配置文件是一个 .ini 文件,您可以编辑该文件来控制验证执行的各个方面以及远程机器之间的通信。
您可以使用以下方法之一更改默认配置值:
- 编辑默认的 /etc/validations.cfg 文件。
-
自行复制默认的
/etc/validations.cfg文件,编辑副本,并通过 CLI 使用-config 参数提供它。如果您创建自己的配置文件副本,请将 CLI 指向每次执行 with-config 的该文件。
默认情况下,验证配置文件的位置是 /etc/validation.cfg。
确保正确编辑配置文件,或者您的验证可能会失败,并显示错误,例如:
- 未探测到的验证
- 写入不同位置的回调
- 不正确解析的日志
先决条件
- 您已全面了解如何验证您的环境。
流程
可选:制作编辑验证配置文件的副本:
-
将
/etc/validation.cfg复制到您的主目录中。 - 对新配置文件进行必要的编辑。
-
将
运行验证命令:
validation run --config <configuration-file>
$ validation run --config <configuration-file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <configuration-file> 替换为您要使用的配置文件的文件路径。
注意当您运行验证时,输出中的
Reasons列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。
18.3. 列出验证 复制链接链接已复制到粘贴板!
运行 验证列表 命令,以列出可用的不同类型的验证。
流程
source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
验证列表命令:要列出所有验证,请在没有任何选项的情况下运行命令:
validation list
$ validation listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要列出组中的验证,请使用
--group选项运行该命令:validation list --group prep
$ validation list --group prepCopy to Clipboard Copied! Toggle word wrap Toggle overflow
如需完整的选项列表,请运行 验证列表 --help。
18.4. 运行验证 复制链接链接已复制到粘贴板!
要运行验证或验证组,请使用 validation run 命令。要查看完整的选项列表,请使用 验证 run --help 命令。
当您运行验证时,输出中的 Reasons 列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。
流程
Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证名为
tripleo-ansible-inventory.yaml的静态清单文件。validation run --group pre-introspection -i tripleo-ansible-inventory.yaml
$ validation run --group pre-introspection -i tripleo-ansible-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以在
~/tripleo-deploy/<stack>目录中找到用于独立或 undercloud 部署的清单文件,也可以在用于 overcloud 部署的~/overcloud-deploy/<stack> 目录中找到清单文件。输入
验证运行命令:要运行单个验证,请输入带
--validation-name选项的命令和验证的名称。例如,要检查每个节点的内存要求,请输入--validation check-ram:validation run --validation check-ram
$ validation run --validation check-ramCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要运行多个特定的验证,请使用带有要运行的验证的逗号分隔列表的-
validation选项。有关查看可用验证列表的更多信息,请参阅 列出验证。要运行组中的所有验证,请输入带
--group选项的命令:validation run --group prep
$ validation run --group prepCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看特定验证的详细输出,请根据报告中特定验证的 UUID 运行验证
历史记录 get --full命令:validation history get --full <UUID>
$ validation history get --full <UUID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.5. 创建验证 复制链接链接已复制到粘贴板!
您可以使用验证 init 命令创建验证。执行 命令会导致新验证的基本模板。您可以编辑新的验证角色以满足您的要求。
红帽不支持用户创建的验证。
先决条件
- 您已全面了解如何验证您的环境。
- 有运行命令的目录的访问权限。
流程
创建验证:
validation init <my-new-validation>
$ validation init <my-new-validation>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<my-new-validation> 替换为新验证的名称。此命令的执行会导致创建以下目录和子目录:
/home/stack/community-validations ├── library ├── lookup_plugins ├── playbooks └── roles
/home/stack/community-validations ├── library ├── lookup_plugins ├── playbooks └── rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您看到错误消息 "The Community Validations is default disableds is disableds,请确保在验证配置文件中将
enable_community_validations参数设置为True。此文件的默认名称和位置为/etc/validation.cfg。
- 编辑角色以满足您的要求。
18.6. 查看验证历史记录 复制链接链接已复制到粘贴板!
director 在运行一个验证或一组验证后保存每个验证的结果。使用 validation history list 命令查看验证后的结果。
先决条件
- 您已运行了一个验证或一组验证。
流程
-
以
stack用户身份登录 undercloud 主机。 Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以查看所有验证列表或最新的验证:
查看所有验证的列表:
validation history list
$ validation history listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用-
validation选项查看特定验证类型的历史记录:validation history get --validation <validation-type>
$ validation history get --validation <validation-type>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将 <validation-type > 替换为验证类型,如 ntp。
查看特定验证 UUID 的日志:
validation show run --full 7380fed4-2ea1-44a1-ab71-aab561b44395
$ validation show run --full 7380fed4-2ea1-44a1-ab71-aab561b44395Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
18.7. 验证框架日志格式 复制链接链接已复制到粘贴板!
在运行一个验证或一组验证后,director 将每个验证的 JSON 格式日志保存在 /var/logs/validations 目录中。您可以手动查看文件,或使用 验证历史记录 get --full 命令显示特定验证 UUID 的日志。
每个验证日志文件都遵循特定的格式:
<UUID>_<Name>_<Time>- UUID
- 验证的 Ansible UUID。
- 名称
- 验证的 Ansible 名称。
- Time
- 运行验证时的开始日期和时间。
每个验证日志包含三个主要部分:
plays
plays 部分包含有关 director 在验证过程中执行的任务的信息:
play-
一个 play 就是一组任务。每个
play部分包含关于这一特定组任务的信息,包括开始和结束时间、持续时间、play 的主机组,以及验证 ID 和路径。 tasks-
director 为执行验证运行的个别 Ansible 任务。每个
tasks部分包含一个hosts部分,其中包含了在每个单独主机上执行的操作以及执行操作的结果。tasks部分还包含一个task部分,其中包含了任务的持续时间。
stats
stats 部分包含每个主机上所有任务结果的基本摘要,如成功和失败的任务。
validation_output
如果任何任务在验证过程中失败或导致警告消息,则 validation_output 会包含该失败或警告的输出。
18.8. 验证框架日志输出格式 复制链接链接已复制到粘贴板!
验证框架的默认行为是以 JSON 格式保存验证日志。您可以使用 ANSIBLE_STDOUT_CALLBACK 环境变量更改日志输出。
要更改验证输出日志格式,请运行验证并包含 --extra-env-vars ANSIBLE_STDOUT_CALLBACK=<callback> 选项:
validation run --extra-env-vars ANSIBLE_STDOUT_CALLBACK=<callback> --validation check-ram
$ validation run --extra-env-vars ANSIBLE_STDOUT_CALLBACK=<callback> --validation check-ram
-
将
<callback>替换为 Ansible 输出回调。要查看标准 Ansible 输出回调列表,请运行以下命令:
ansible-doc -t callback -l
$ ansible-doc -t callback -l
验证框架包括以下额外回调:
validation_json-
框架将 JSON 格式的验证结果保存为
/var/logs/validations中的日志文件。这是验证框架的默认回调。 validation_stdout- 框架在屏幕上显示 JSON 格式的验证结果。
http_json框架将 JSON 格式的验证结果发送到外部日志记录服务器。您还必须包含此回调的额外环境变量:
HTTP_JSON_SERVER- 外部服务器的 URL。
HTTP_JSON_PORT- 外部服务器的 API 入口点的端口。8989 中的默认端口。
使用额外的
--extra-env-vars选项设置这些环境变量:validation run --extra-env-vars ANSIBLE_STDOUT_CALLBACK=http_json \ --extra-env-vars HTTP_JSON_SERVER=http://logserver.example.com \ --extra-env-vars HTTP_JSON_PORT=8989 \ --validation check-ram$ validation run --extra-env-vars ANSIBLE_STDOUT_CALLBACK=http_json \ --extra-env-vars HTTP_JSON_SERVER=http://logserver.example.com \ --extra-env-vars HTTP_JSON_PORT=8989 \ --validation check-ramCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要在使用
http_json回调前,必须将http_json添加到ansible.cfg文件中的callback_whitelist参数中:callback_whitelist = http_json
callback_whitelist = http_jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
18.9. 动态验证 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP)在可组合服务模板中包括动态验证。动态验证在 overcloud 部署过程的关键步骤中验证服务操作状态。
在部署过程中自动运行动态验证。有些动态验证也使用 openstack-tripleo-validations 软件包中的角色。
第 19 章 扩展 overcloud 节点 复制链接链接已复制到粘贴板!
本发行版本中提供了此功能的内容作为 文档预览,因此不由红帽完全验证。它只用于测试,不要在生产环境中使用。
如果要在创建 overcloud 后添加或移除节点,您必须更新 overcloud。
不要使用 openstack server delete 从 overcloud 中删除节点。按照本节中的步骤正确地删除和替换节点。
在开始横向扩展或移除 overcloud 节点之前,请确保您的裸机节点未处于维护模式。
下表介绍了对每个节点类型进行扩展的支持信息:
| 节点类型 | 扩展? | 缩减? | 备注 |
| Controller | N | N | 您可以使用 第 20 章 替换 Controller 节点 中的步骤替换 Controller 节点。 |
| 计算 | Y | Y | |
| Ceph Storage 节点 | Y | N | 在初始创建的 overcloud 中必须至少有一个 Ceph Storage 节点。 |
| Object Storage 节点 | Y | Y |
在扩展 overcloud 前,请确保至少有 10 GB 的可用空间。这些可用空间将在节点置备过程中用于保存镜像转换和缓存。
19.1. 向 overcloud 添加节点 复制链接链接已复制到粘贴板!
您可以向 overcloud 添加更多节点。
Red Hat OpenStack Platform 的新安装不包括某些更新,如安全勘误和程序错误修复。因此,如果您要扩展使用红帽客户门户网站或 Red Hat Satellite Server 的连接的环境,RPM 更新不会应用到新节点。要将最新的更新应用到 overcloud 节点,您必须执行以下操作之一:
- 在 scale-out 操作后完成节点的 overcloud 更新。
-
使用
virt-customize工具,在横向扩展操作前将软件包修改为基础 overcloud 镜像。有关更多信息,请参阅红帽知识库解决方案 使用 virt-customize 修改 Red Hat Linux OpenStack Platform Overcloud 镜像。
流程
创建名为
newnodes.json的新 JSON 文件,其中包含您要注册的新节点的详情:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注册新节点:
source ~/stackrc (undercloud)$ openstack overcloud node import newnodes.json
$ source ~/stackrc (undercloud)$ openstack overcloud node import newnodes.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为每个新节点启动内省过程:
openstack overcloud node introspect \ --provide <node_1> [node_2] [node_n]
(undercloud)$ openstack overcloud node introspect \ --provide <node_1> [node_2] [node_n]Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用--
provide选项将所有指定节点在内省后重置为available状态。 -
将
<node_1>、[node_2]和所有节点(直到[node_n])替换为您要内省的每个节点的 UUID。
-
使用--
为每个新节点配置镜像属性:
openstack overcloud node configure <node>
(undercloud)$ openstack overcloud node configure <node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.2. 扩展裸机节点 复制链接链接已复制到粘贴板!
要增加现有 overcloud 中裸机节点的数量,请在 overcloud-baremetal-deploy.yaml 文件中增加节点数并重新部署 overcloud。
先决条件
- 新的裸机节点已注册、内省,并可用于调配和部署。有关更多信息,请参阅为 overcloud 注册节点,以及创建 裸机节点硬件的清单。
流程
查找
stackrcundercloud 凭据文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开用于置备裸机节点的
overcloud-baremetal-deploy.yaml节点定义文件。 增加您要扩展的角色的
count参数。例如,以下配置将 Object Storage 节点数增加到 4:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:为新节点配置预测节点放置。例如,使用以下配置在
node03上置备一个新的 Object Storage 节点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 可选:定义您要分配给新节点的任何其他属性。有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。
-
如果您使用 Object Storage 服务(swift)和整个磁盘 overcloud 镜像,
overcloud-hardened-uefi-full,请根据磁盘大小以及/var和/srv的存储要求配置/srv分区大小。如需更多信息,请参阅为对象存储服务配置整个磁盘分区。 置备 overcloud 节点:
openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
(undercloud)$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为overcloud。 -
将
<deployment_file>替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml。
-
将
在单独的终端中监控调配进度。当置备成功后,节点状态会从
available改为active:watch openstack baremetal node list
(undercloud)$ watch openstack baremetal node listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用其他环境文件将生成的
overcloud-baremetal-deployed.yaml文件添加到堆栈中,并部署 overcloud:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.3. 缩减裸机节点 复制链接链接已复制到粘贴板!
要缩减 overcloud 中的裸机节点数量,请标记您要从节点定义文件中的堆栈中删除的节点,重新部署 overcloud,然后从 overcloud 中删除裸机节点。
先决条件
- 成功安装 undercloud。有关更多信息,请参阅在 undercloud 上安装 director。
- 成功部署 overcloud。有关更多信息,请参阅 使用预置备节点配置基本 overcloud。
如果要替换 Object Storage 节点,请从您要删除的节点中复制数据到新的替换节点。等待复制通过在新节点上完成。在
/var/log/swift/swift.log文件中检查复制传递进度。在传递完成后,Object Storage 服务(swift)向日志添加类似于以下示例的条目:Mar 29 08:49:05 localhost object-server: Object replication complete. Mar 29 08:49:11 localhost container-server: Replication run OVER Mar 29 08:49:13 localhost account-server: Replication run OVER
Mar 29 08:49:05 localhost object-server: Object replication complete. Mar 29 08:49:11 localhost container-server: Replication run OVER Mar 29 08:49:13 localhost account-server: Replication run OVERCopy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
查找
stackrcundercloud 凭据文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
为您要缩减的角色减少
overcloud-baremetal-deploy.yaml文件中的count参数。 -
定义您要从堆栈中删除的每个节点的
主机名和名称(如果尚未在角色的instances属性中定义)。 将属性
provisioned: false添加到您要删除的节点。例如,要从堆栈中删除节点overcloud-objectstorage-1,请在overcloud-baremetal-deploy.yaml文件中包含以下片断:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新部署 overcloud 后,堆栈中不再存在使用
provisioned: false属性定义的节点。但是,这些节点仍然以置备状态运行。注意要从堆栈临时移除节点,请使用
provisioned: false属性部署 overcloud,然后使用provisioned: true属性重新部署 overcloud,以将节点返回到堆栈。从 overcloud 中删除节点:
openstack overcloud node delete \ --stack <stack> \ --baremetal-deployment /home/stack/templates/overcloud-baremetal-deploy.yaml
(undercloud)$ openstack overcloud node delete \ --stack <stack> \ --baremetal-deployment /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为overcloud。注意不要将您要从堆栈中删除的节点作为命令参数包括在
openstack overcloud node delete命令中。
置备 overcloud 节点,以生成更新的 heat 环境文件,以包含在部署命令中:
openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
(undercloud)$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<deployment_file>替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml。
-
将
使用其他环境文件,将 provisioning 命令生成的
overcloud-baremetal-deployed.yaml文件添加到堆栈中,并部署 overcloud:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.4. 删除或替换 Compute 节点 复制链接链接已复制到粘贴板!
在某些情况下,您需要从 overcloud 中删除计算节点。例如,需要替换有问题的 Compute 节点。当您删除 Compute 节点时,节点的索引默认添加到 denylist 中,以防止在扩展操作过程中重复使用索引。
在从 overcloud 部署中删除节点后,您可以替换删除的 Compute 节点。
先决条件
您要删除的节点上禁用了 Compute 服务,以防止节点调度新实例。要确认 Compute 服务已被禁用,请使用以下命令:
openstack compute service list
(overcloud)$ openstack compute service listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有禁用 Compute 服务,则禁用它:
openstack compute service set <hostname> nova-compute --disable
(overcloud)$ openstack compute service set <hostname> nova-compute --disableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 提示使用
--disable-reason选项添加有关为何要禁用该服务的简短说明。如果您打算重新部署 Compute 服务,这很有用。- Compute 节点上的工作负载已迁移到其他 Compute 节点。有关更多信息,请参阅在 Compute 节点间迁移虚拟机实例。
如果启用了实例 HA,请选择以下选项之一:
-
如果可以访问计算节点,请以
root用户身份登录计算节点,并使用shutdown -h now命令执行清理关闭。 如果无法访问计算节点,以
root用户身份登录控制器节点,为计算节点禁用 STONITH 设备,并关闭裸机节点:pcs stonith disable <stonith_resource_name> source stackrc openstack baremetal node power off <UUID>
[root@controller-0 ~]# pcs stonith disable <stonith_resource_name> [stack@undercloud ~]$ source stackrc [stack@undercloud ~]$ openstack baremetal node power off <UUID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
如果可以访问计算节点,请以
流程
查找 undercloud 配置:
source ~/stackrc
(overcloud)$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
为您要缩减的角色减少
overcloud-baremetal-deploy.yaml文件中的count参数。 -
定义您要从堆栈中删除的每个节点的
主机名和名称(如果尚未在角色的instances属性中定义)。 将属性
provisioned: false添加到您要删除的节点。例如,要从堆栈中删除节点overcloud-compute-1,请在overcloud-baremetal-deploy.yaml文件中包含以下片断:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新部署 overcloud 后,堆栈中不再存在使用
provisioned: false属性定义的节点。但是,这些节点仍然以置备状态运行。注意如果要临时从堆栈中删除节点,您可以使用
provisioned: false属性部署 overcloud,然后使用provisioned: true属性重新部署 overcloud,以将节点返回到堆栈。从 overcloud 中删除节点:
openstack overcloud node delete \ --stack <stack> \ --baremetal-deployment /home/stack/templates/overcloud-baremetal-deploy.yaml
(undercloud)$ openstack overcloud node delete \ --stack <stack> \ --baremetal-deployment /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为overcloud。注意不要将您要从堆栈中删除的节点作为命令参数包括在
openstack overcloud node delete命令中。
置备 overcloud 节点,以生成更新的 heat 环境文件,以包含在部署命令中:
openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
(undercloud)$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为overcloud。 -
将
<deployment_file>替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml。
-
将
如果启用了 Instance HA,请执行以下操作:
为节点清理 Pacemaker 资源:
sudo pcs resource delete <scaled_down_node> sudo cibadmin -o nodes --delete --xml-text '<node id="<scaled_down_node>"/>' sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<scaled_down_node>"/>' sudo cibadmin -o status --delete --xml-text '<node_state id="<scaled_down_node>"/>' sudo cibadmin -o status --delete-all --xml-text '<node id="<scaled_down_node>"/>' --force
$ sudo pcs resource delete <scaled_down_node> $ sudo cibadmin -o nodes --delete --xml-text '<node id="<scaled_down_node>"/>' $ sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<scaled_down_node>"/>' $ sudo cibadmin -o status --delete --xml-text '<node_state id="<scaled_down_node>"/>' $ sudo cibadmin -o status --delete-all --xml-text '<node id="<scaled_down_node>"/>' --forceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<scaled_down_node> 替换为已删除节点的名称。
-
将
删除节点的 STONITH 设备:
sudo pcs stonith delete <device-name>
$ sudo pcs stonith delete <device-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果要在 overcloud 部署中替换已删除的 Compute 节点,请参阅 替换已删除的 Compute 节点。
19.4.1. 手动删除 Compute 节点 复制链接链接已复制到粘贴板!
如果因为无法访问的节点导致 openstack overcloud node delete 命令失败,则必须从 overcloud 手动删除 Compute 节点。
先决条件
-
执行 删除或替换 Compute 节点 流程会返回
UPDATE_FAILED状态。
流程
查找 undercloud 配置:
source ~/stackrc
(overcloud)$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
openstack tripleo launch heat命令启动临时 heat 进程:openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db
(undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-dbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 命令在启动 heat 进程后退出。heat 进程将继续作为 podman pod 在后台运行。
使用
podman pod ps命令来验证ephemeral-heat进程是否正在运行:sudo podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 958b141609b2 ephemeral-heat Running 2 minutes ago 44447995dbcf 3
(undercloud)$ sudo podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 958b141609b2 ephemeral-heat Running 2 minutes ago 44447995dbcf 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
export命令导出OS_CLOUD环境:export OS_CLOUD=heat
(undercloud)$ export OS_CLOUD=heatCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
openstack stack list命令列出已安装的堆栈:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别您要删除的节点的 UUID:
openstack baremetal node list
(undercloud)$ openstack baremetal node listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将要删除的节点移至维护模式:
openstack baremetal node maintenance set <node_uuid>
(undercloud)$ openstack baremetal node maintenance set <node_uuid>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待 Compute 服务将其状态与 Bare Metal 服务同步。这最多可能需要 4 分钟。
查找 overcloud 配置:
source ~/overcloudrc
(undercloud)$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除已删除的节点的网络代理:
for AGENT in $(openstack network agent list --host <scaled_down_node> -c ID -f value) ; do openstack network agent delete $AGENT ; done
(overcloud)$ for AGENT in $(openstack network agent list --host <scaled_down_node> -c ID -f value) ; do openstack network agent delete $AGENT ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<scaled_down_node>替换为要移除的节点的名称。
-
将
确认 overcloud 上已删除节点上禁用了 Compute 服务,以防止节点调度新实例:
openstack compute service list
(overcloud)$ openstack compute service listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有禁用 Compute 服务,请禁用它:
openstack compute service set <hostname> nova-compute --disable
(overcloud)$ openstack compute service set <hostname> nova-compute --disableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将删除的 Compute 服务作为资源提供商从放置服务中移除:
openstack resource provider list openstack resource provider delete <uuid>
(overcloud)$ openstack resource provider list (overcloud)$ openstack resource provider delete <uuid>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 IdM 删除主机。如果您的 IdM 域已集成了 DNS,请使用
--updatedns选项从 DNS 中删除主机任何类型的关联记录:ipa host-del --updatedns <hostname_to_delete>
$ ipa host-del --updatedns <hostname_to_delete>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<hostname_to_delete> 替换为您要删除的主机。
-
将
- 在您要删除的 Compute 节点上,以 root 用户身份登录。
删除在 Red Hat Subscription Management 中注册的系统配置文件:
subscription-manager remove --all subscription-manager unregister subscription-manager clean
# subscription-manager remove --all # subscription-manager unregister # subscription-manager cleanCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果无法访问 Compute 节点,您可以删除红帽客户门户网站中的系统配置文件。如需更多信息,请参阅 如何删除注册到 Red Hat Subscription Management (RHSM)的系统的系统 配置文件?
查找 undercloud 配置:
source ~/stackrc
(overcloud)$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从堆栈中删除 Compute 节点:
openstack overcloud node delete --stack <overcloud> <node> --baremetal-deployment <baremetal_deployment_file>
(undercloud)$ openstack overcloud node delete --stack <overcloud> <node> --baremetal-deployment <baremetal_deployment_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<overcloud>替换为 overcloud 堆栈的名称或 UUID。 -
将 &
lt;node> 替换为您要删除的 Compute 节点的 Compute 服务主机名或 UUID。 将
<baremetal_deployment_file> 替换为裸机部署文件的名称。注意如果节点已经关闭,这个命令会返回
WARNING信息:Ansible failed, check log at `~/ansible.log` WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.
Ansible failed, check log at `~/ansible.log` WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以忽略此消息。
-
将
- 等待 overcloud 节点删除。
当节点删除完成后,检查 overcloud 栈的状态:
openstack stack list
(undercloud)$ openstack stack listCopy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表 19.2. 结果 状态 描述 UPDATE_COMPLETEdelete 操作成功完成。
UPDATE_FAILED删除操作失败。
在处于维护模式时 overcloud 节点无法删除,则问题可能与硬件相关。
如果启用了 Instance HA,请执行以下操作:
为节点清理 Pacemaker 资源:
sudo pcs resource delete <scaled_down_node> sudo cibadmin -o nodes --delete --xml-text '<node id="<scaled_down_node>"/>' sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<scaled_down_node>"/>' sudo cibadmin -o status --delete --xml-text '<node_state id="<scaled_down_node>"/>' sudo cibadmin -o status --delete-all --xml-text '<node id="<scaled_down_node>"/>' --force
$ sudo pcs resource delete <scaled_down_node> $ sudo cibadmin -o nodes --delete --xml-text '<node id="<scaled_down_node>"/>' $ sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<scaled_down_node>"/>' $ sudo cibadmin -o status --delete --xml-text '<node_state id="<scaled_down_node>"/>' $ sudo cibadmin -o status --delete-all --xml-text '<node id="<scaled_down_node>"/>' --forceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除节点的 STONITH 设备:
sudo pcs stonith delete <device-name>
$ sudo pcs stonith delete <device-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您没有替换 overcloud 上已删除的 Compute 节点,请减少包含节点数的环境文件中的
ComputeCount参数。此文件通常命名为overcloud-baremetal-deploy.yaml。例如,如果您删除了一个节点,将节点数从四个节点减小到三个节点:parameter_defaults: ... ComputeCount: 3 ...
parameter_defaults: ... ComputeCount: 3 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 减少节点数可确保 director 在运行
openstack overcloud deploy时不置备任何新节点。如果要在 overcloud 部署中替换已删除的 Compute 节点,请参阅 替换已删除的 Compute 节点。
19.4.2. 替换已删除的 Compute 节点 复制链接链接已复制到粘贴板!
要替换 overcloud 部署上已删除的 Compute 节点,您可以注册并检查新的 Compute 节点或重新添加已删除的 Compute 节点。您还必须配置 overcloud 以置备节点。
流程
可选: 要重复使用已删除 Compute 节点的索引,在删除 Compute 节点时为角色配置
RemovalPoliciesMode和RemovalPolicies来替换拒绝列表:parameter_defaults: <RoleName>RemovalPoliciesMode: update <RoleName>RemovalPolicies: [{'resource_list': []}]parameter_defaults: <RoleName>RemovalPoliciesMode: update <RoleName>RemovalPolicies: [{'resource_list': []}]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换已删除的 Compute 节点:
- 若要添加新的 Compute 节点,请注册、检查和标记新节点,以便为它做好调配准备。有关更多信息,请参阅 配置和部署 overcloud。
要重新添加您手动删除的 Compute 节点,从维护模式中删除该节点:
openstack baremetal node maintenance unset <node_uuid>
(undercloud)$ openstack baremetal node maintenance unset <node_uuid>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
重新运行用于部署现有 overcloud 的
openstack overcloud deploy命令。 - 等待部署过程完成。
确认 director 已成功注册新的 Compute 节点:
openstack baremetal node list
(undercloud)$ openstack baremetal node listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您执行了第 1 步,当计算节点被删除时,为角色将
RemovalPoliciesMode设置为update,然后您您需要为角色将RemovalPoliciesMode重新设置为默认值(append),把计算节点索引添加到当前的拒绝列表中:parameter_defaults: <RoleName>RemovalPoliciesMode: append
parameter_defaults: <RoleName>RemovalPoliciesMode: appendCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
重新运行用于部署现有 overcloud 的
openstack overcloud deploy命令。
19.5. 替换 Ceph Storage 节点 复制链接链接已复制到粘贴板!
您可以使用 director 来替换 director 创建的集群中的 Ceph Storage 节点。如需更多信息,请参阅 部署 Red Hat Ceph Storage 和 Red Hat OpenStack Platform 和 director 指南。
19.6. 使用跳过部署标识符 复制链接链接已复制到粘贴板!
在堆栈更新操作 puppet 期间,默认获取所有清单。这可能会导致耗时的操作,这不一定是必需的。
要覆盖默认操作,请使用 skip-deploy-identifier 选项。
openstack overcloud deploy --skip-deploy-identifier
openstack overcloud deploy --skip-deploy-identifier
如果您不希望部署命令为 DeployIdentifier 参数生成唯一标识符,则使用此选项。软件配置部署步骤仅当配置发生实际更改时才会触发。使用此选项要非常谨慎,仅当您确信不需要运行软件配置(如扩展某些角色)时方可使用。
如果对 puppet 清单或 hierdata 有更改,则 puppet 将重新应用所有清单,即使指定了 when --skip-deploy-identifier。
19.7. 将节点列入黑名单 复制链接链接已复制到粘贴板!
您可以阻止 overcloud 节点获得更新的部署内容。这在某些情况下非常有用,比如,您想要扩展新节点,并阻止现有节点获得核心 heat 模板集合中更新的参数和资源集合。这意味着列入黑名单的节点将完全不受栈操作的影响。
在环境文件中使用 DeploymentServerBlacklist 参数可创建黑名单。
设置黑名单
DeploymentServerBlacklist 参数是服务器名称列表。可以将其写入新的环境文件,或将参数值添加到现有的自定义环境文件,然后将此文件传递给部署命令:
parameter_defaults:
DeploymentServerBlacklist:
- overcloud-compute-0
- overcloud-compute-1
- overcloud-compute-2
parameter_defaults:
DeploymentServerBlacklist:
- overcloud-compute-0
- overcloud-compute-1
- overcloud-compute-2
参数值中的服务器名称是由 OpenStack Orchestration (heat) 规定的名称,并非实际的服务器主机名。
将此环境文件包含到 openstack overcloud deploy 命令中:
source ~/stackrc (undercloud) $ openstack overcloud deploy --templates \ -e server-blacklist.yaml \ [OTHER OPTIONS]
$ source ~/stackrc
(undercloud) $ openstack overcloud deploy --templates \
-e server-blacklist.yaml \
[OTHER OPTIONS]
heat 会将列表中的任何服务器列入黑名单,阻止其获得更新的 heat 部署内容。在栈操作完成后,黑名单中的服务器不会发生任何变化。您也可以在操作过程中关闭或停止 os-collect-config 代理。
- 将节点列入黑名单时要非常谨慎。在使用黑名单前,必须完全清楚在有黑名单的情况下如何应用所要求的更改。在使用黑名单功能时,有可能造成栈停止工作,或对 overcloud 执行不正确的配置。例如,如果集群配置更改应用到 Pacemaker 集群的所有成员,那么在执行更改时将 Pacemaker 集群的某个成员列入黑名单就会导致集群出现问题。
- 不要在更新或升级过程中使用黑名单。这些过程本身有一些方法可将更改操作与特定服务器进行隔离。
-
将服务器加入黑名单后,不允许再对这些节点进行更改操作,除非将服务器从黑名单中移除。这包括更新、升级、扩展、缩减和节点替换等操作。例如,如果在使用新的 Compute 节点扩展 overcloud 时将现有 Compute 节点列入黑名单,则列入黑名单的节点会错过添加到
/etc/hosts和/etc/ssh/ssh_known_hosts中的信息。这可能导致实时迁移失败,具体取决于目标主机。在下一次 overcloud 部署过程中,利用添加到/etc/hosts和/etc/ssh/ssh_known_hosts中的信息更新 Compute 节点,这些节点不再列入黑名单。不要手动修改/etc/hosts和/etc/ssh/ssh_known_hosts文件。要修改/etc/hosts和/etc/ssh/ssh_known_hosts文件,请运行 overcloud 部署命令,如清除黑名单一节中所述。
清除黑名单
要清除黑名单以便对其中节点执行后续的栈操作,可编辑 DeploymentServerBlacklist,使其成为空阵列:
parameter_defaults: DeploymentServerBlacklist: []
parameter_defaults:
DeploymentServerBlacklist: []
不要省略 DeploymentServerBlacklist 参数。如果省略该参数,overcloud 部署将使用先前保存的参数值。
第 20 章 替换 Controller 节点 复制链接链接已复制到粘贴板!
在一些情况下,高可用性集群中的 Controller 节点可能会出现故障。在这种情况下,您需要把这个节点从集群中删除,并替换为一个新的 Controller 节点。
完成本节中的步骤来替换 Controller 节点。在 Controller 节点替换过程中,需要运行 openstack overcloud deploy 命令,以使用替换 Controller 节点的请求来更新 overcloud。
以下操作过程仅适用于高可用性环境。在只使用一个 Controller 节点的情况下不要使用此过程。
20.1. 准备替换 Controller 节点 复制链接链接已复制到粘贴板!
在替换 overcloud 控制器节点前,务必要检查Red Hat OpenStack Platform 环境的当前状态;此检查有助于避免在替换控制器节点的过程中出现混乱。使用以下初步检查列表,确定是否可以安全地执行 Controller 节点替换。在 undercloud 上对这些检查运行所有命令。
步骤
在 undercloud 中检查
overcloud栈的当前状态:source stackrc openstack overcloud status
$ source stackrc $ openstack overcloud statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 只有
overcloud堆栈部署状态为DEPLOY_SUCCESS时才会继续。安装数据库客户端工具:
sudo dnf -y install mariadb
$ sudo dnf -y install mariadbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置数据库的 root 用户访问权限:
sudo cp /var/lib/config-data/puppet-generated/mysql/root/.my.cnf /root/.
$ sudo cp /var/lib/config-data/puppet-generated/mysql/root/.my.cnf /root/.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对 undercloud 数据库进行备份:
mkdir /home/stack/backup sudo mysqldump --all-databases --quick --single-transaction | gzip > /home/stack/backup/dump_db_undercloud.sql.gz
$ mkdir /home/stack/backup $ sudo mysqldump --all-databases --quick --single-transaction | gzip > /home/stack/backup/dump_db_undercloud.sql.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查您的 undercloud 是否包含 10 GB 可用存储,可在置备新节点时容纳镜像缓存和转换:
df -h
$ df -hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您要为新 Controller 节点重复使用 IP 地址,请确保删除旧 Controller 使用的端口:
openstack port delete <port>
$ openstack port delete <port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在运行的 Controller 节点上检查 Pacemaker 的状态。例如,运行的 Controller 节点的 IP 地址是 192.168.0.47,使用以下命令查看 Pacemaker 的状态:
ssh tripleo-admin@192.168.0.47 'sudo pcs status'
$ ssh tripleo-admin@192.168.0.47 'sudo pcs status'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示了在现有节点上运行的所有服务,以及在故障节点上停止的服务。
检查 overcloud 的 MariaDB 集群中各个节点的以下参数:
-
wsrep_local_state_comment: Synced wsrep_cluster_size: 2使用以下命令检查各个运行的 Controller 节点的这些参数。在本例中,Controller 节点 IP 地址是 192.168.0.47 和 192.168.0.46:
for i in 192.168.0.46 192.168.0.47 ; do echo "*** $i ***" ; ssh tripleo-admin@$i "sudo podman exec \$(sudo podman ps --filter name=galera-bundle -q) mysql -e \"SHOW STATUS LIKE 'wsrep_local_state_comment'; SHOW STATUS LIKE 'wsrep_cluster_size';\""; done
$ for i in 192.168.0.46 192.168.0.47 ; do echo "*** $i ***" ; ssh tripleo-admin@$i "sudo podman exec \$(sudo podman ps --filter name=galera-bundle -q) mysql -e \"SHOW STATUS LIKE 'wsrep_local_state_comment'; SHOW STATUS LIKE 'wsrep_cluster_size';\""; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
检查 RabbitMQ 状态。例如,运行的 Controller 节点的 IP 地址是 192.168.0.47,使用以下命令查看 RabbitMQ 的状态:
ssh tripleo-admin@192.168.0.47 "sudo podman exec \$(sudo podman ps -f name=rabbitmq-bundle -q) rabbitmqctl cluster_status"
$ ssh tripleo-admin@192.168.0.47 "sudo podman exec \$(sudo podman ps -f name=rabbitmq-bundle -q) rabbitmqctl cluster_status"Copy to Clipboard Copied! Toggle word wrap Toggle overflow running_nodes键应该只显示两个可用的节点,而不会显示有故障的节点。如果启用了隔离服务,则将其禁用。例如,如果 192.168.0.47 是运行中 Controller 节点的 IP 地址,则使用以下命令检查隔离服务的状态:
ssh tripleo-admin@192.168.0.47 "sudo pcs property show stonith-enabled"
$ ssh tripleo-admin@192.168.0.47 "sudo pcs property show stonith-enabled"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令可禁用隔离服务:
ssh tripleo-admin@192.168.0.47 "sudo pcs property set stonith-enabled=false"
$ ssh tripleo-admin@192.168.0.47 "sudo pcs property set stonith-enabled=false"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到失败的 Controller 节点,并停止运行的所有
novaoverlayfs 容器:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果您使用 Bare Metal Service (ironic)作为 virt 驱动程序,则必须为其
instances.host被设置为要删除的控制器的任何裸机实例手动更新单元数据库中的服务条目。联系红帽支持以获取帮助。注意当使用 Bare Metal Service (ironic)作为 virt 驱动程序时,这个单元数据库手动更新是一个临时解决方法,以确保节点被重新平衡,直到 BZ2017980 完成为止。
20.2. 删除 Ceph Monitor 守护进程 复制链接链接已复制到粘贴板!
如果您的 Controller 节点正在运行 Ceph 监控服务,请完成以下步骤以删除 ceph-mon 守护进程。
在集群中添加新的 Controller 节点,也会自动添加新的 Ceph 监控器守护进程。
流程
连接到您要替换的 Controller 节点:
ssh tripleo-admin@192.168.0.47
$ ssh tripleo-admin@192.168.0.47Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出 Ceph mon 服务:
sudo systemctl --type=service | grep ceph ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@crash.controller-0.service loaded active running Ceph crash.controller-0 for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.service loaded active running Ceph mgr.controller-0.mufglq for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mon.controller-0.service loaded active running Ceph mon.controller-0 for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@rgw.rgw.controller-0.ikaevh.service loaded active running Ceph rgw.rgw.controller-0.ikaevh for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31
$ sudo systemctl --type=service | grep ceph ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@crash.controller-0.service loaded active running Ceph crash.controller-0 for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.service loaded active running Ceph mgr.controller-0.mufglq for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mon.controller-0.service loaded active running Ceph mon.controller-0 for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@rgw.rgw.controller-0.ikaevh.service loaded active running Ceph rgw.rgw.controller-0.ikaevh for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31Copy to Clipboard Copied! Toggle word wrap Toggle overflow 停止 Ceph mon 服务:
sudo systemtctl stop ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mon.controller-0.service
$ sudo systemtctl stop ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mon.controller-0.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用 Ceph mon 服务:
sudo systemctl disable ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mon.controller-0.service
$ sudo systemctl disable ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mon.controller-0.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 从要替换的 Controller 节点断开连接。
使用 SSH 连接到同一集群中的另一个 Controller 节点:
ssh tripleo-admin@192.168.0.46
$ ssh tripleo-admin@192.168.0.46Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph 规范文件会被修改并在此流程中应用,以操作您必须导出的文件:
sudo cephadm shell --ceph orch ls --export > spec.yaml
$ sudo cephadm shell --ceph orch ls --export > spec.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群中删除该监控器:
sudo cephadm shell -- ceph mon remove controller-0 removing mon.controller-0 at [v2:172.23.3.153:3300/0,v1:172.23.3.153:6789/0], there will be 2 monitors
$ sudo cephadm shell -- ceph mon remove controller-0 removing mon.controller-0 at [v2:172.23.3.153:3300/0,v1:172.23.3.153:6789/0], there will be 2 monitorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 断开与 Controller 节点的连接,再重新登录您要从集群中删除的 Controller 节点:
ssh tripleo-admin@192.168.0.47
$ ssh tripleo-admin@192.168.0.47Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出 Ceph mgr 服务:
sudo systemctl --type=service | grep ceph ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@crash.controller-0.service loaded active running Ceph crash.controller-0 for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.service loaded active running Ceph mgr.controller-0.mufglq for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@rgw.rgw.controller-0.ikaevh.service loaded active running Ceph rgw.rgw.controller-0.ikaevh for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31
$ sudo systemctl --type=service | grep ceph ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@crash.controller-0.service loaded active running Ceph crash.controller-0 for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.service loaded active running Ceph mgr.controller-0.mufglq for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@rgw.rgw.controller-0.ikaevh.service loaded active running Ceph rgw.rgw.controller-0.ikaevh for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31Copy to Clipboard Copied! Toggle word wrap Toggle overflow 停止 Ceph mgr 服务:
sudo systemctl stop ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.service
$ sudo systemctl stop ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用 Ceph mgr 服务:
sudo systemctl disable ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.service
$ sudo systemctl disable ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
cephadmshell:sudo cephadm shell
$ sudo cephadm shellCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Controller 节点的 Ceph mgr 服务是否已从集群中移除:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 Ceph mgr 服务已被成功移除,则不会列出该节点。
导出 Red Hat Ceph Storage 规格:
ceph orch ls --export > spec.yaml
$ ceph orch ls --export > spec.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在
spec.yaml规范文件中,从service_type: mon和service_type: mgr中删除主机的所有实例,如controller-0。 重新应用 Red Hat Ceph Storage 规格:
ceph orch apply -i spec.yaml
$ ceph orch apply -i spec.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证删除的主机上没有 Ceph 守护进程:
ceph orch ps controller-0
$ ceph orch ps controller-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果存在守护进程,使用以下命令删除它们:
ceph orch host drain controller-0
$ ceph orch host drain controller-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在运行
ceph orch host drain命令之前,备份/etc/ceph的内容。在运行ceph orch host drain命令后恢复内容。您必须在运行ceph orch host drain命令前备份,直到 https://bugzilla.redhat.com/show_bug.cgi?id=2153827 被解决为止。从 Red Hat Ceph Storage 集群中删除
controller-0主机:ceph orch host rm controller-0 Removed host 'controller-0'
$ ceph orch host rm controller-0 Removed host 'controller-0'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 退出 cephadm shell:
exit
$ exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
有关使用 systemd 控制 Red Hat Ceph Storage 服务的更多信息,请参阅了解 Ceph 的进程管理
有关编辑和应用 Red Hat Ceph Storage 规格文件的更多信息 ,请参阅使用服务规格部署 Ceph 监控守护进程
20.3. 为 Controller 节点替换准备集群 复制链接链接已复制到粘贴板!
在替换节点前,请确保 Pacemaker 没有在该节点上运行,然后从 Pacemaker 集群中删除该节点。
流程
要查看 Controller 节点的 IP 地址列表,请运行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录节点并确认 pacemaker 状态。如果 pacemaker 正在运行,请使用
pcs cluster命令停止 pacemaker。本例停止overcloud-controller-0上的 pacemaker:(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs status | grep -w Online | grep -w overcloud-controller-0" (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster stop overcloud-controller-0"
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs status | grep -w Online | grep -w overcloud-controller-0" (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster stop overcloud-controller-0"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果节点物理不可用或停止,则不需要执行前面的操作,因为 pacemaker 已在该节点上停止。
在节点上停止 Pacemaker 后,从 pacemaker 集群中删除该节点。以下示例登录到
overcloud-controller-1以移除overcloud-controller-0:(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster node remove overcloud-controller-0"
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster node remove overcloud-controller-0"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要替换的节点无法访问(例如,由于硬件故障),请运行
pcs命令并使用附加--skip-offline和--force选项从集群中强制删除该节点:(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster node remove overcloud-controller-0 --skip-offline --force"
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster node remove overcloud-controller-0 --skip-offline --force"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 pacemaker 集群中删除节点后,从 pacemaker 中的已知主机列表中删除该节点:
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs host deauth overcloud-controller-0"
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs host deauth overcloud-controller-0"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 无论节点是否可访问,都可运行该命令。
要确保新 Controller 节点在替换后使用正确的 STONITH 隔离设备,请输入以下命令从节点中删除设备:
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs stonith delete <stonith_resource_name>"
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs stonith delete <stonith_resource_name>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<stonith_resource_name> 替换为与节点对应的 STONITH 资源的名称。资源名称使用<resource_agent>-<host_mac>格式。您可以在fence.yaml文件的FencingConfig部分查找资源代理和主机 MAC 地址。
-
将
overcloud 数据库必须在替换过程中继续运行。为了确保 Pacemaker 不会在此过程中停止 Galera,可选择一个运行中的 Controller 节点,然后使用该 Controller 节点的 IP 地址在 undercloud 上运行以下命令:
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs resource unmanage galera-bundle"
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs resource unmanage galera-bundle"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群中删除替换 Controller 节点的 OVN 北向数据库服务器:
获取要替换的 OVN 北向数据库服务器的服务器 ID:
ssh tripleo-admin@<controller_ip> sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Northbound 2>/dev/null|grep -A4 Servers:
$ ssh tripleo-admin@<controller_ip> sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Northbound 2>/dev/null|grep -A4 Servers:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<controller_ip>替换为任何活跃 Controller 节点的 IP 地址。您应该看到类似如下的输出:
Servers: 96da (96da at tcp:172.17.1.55:6643) (self) next_index=26063 match_index=26063 466b (466b at tcp:172.17.1.51:6643) next_index=26064 match_index=26063 last msg 2936 ms ago ba77 (ba77 at tcp:172.17.1.52:6643) next_index=26064 match_index=26063 last msg 2936 ms ago
Servers: 96da (96da at tcp:172.17.1.55:6643) (self) next_index=26063 match_index=26063 466b (466b at tcp:172.17.1.51:6643) next_index=26064 match_index=26063 last msg 2936 ms ago ba77 (ba77 at tcp:172.17.1.52:6643) next_index=26064 match_index=26063 last msg 2936 ms agoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
172.17.1.55是被替换的 Controller 节点的内部 IP 地址,因此北向数据库服务器 ID 为96da。使用您在上一步中获得的服务器 ID,运行以下命令来删除 OVN 北向数据库服务器:
ssh tripleo-admin@172.17.1.52 sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/kick OVN_Northbound 96da
$ ssh tripleo-admin@172.17.1.52 sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/kick OVN_Northbound 96daCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,您要将
172.17.1.52替换为任何活跃的 Controller 节点的 IP 地址,并将96da替换为 OVN 北向数据库服务器的服务器 ID。
从集群中移除替换 Controller 节点的 OVN 南向数据库服务器:
获取要替换的 OVN 南向数据库服务器的服务器 ID:
ssh tripleo-admin@<controller_ip> sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Southbound 2>/dev/null|grep -A4 Servers:
$ ssh tripleo-admin@<controller_ip> sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Southbound 2>/dev/null|grep -A4 Servers:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<controller_ip>替换为任何活跃 Controller 节点的 IP 地址。您应该看到类似如下的输出:
Servers: e544 (e544 at tcp:172.17.1.55:6644) last msg 42802690 ms ago 17ca (17ca at tcp:172.17.1.51:6644) last msg 5281 ms ago 6e52 (6e52 at tcp:172.17.1.52:6644) (self)
Servers: e544 (e544 at tcp:172.17.1.55:6644) last msg 42802690 ms ago 17ca (17ca at tcp:172.17.1.51:6644) last msg 5281 ms ago 6e52 (6e52 at tcp:172.17.1.52:6644) (self)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
172.17.1.55是要替换的 Controller 节点的内部 IP 地址,因此南向数据库服务器 ID 为e544。使用您在上一步中获得的服务器 ID,运行以下命令来删除 OVN 南向数据库服务器:
ssh tripleo-admin@172.17.1.52 sudo podman exec ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl cluster/kick OVN_Southbound e544
$ ssh tripleo-admin@172.17.1.52 sudo podman exec ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl cluster/kick OVN_Southbound e544Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,您要将
172.17.1.52替换为任何活跃的 Controller 节点的 IP 地址,并将e544替换为 OVN 南向数据库服务器的服务器 ID。
运行以下清理命令以防止重新加入集群。
将
<replaced_controller_ip>替换为您要替换的 Controller 节点的 IP 地址:ssh tripleo-admin@<replaced_controller_ip> sudo systemctl disable --now tripleo_ovn_cluster_south_db_server.service tripleo_ovn_cluster_north_db_server.service ssh tripleo-admin@<replaced_controller_ip> sudo rm -rfv /var/lib/openvswitch/ovn/.ovn* /var/lib/openvswitch/ovn/ovn*.db
$ ssh tripleo-admin@<replaced_controller_ip> sudo systemctl disable --now tripleo_ovn_cluster_south_db_server.service tripleo_ovn_cluster_north_db_server.service $ ssh tripleo-admin@<replaced_controller_ip> sudo rm -rfv /var/lib/openvswitch/ovn/.ovn* /var/lib/openvswitch/ovn/ovn*.dbCopy to Clipboard Copied! Toggle word wrap Toggle overflow
20.4. 替换 bootstrap Controller 节点 复制链接链接已复制到粘贴板!
如果要替换用于 bootstrap 操作的 Controller 节点并保留节点名称,请完成以下步骤,以在替换过程后设置 bootstrap Controller 节点的名称。
目前,当替换 bootstrap Controller 节点时,OVN 数据库集群将分区为北向和南向数据库的两个数据库集群。这种情形使得实例变得不可用。
要查找 bootstrap Controller 节点的名称,请运行以下命令:
ssh tripleo-admin@<controller_ip> "sudo hiera -c /etc/puppet/hiera.yaml ovn_dbs_short_bootstrap_node_name"
ssh tripleo-admin@<controller_ip> "sudo hiera -c /etc/puppet/hiera.yaml ovn_dbs_short_bootstrap_node_name"
临时解决方案:不要为新 Controller 节点重复使用原始 bootstrap 节点主机名和 IP 地址。RHOSP director 对主机名进行排序,然后选择列表中的第一个主机名作为 bootstrap 节点。为新 Controller 节点选择一个名称,使其在排序后不会成为第一个主机名。
您可以在 BZ 2222543 中跟踪此已知问题的修复进度。
流程
运行以下命令,查找 bootstrap Controller 节点的名称:
ssh tripleo-admin@<controller_ip> "sudo hiera -c /etc/puppet/hiera.yaml pacemaker_short_bootstrap_node_name"
ssh tripleo-admin@<controller_ip> "sudo hiera -c /etc/puppet/hiera.yaml pacemaker_short_bootstrap_node_name"Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<controller_ip>替换为任何活跃 Controller 节点的 IP 地址。
-
将
检查您的环境文件是否包含
ExtraConfig部分。如果ExtraConfig参数不存在,请创建以下环境文件~/templates/bootstrap-controller.yaml并添加以下内容:parameter_defaults: ExtraConfig: pacemaker_short_bootstrap_node_name: NODE_NAME mysql_short_bootstrap_node_name: NODE_NAMEparameter_defaults: ExtraConfig: pacemaker_short_bootstrap_node_name: NODE_NAME mysql_short_bootstrap_node_name: NODE_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
NODE_NAME替换为在替换过程后您要在 bootstrap 操作中使用的现有 Controller 节点的名称。如果您的环境文件已经包含
ExtraConfig参数,请只添加设置pacemaker_short_bootstrap_node_name和mysql_short_bootstrap_node_name参数的行。
有关对 bootstrap Controller 节点替换进行故障排除的信息,请参阅文章如果相同的主机名用于新节点,则第 1 步中替换第一个 Controller 节点会失败。
20.5. 取消置备和删除 Controller 节点 复制链接链接已复制到粘贴板!
要取消置备和删除 Controller 节点,请完成以下步骤。
流程
Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 识别
overcloud-controller-0节点的 UUID:NODE=$(metalsmith -c UUID -f value show overcloud-controller-0)
(undercloud)$ NODE=$(metalsmith -c UUID -f value show overcloud-controller-0)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 把节点设为维护模式:
openstack baremetal node maintenance set $NODE
$ openstack baremetal node maintenance set $NODECopy to Clipboard Copied! Toggle word wrap Toggle overflow 复制
overcloud-baremetal-deploy.yaml文件:cp /home/stack/templates/overcloud-baremetal-deploy.yaml /home/stack/templates/unprovision_controller-0.yaml
$ cp /home/stack/templates/overcloud-baremetal-deploy.yaml /home/stack/templates/unprovision_controller-0.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
unprovision_controller-0.yaml文件中,将 Controller 计数降低,以取消置备您要替换的 Controller 节点。在本例中,计数从3减小到2。将controller-0节点移到实例字典中,并将provisioned参数设置为false:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
node unprovision命令:openstack overcloud node delete \ --stack overcloud \ --baremetal-deployment /home/stack/templates/unprovision_controller-0.yaml
$ openstack overcloud node delete \ --stack overcloud \ --baremetal-deployment /home/stack/templates/unprovision_controller-0.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
选填
删除 ironic 节点:
openstack baremetal node delete <IRONIC_NODE_UUID>
$ openstack baremetal node delete <IRONIC_NODE_UUID>
-
将
IRONIC_NODE_UUID替换为节点的 UUID。
20.6. 将新控制器节点部署到 overcloud 复制链接链接已复制到粘贴板!
要将新控制器节点部署到 overcloud,请完成以下步骤。
先决条件
- 必须注册、检查并标记新的 Controller 节点以进行置备。如需更多信息,请参阅置备裸机 overcloud 节点
流程
登录到 director 并提供
stackrc凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用原始
overcloud-baremetal-deploy.yaml环境文件置备 overcloud:openstack overcloud node provision --stack overcloud --network-config --output /home/stack/templates/overcloud-baremetal-deployed.yaml /home/stack/templates/overcloud-baremetal-deploy.yaml
$ openstack overcloud node provision --stack overcloud --network-config --output /home/stack/templates/overcloud-baremetal-deployed.yaml /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果要使用相同的调度、放置或 IP 地址,您可以编辑
overcloud-baremetal-deploy.yaml环境文件。在instances部分中,设置新 controller-0 实例的主机名、名称和网络。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 置备节点时,从
overcloud-baremetal-deploy.yaml文件中删除instances部分。要在新 Controller 节点上创建
cephadm用户,请导出包含新主机信息的基本 Ceph 规格:openstack overcloud ceph spec --stack overcloud \ /home/stack/templates/overcloud-baremetal-deployed.yaml \ -o ceph_spec_host.yaml
$ openstack overcloud ceph spec --stack overcloud \ /home/stack/templates/overcloud-baremetal-deployed.yaml \ -o ceph_spec_host.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您的环境使用自定义角色,请包含 the
-roles-data选项。将
cephadm用户添加到新 Controller 节点:openstack overcloud ceph user enable \ --stack overcloud ceph_spec_host.yaml
$ openstack overcloud ceph user enable \ --stack overcloud ceph_spec_host.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将新角色添加到 Ceph 集群:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将 <IP_ADDRESS> 替换为 Controller 节点的 IP 地址。
- 将 <LABELS> 替换为任何所需的 Ceph 标签。
重新运行
openstack overcloud deploy命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果替换的 Controller 节点是 bootstrap 节点,请包含
bootstrap_node.yaml环境文件。
20.7. 在新控制器节点上部署 Ceph 服务 复制链接链接已复制到粘贴板!
在置备新的 Controller 节点和 Ceph 监控服务运行后,您可以在 Controller 节点上部署 mgr、rgw 和 osd Ceph 服务。
先决条件
- 新 Controller 节点已置备,并运行 Ceph 监控服务。
流程
修改
spec.yml环境文件,将以前的 Controller 节点名称替换为新的 Controller 节点名称:cephadm shell -- ceph orch ls --export > spec.yml
$ cephadm shell -- ceph orch ls --export > spec.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意不要使用基本的 Ceph 环境文件
ceph_spec_host.yaml,因为它不包含所有必要的集群信息。应用修改后的 Ceph 规格文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证新监控器的可见性:
sudo cephadm --ceph status
$ sudo cephadm --ceph statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow
.
20.8. Controller 节点替换后清理 复制链接链接已复制到粘贴板!
完成节点替换后,您可以完成 Controller 集群。
流程
- 登录 Controller 节点。
启用 Galera 集群的 Pacemaker 管理,并在新节点上启动 Galera:
sudo pcs resource refresh galera-bundle sudo pcs resource manage galera-bundle
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource refresh galera-bundle [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource manage galera-bundleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用隔离:
sudo pcs property set stonith-enabled=true
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs property set stonith-enabled=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 执行最后的状态检查来确保服务在正确运行:
sudo pcs status
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果有任何服务失败,请使用
pcs resource refresh命令来解决问题并重新启动失败的服务。退出 director:
exit
[tripleo-admin@overcloud-controller-0 ~]$ exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查找
overcloudrc文件,以便您可以跟 overcloud 交互:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 overcloud 环境中的网络代理:
(overcloud) $ openstack network agent list
(overcloud) $ openstack network agent listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果出现任何旧节点的代理,请删除它们:
(overcloud) $ for AGENT in $(openstack network agent list --host overcloud-controller-1.localdomain -c ID -f value) ; do openstack network agent delete $AGENT ; done
(overcloud) $ for AGENT in $(openstack network agent list --host overcloud-controller-1.localdomain -c ID -f value) ; do openstack network agent delete $AGENT ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如有必要,将您的路由器添加到新节点上的 3 层代理主机。使用以下示例命令,通过 UUID 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 将名为
r1的路由器添加到 L3 代理中:(overcloud) $ openstack network agent add router --l3 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 r1
(overcloud) $ openstack network agent add router --l3 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 r1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 清理 Cinder 服务。
列出 cinder 服务:
(overcloud) $ openstack volume service list
(overcloud) $ openstack volume service listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到控制器节点,连接到
cinder-api容器,并使用cinder-manage service remove命令删除 leftover 服务:sudo podman exec -it cinder_api cinder-manage service remove cinder-backup <host> sudo podman exec -it cinder_api cinder-manage service remove cinder-scheduler <host>
[tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it cinder_api cinder-manage service remove cinder-backup <host> [tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it cinder_api cinder-manage service remove cinder-scheduler <host>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
清理 RabbitMQ 集群。
- 登录 Controller 节点。
使用
podman exec命令启动 bash,并验证 RabbitMQ 集群的状态:podman exec -it rabbitmq-bundle-podman-0 bash rabbitmqctl cluster_status
[tripleo-admin@overcloud-controller-0 ~]$ podman exec -it rabbitmq-bundle-podman-0 bash [tripleo-admin@overcloud-controller-0 ~]$ rabbitmqctl cluster_statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
rabbitmqctl命令忘记替代的控制器节点:rabbitmqctl forget_cluster_node <node_name>
[tripleo-admin@overcloud-controller-0 ~]$ rabbitmqctl forget_cluster_node <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
如果替换了 bootstrap Controller 节点,则必须在替换过程后移除环境文件
~/templates/bootstrap-controller.yaml,或者从现有环境文件中移除pacemaker_short_bootstrap_node_name和mysql_short_bootstrap_node_name参数。此步骤可防止 director 在后续替换中尝试覆盖 Controller 节点名称。如需更多信息,请参阅 替换 bootstrap Controller 节点。 如果在 overcloud 上使用 Object Storage 服务(swift),则必须在更新 overcloud 节点后同步 swift 环。使用类似以下示例的脚本,将之前存在的 Controller 节点(本例中为 Controller 节点 0)中的 ring 文件分发到所有 Controller 节点,并重启这些节点上的 Object Storage 服务容器:
#!/bin/sh set -xe SRC="tripleo-admin@overcloud-controller-0.ctlplane" ALL="tripleo-admin@overcloud-controller-0.ctlplane tripleo-admin@overcloud-controller-1.ctlplane tripleo-admin@overcloud-controller-2.ctlplane"
#!/bin/sh set -xe SRC="tripleo-admin@overcloud-controller-0.ctlplane" ALL="tripleo-admin@overcloud-controller-0.ctlplane tripleo-admin@overcloud-controller-1.ctlplane tripleo-admin@overcloud-controller-2.ctlplane"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取当前的 ring 文件集合:
ssh "${SRC}" 'sudo tar -czvf - /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift/{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gzssh "${SRC}" 'sudo tar -czvf - /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift/{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将环上传到所有节点,将它们置于正确的位置,然后重新启动 swift 服务:
for DST in ${ALL}; do cat swift-rings.tar.gz | ssh "${DST}" 'sudo tar -C / -xvzf -' ssh "${DST}" 'sudo podman restart swift_copy_rings' ssh "${DST}" 'sudo systemctl restart tripleo_swift*' donefor DST in ${ALL}; do cat swift-rings.tar.gz | ssh "${DST}" 'sudo tar -C / -xvzf -' ssh "${DST}" 'sudo podman restart swift_copy_rings' ssh "${DST}" 'sudo systemctl restart tripleo_swift*' doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 21 章 重新引导节点 复制链接链接已复制到粘贴板!
您可能需要在 undercloud 和 overcloud 中重新引导节点。使用以下步骤了解如何重新引导不同的节点类型。
- 如果重新引导一个角色中的所有节点,建议单独重新引导各节点。如果您同时重新引导角色中的所有节点,在重新引导操作过程中可能会发生服务停机。
- 如果重新引导 OpenStack Platform 环境中的所有节点,则按照以下顺序重新引导节点:
建议的节点重新引导顺序
- 重新引导 undercloud 节点。
- 重新引导 Controller 节点和其他可组合节点。
- 重新引导独立 Ceph MON 节点。
- 重新引导 Ceph Storage 节点。
- 重新引导 Object Storage 服务(swift)节点。
- 重新引导 Compute 节点。
21.1. 重新引导 undercloud 节点 复制链接链接已复制到粘贴板!
完成以下步骤以重新引导 undercloud 节点。
步骤
-
以
stack用户的身份登录 undercloud。 重新引导 undercloud:
sudo reboot
$ sudo rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 稍等片刻,直到节点启动。
21.2. 重新引导 Controller 和可组合节点 复制链接链接已复制到粘贴板!
根据可组合角色重新引导 Controller 节点和独立节点,并排除 Compute 节点和 Ceph Storage 节点。
流程
- 登录您要重新引导的节点。
可选:如果节点使用 Pacemaker 资源,请停止集群:
sudo pcs cluster stop
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs cluster stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新引导节点:
sudo reboot
[tripleo-admin@overcloud-controller-0 ~]$ sudo rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 稍等片刻,直到节点启动。
验证
验证这些服务是否已启用。
如果该节点使用 Pacemaker 服务,请检查该节点是否已重新加入集群:
sudo pcs status
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果该节点使用 Systemd 服务,请检查是否所有服务都已启用:
sudo systemctl status
[tripleo-admin@overcloud-controller-0 ~]$ sudo systemctl statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果该节点使用容器化服务,则检查节点上的所有容器是否已激活:
sudo podman ps
[tripleo-admin@overcloud-controller-0 ~]$ sudo podman psCopy to Clipboard Copied! Toggle word wrap Toggle overflow
21.3. 重新引导独立 Ceph MON 节点 复制链接链接已复制到粘贴板!
完成以下步骤以重新引导独立 Ceph MON 节点。
步骤
- 登录到一个 Ceph MON 节点。
重新引导节点:
sudo reboot
$ sudo rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待节点被引导并重新加入 MON 集群。
对集群中的每个 MON 节点重复这些步骤。
21.4. 重新引导 Ceph Storage (OSD) 集群 复制链接链接已复制到粘贴板!
完成以下步骤以重新引导 Ceph Storage (OSD) 节点集群。
先决条件
在运行
ceph-mon服务的 Ceph 监控器或 Controller 节点上,检查 Red Hat Ceph Storage 集群状态是否健康,并且 pg 状态为active+clean:sudo cephadm -- shell ceph status
$ sudo cephadm -- shell ceph statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 Ceph 集群处于健康状态,它会返回
HEALTH_OK状态。如果 Ceph 集群状态不健康,它会返回
HEALTH_WARN或HEALTH_ERR的状态。有关故障排除指南,请参阅 Red Hat Ceph Storage 5 故障排除指南。
流程
登录到运行
ceph-mon服务的 Ceph Monitor 或 Controller 节点,并临时禁用 Ceph Storage 集群重新平衡:sudo cephadm shell -- ceph osd set noout sudo cephadm shell -- ceph osd set norebalance
$ sudo cephadm shell -- ceph osd set noout $ sudo cephadm shell -- ceph osd set norebalanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您有 multistack 或分布式计算节点(DCN)架构,您必须在设置
noout和norebalance标志时指定 Ceph 集群名称。例如:sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring。- 选择第一个要重新引导的 Ceph Storage 节点并登录到该节点。
重新引导节点:
sudo reboot
$ sudo rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 稍等片刻,直到节点启动。
登录节点并检查 Ceph 集群状态:
sudo cephadm -- shell ceph status
$ sudo cephadm -- shell ceph statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确认
pgmap报告的所有pgs的状态是否都正常 (active+clean)。- 注销节点,重新引导下一个节点,并检查其状态。重复此过程,直到您已重新引导所有 Ceph Storage 节点。
完成后,登录到运行
ceph-mon服务的 Ceph Monitor 或 Controller 节点,并启用 Ceph 集群重新平衡:sudo cephadm shell -- ceph osd unset noout sudo cephadm shell -- ceph osd unset norebalance
$ sudo cephadm shell -- ceph osd unset noout $ sudo cephadm shell -- ceph osd unset norebalanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您有 multistack 或分布式计算节点(DCN)架构,您必须在取消设置
noout和norebalance标志时指定 Ceph 集群名称。例如:sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring执行最后的状态检查,确认集群报告
HEALTH_OK:sudo cephadm shell ceph status
$ sudo cephadm shell ceph statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow
21.5. 重新引导 Object Storage 服务 (swift) 节点 复制链接链接已复制到粘贴板!
以下流程重启 Object Storage 服务(swift)节点。对集群中的每个对象存储节点完成以下步骤。
流程
- 登录 Object Storage 节点。
重新引导节点:
sudo reboot
$ sudo rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 稍等片刻,直到节点启动。
- 对集群中的每个对象存储节点重复重新引导。
21.6. 重新引导 Compute 节点 复制链接链接已复制到粘贴板!
为确保 Red Hat OpenStack Platform 环境中 实例的停机时间最少,迁移实例工作流 概述了从您要重新引导的 Compute 节点迁移实例所需的步骤。
迁移实例工作流
- 决定是否在重新引导节点前将实例迁移到另一个 Compute 节点。
- 选择并禁用您要重新引导的 Compute 节点,使其不置备新实例。
- 将实例迁移到另一个 Compute 节点中。
- 重新引导空的 Compute 节点。
- 启用空的 Compute 节点。
先决条件
重启 Compute 节点之前,必须决定是否在节点重启过程中将实例迁移到另一个 Compute 节点。
查看在 Compute 节点间迁移虚拟机实例时可能会遇到的迁移约束列表。如需更多信息,请参阅为实例创建配置 Compute Service 中的迁移限制。
如果您无法迁移实例,则可设置以下核心模板参数以在 Compute 节点重启后控制实例的状态:
NovaResumeGuestsStateOnHostBoot-
确定重新引导后是否将实例返回 Compute 节点上的相同状态。设为
False时,实例保持关闭,必须手动启动。默认值为False。 NovaResumeGuestsShutdownTimeout重启前等待实例被关闭的时间(以秒为单位)。建议不要将此值设置为
0。默认值为300。有关 overcloud 参数及其用法的更多信息,请参阅 Overcloud 参数。
流程
-
以
stack用户的身份登录 undercloud。 列出所有的 Compute 节点及其 UUID:
source ~/stackrc (undercloud) $ metalsmith list | grep compute
$ source ~/stackrc (undercloud) $ metalsmith list | grep computeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 识别您要重新引导的 Compute 节点的 UUID。
在 overcloud 中,选择一个 Compute 节点并禁用它:
source ~/overcloudrc (overcloud)$ openstack compute service list (overcloud)$ openstack compute service set <hostname> nova-compute --disable
$ source ~/overcloudrc (overcloud)$ openstack compute service list (overcloud)$ openstack compute service set <hostname> nova-compute --disableCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<hostname> 替换为 Compute 节点的主机名。
-
将
列出 Compute 节点上的所有实例:
openstack server list --host <hostname> --all-projects
(overcloud)$ openstack server list --host <hostname> --all-projectsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 要将实例迁移到另一个 Compute 节点,请完成以下步骤:
如果您决定将实例迁移至另一个 Compute 节点,则使用以下命令之一:
要将实例迁移到其他主机,请运行以下命令:
(overcloud) $ openstack server migrate <instance_id> --live <target_host> --wait
(overcloud) $ openstack server migrate <instance_id> --live <target_host> --waitCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<instance_id> 替换为您的实例 ID。 -
将
<target_host> 替换为您要将实例迁移到的主机。
-
将
让
nova-scheduler自动选择目标主机:(overcloud) $ nova live-migration <instance_id>
(overcloud) $ nova live-migration <instance_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 一次性实时迁移所有实例:
nova host-evacuate-live <hostname>
$ nova host-evacuate-live <hostname>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意nova命令可能会引发一些弃用警告,这些警告信息可以被安全忽略。
- 稍等片刻,直至迁移完成。
确认迁移成功完成:
(overcloud) $ openstack server list --host <hostname> --all-projects
(overcloud) $ openstack server list --host <hostname> --all-projectsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 继续迁移实例,直到 Compute 节点上没有剩余的实例。
登录到 Compute 节点并重新引导节点:
sudo reboot
[tripleo-admin@overcloud-compute-0 ~]$ sudo rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 稍等片刻,直到节点启动。
重新启用 Compute 节点:
source ~/overcloudrc (overcloud) $ openstack compute service set <hostname> nova-compute --enable
$ source ~/overcloudrc (overcloud) $ openstack compute service set <hostname> nova-compute --enableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确认是否已启用 Compute 节点:
(overcloud) $ openstack compute service list
(overcloud) $ openstack compute service listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 22 章 关闭并启动 undercloud 和 overcloud 复制链接链接已复制到粘贴板!
如果必须对 undercloud 和 overcloud 执行维护,您必须按照特定顺序关闭和启动 undercloud 和 overcloud 节点,以确保启动 overcloud 时出现的问题很少。
先决条件
- 运行 undercloud 和 overcloud
22.1. undercloud 和 overcloud 关闭顺序 复制链接链接已复制到粘贴板!
要关闭 Red Hat OpenStack Platform 环境,您必须按照以下顺序关闭 overcloud 和 undercloud:
- 关闭 overcloud Compute 节点上的实例
- 关闭 Compute 节点
- 停止 Controller 节点上的所有高可用性和 OpenStack Platform 服务
- 关闭 Ceph Storage 节点
- 关闭 Controller 节点
- 关闭 undercloud
22.2. 关闭 overcloud Compute 节点上的实例 复制链接链接已复制到粘贴板!
作为关闭 Red Hat OpenStack Platform 环境的一部分,在关闭 Compute 节点之前关闭 Compute 节点上的所有实例。
先决条件
- 具有活跃 Compute 服务的 overcloud
步骤
-
以
stack用户身份登录 undercloud。 提供 overcloud 的凭据文件:
source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看 overcloud 中运行的实例:
openstack server list --all-projects
$ openstack server list --all-projectsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 停止 overcloud 中的每个实例:
openstack server stop <INSTANCE>
$ openstack server stop <INSTANCE>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对每个实例重复这一步,直到停止 overcloud 中的所有实例。
22.3. 关闭 Compute 节点 复制链接链接已复制到粘贴板!
作为关闭 Red Hat OpenStack Platform 环境的一部分,登录并关闭每个 Compute 节点。
先决条件
- 关闭 Compute 节点上的所有实例:
步骤
-
以
root用户身份登录 Compute 节点。 关闭该节点:
shutdown -h now
# shutdown -h nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 对每个 Compute 节点执行这些步骤,直到关闭所有 Compute 节点。
22.4. 停止 Controller 节点上的服务 复制链接链接已复制到粘贴板!
作为关闭 Red Hat OpenStack Platform 环境的一部分,在关闭 Controller 节点前停止节点上的服务。这包括 Pacemaker 和 systemd 服务。
先决条件
- 具有活跃 Pacemaker 服务的 overcloud
步骤
-
以
root用户身份登录 Controller 节点。 停止 Pacemaker 集群。
pcs cluster stop --all
# pcs cluster stop --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令停止所有节点上的集群。
等待 Pacemaker 服务停止并检查服务是否已停止。
检查 Pacemaker 状态:
pcs status
# pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Podman 中没有 Pacemaker 服务在运行:
podman ps --filter "name=.*-bundle.*"
# podman ps --filter "name=.*-bundle.*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
停止 Red Hat OpenStack Platform 服务:
systemctl stop 'tripleo_*'
# systemctl stop 'tripleo_*'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待服务停止,检查 Podman 中服务不再运行:
podman ps
# podman psCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.5. 关闭 Ceph Storage 节点 复制链接链接已复制到粘贴板!
作为关闭 Red Hat OpenStack Platform 环境的一部分,禁用 Ceph Storage 服务,然后登录并关闭每个 Ceph Storage 节点。
先决条件
- 正常运行的 Ceph Storage 集群
- Ceph MON 服务在单机 Ceph MON 节点或 Controller 节点上运行
步骤
-
以
root用户身份登录运行 Ceph MON 服务的节点,如 Controller 节点或单机 Ceph MON 节点。 检查集群的运行状况。在以下示例中,
podman命令在 Controller 节点上的 Ceph MON 容器中运行状态检查:sudo podman exec -it ceph-mon-controller-0 ceph status
# sudo podman exec -it ceph-mon-controller-0 ceph statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确保状态为
HEALTH_OK。为集群设置
noout、norecover、norebalance、nobackfill、nodown和pause标志。在以下示例中,podman命令通过 Controller 节点上的 Ceph MON 容器设置这些标志:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 关闭每个 Ceph Storage 节点:
-
以
root用户身份登录 Ceph Storage 节点。 关闭该节点:
shutdown -h now
# shutdown -h nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 对每个 Ceph Storage 节点执行这些步骤,直到关闭所有 Ceph Storage 节点。
-
以
关闭任何单机 Ceph MON 节点:
-
以
root用户身份登录单机 Ceph MON 节点。 关闭该节点:
shutdown -h now
# shutdown -h nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 对每个单机 Ceph MON 节点执行这些步骤,直到关闭所有单机 Ceph MON 节点。
-
以
22.6. 关闭 Controller 节点 复制链接链接已复制到粘贴板!
作为关闭 Red Hat OpenStack Platform 环境的一部分,登录并关闭每个 Controller 节点。
先决条件
- 停止 Pacemaker 集群
- 停止 Controller 节点上的所有 Red Hat OpenStack Platform 服务
步骤
-
以
root用户身份登录 Controller 节点。 关闭该节点:
shutdown -h now
# shutdown -h nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 对每个 Controller 节点执行这些步骤,直到关闭所有 Controller 节点。
22.7. 关闭 undercloud 复制链接链接已复制到粘贴板!
作为关闭 Red Hat OpenStack Platform 环境的一部分,登录到 undercloud 节点并关闭 undercloud。
先决条件
- 正在运行的 undercloud
步骤
-
以
stack用户身份登录 undercloud。 关闭 undercloud:
sudo shutdown -h now
$ sudo shutdown -h nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.8. 执行系统维护 复制链接链接已复制到粘贴板!
在完全关闭 undercloud 和 overcloud 后,对环境中的系统执行任何维护,然后启动 undercloud 和 overcloud。
22.9. undercloud 和 overcloud 启动顺序 复制链接链接已复制到粘贴板!
要启动 Red Hat OpenStack Platform 环境,您必须按照以下顺序启动 undercloud 和 overcloud:
- 启动 undercloud。
- 启动 Controller 节点。
- 启动 Ceph Storage 节点。
- 启动 Compute 节点。
- 启动 overcloud Compute 节点上的实例。
22.10. 启动 undercloud 复制链接链接已复制到粘贴板!
作为启动 Red Hat OpenStack Platform 环境的一部分,启动 undercloud 节点,登录到 undercloud,再检查 undercloud 服务。
先决条件
- undercloud 已关机。
流程
- 打开 undercloud 并等待 undercloud 引导。
验证
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 undercloud 上的服务:
systemctl list-units 'tripleo_*'
$ systemctl list-units 'tripleo_*'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证名为
tripleo-ansible-inventory.yaml的静态清单文件:validation run --group pre-introspection -i <inventory_file>
$ validation run --group pre-introspection -i <inventory_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<inventory_file> 替换为 Ansible 清单文件的名称和位置,如~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml。注意当您运行验证时,输出中的
Reasons列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。
检查所有服务和容器是否都活跃且健康:
validation run --validation service-status --limit undercloud -i <inventory_file>
$ validation run --validation service-status --limit undercloud -i <inventory_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
22.11. 启动 Controller 节点 复制链接链接已复制到粘贴板!
作为启动 Red Hat OpenStack Platform 环境的一部分,打开每个 Controller 节点电源,并检查节点上的非 Pacemaker 服务。
先决条件
- Controller 节点已关机。
流程
- 打开每个 Controller 节点电源。
验证
-
以
root用户身份登录每个 Controller 节点。 检查 Controller 节点上的服务:
systemctl -t service
$ systemctl -t serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 只有基于非 Pacemaker 的服务正在运行。
等待 Pacemaker 服务启动并检查服务是否已启动:
pcs status
$ pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您的环境使用 Instance HA,Pacemaker 资源在启动 Compute 节点之前不会启动,或使用
pcs stonith confirm <compute_node>命令手动取消fence 操作。您必须在使用 Instance HA 的每个 Compute 节点上运行此命令。
22.12. 启动 Ceph Storage 节点 复制链接链接已复制到粘贴板!
作为启动 Red Hat OpenStack Platform 环境的一部分,打开 Ceph MON 和 Ceph Storage 节点电源,并启用 Ceph Storage 服务。
先决条件
- 已关闭电源的 Ceph Storage 集群
- Ceph MON 服务在已关闭电源的单机 Ceph MON 节点或已打开电源的 Controller 节点上启用
步骤
- 如果您的环境有单机 Ceph MON 节点,请打开每个 Ceph MON 节点电源。
- 打开每个 Ceph Storage 节点电源。
-
以
root用户身份登录运行 Ceph MON 服务的节点,如 Controller 节点或单机 Ceph MON 节点。 检查集群节点的状态:在以下示例中,
podman命令在 Controller 节点上的 Ceph MON 容器中运行状态检查:sudo podman exec -it ceph-mon-controller-0 ceph status
# sudo podman exec -it ceph-mon-controller-0 ceph statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确保每个节点都已打开电源并连接。
为集群取消设置
noout、norecover、norebalance、nobackfill、nodown和pause标志。在以下示例中,podman命令通过 Controller 节点上的 Ceph MON 容器取消设置这些标志:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查集群的运行状况。在以下示例中,
podman命令在 Controller 节点上的 Ceph MON 容器中运行状态检查:sudo podman exec -it ceph-mon-controller-0 ceph status
# sudo podman exec -it ceph-mon-controller-0 ceph statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确保状态为
HEALTH_OK。
22.13. 启动 Compute 节点 复制链接链接已复制到粘贴板!
作为启动 Red Hat OpenStack Platform 环境的一部分,打开每个 Compute 节点电源并检查节点上的服务。
先决条件
- 关闭 Compute 节点电源
步骤
- 打开每个 Compute 节点电源。
验证
-
以
root用户身份登录每个 Compute。 检查 Compute 节点上的服务:
systemctl -t service
$ systemctl -t serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.14. 启动 overcloud Compute 节点上的实例 复制链接链接已复制到粘贴板!
作为启动 Red Hat OpenStack Platform 环境的一部分,启动 Compute 节点上的实例。
先决条件
- 具有活跃节点的活跃 overcloud
步骤
-
以
stack用户身份登录 undercloud。 提供 overcloud 的凭据文件:
source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看 overcloud 中运行的实例:
openstack server list --all-projects
$ openstack server list --all-projectsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 overcloud 中的实例:
openstack server start <INSTANCE>
$ openstack server start <INSTANCE>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 23 章 其他内省操作 复制链接链接已复制到粘贴板!
在某些情况下,您可能想要在标准 overcloud 部署工作流外执行内省。例如,您可能想要在替换现有未使用节点上的硬件后内省新节点或刷新内省数据。
23.1. 执行单个节点内省 复制链接链接已复制到粘贴板!
要在可用节点上执行单个内省,请将节点设置为管理模式并执行内省。
流程
将所有节点设置为
manageable状态:(undercloud) $ openstack baremetal node manage [NODE UUID]
(undercloud) $ openstack baremetal node manage [NODE UUID]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行内省:
(undercloud) $ openstack overcloud node introspect [NODE UUID] --provide
(undercloud) $ openstack overcloud node introspect [NODE UUID] --provideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 内省完成后,节点切换为
available状态。
23.2. 在初始内省后执行节点内省操作 复制链接链接已复制到粘贴板!
因为 --provide 选项的原因,所有节点在初始内省后都进入 available 状态。要在初始内省后在所有节点上执行内省,请将节点设置为管理模式并执行内省。
流程
将所有节点设置为
manageable状态(undercloud) $ for node in $(openstack baremetal node list --fields uuid -f value) ; do openstack baremetal node manage $node ; done
(undercloud) $ for node in $(openstack baremetal node list --fields uuid -f value) ; do openstack baremetal node manage $node ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行批量内省命令:
(undercloud) $ openstack overcloud node introspect --all-manageable --provide
(undercloud) $ openstack overcloud node introspect --all-manageable --provideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 内省完成后,所有节点都会变为
available状态。
23.3. 执行网络内省以查看接口信息 复制链接链接已复制到粘贴板!
网络内省会从网络交换机获取链路层发现协议 (LLDP) 数据。以下命令可显示某个节点上所有接口的某个 LLDP 信息子集,或显示某个节点和接口的全部信息。这对故障排除非常有用。director 默认会启用 LLDP 数据收集。
流程
要获取节点上的接口列表,请运行以下命令:
(undercloud) $ openstack baremetal introspection interface list [NODE UUID]
(undercloud) $ openstack baremetal introspection interface list [NODE UUID]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看接口数据和交换机端口信息,请运行以下命令:
(undercloud) $ openstack baremetal introspection interface show [NODE UUID] [INTERFACE]
(undercloud) $ openstack baremetal introspection interface show [NODE UUID] [INTERFACE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.4. 获取硬件内省详细信息 复制链接链接已复制到粘贴板!
裸机服务 hardware-inspection-extras 功能默认启用,您可以使用它来检索 overcloud 配置的硬件详情。有关 undercloud.conf 文件中的 inspection_extras 参数的更多信息,请参阅 Director 配置参数。
例如,numa_topology 收集程序就是硬件检查额外功能的一部分,包括每个 NUMA 节点的以下信息:
- RAM(单位为 KB)
- 物理 CPU 内核数和同级线程数
- 和 NUMA 节点关联的 NIC
流程
要获得以上列出的信息,请使用裸机节点的 UUID 替换 <UUID> 来完成以下命令:
openstack baremetal introspection data save <UUID> | jq .numa_topology
# openstack baremetal introspection data save <UUID> | jq .numa_topologyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例显示获取的裸机节点 NUMA 信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 24 章 自动发现裸机节点 复制链接链接已复制到粘贴板!
您可以使用 auto-discovery 来注册 overcloud 节点并生成它们的元数据,而无需创建 instackenv.json 文件。这种改进可有助于缩短收集节点信息所需时间。例如,如果您使用 auto-discovery,则不核对 IPMI IP 地址,然后创建 instackenv.json。
24.1. 启用自动发现 复制链接链接已复制到粘贴板!
启用并配置 Bare Metal auto-discovery,以便在使用 PXE 引导时自动发现和导入加入置备网络的节点。
流程
在
undercloud.conf文件中启用裸机自动发现:enable_node_discovery = True discovery_default_driver = ipmi
enable_node_discovery = True discovery_default_driver = ipmiCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
enable_node_discovery- 启用之后,任何使用 PXE 来引导内省虚拟内存盘的节点都在 Bare Metal 服务 (ironic) 中自动注册。 -
discovery_default_driver- 设置用于已发现节点的驱动程序。例如,ipmi。
-
将您的 IPMI 凭证添加到 ironic:
将您的 IPMI 凭证添加到名为
ipmi-credentials.json的文件。请替换本例中的SampleUsername、RedactedSecurePassword和bmc_address值,以适应您的环境:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将 IPMI 凭证文件导入 ironic:
openstack baremetal introspection rule import ipmi-credentials.json
$ openstack baremetal introspection rule import ipmi-credentials.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
24.2. 测试自动发现 复制链接链接已复制到粘贴板!
PXE 引导连接到置备网络的节点,以测试裸机自动发现功能。
流程
- 启动所需节点。
运行
openstack baremetal node list命令。应该看到新节点以enrolled状态列出:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为各个节点设置资源类:
for NODE in `openstack baremetal node list -c UUID -f value` ; do openstack baremetal node set $NODE --resource-class baremetal ; done
$ for NODE in `openstack baremetal node list -c UUID -f value` ; do openstack baremetal node set $NODE --resource-class baremetal ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为各个节点配置内核和 ramdisk:
for NODE in `openstack baremetal node list -c UUID -f value` ; do openstack baremetal node manage $NODE ; done $ openstack overcloud node configure --all-manageable
$ for NODE in `openstack baremetal node list -c UUID -f value` ; do openstack baremetal node manage $NODE ; done $ openstack overcloud node configure --all-manageableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将所有节点设置为 available:
for NODE in `openstack baremetal node list -c UUID -f value` ; do openstack baremetal node provide $NODE ; done
$ for NODE in `openstack baremetal node list -c UUID -f value` ; do openstack baremetal node provide $NODE ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
24.3. 使用规则发现不同供应商的硬件 复制链接链接已复制到粘贴板!
如果拥有异构硬件环境,您可以使用内省规则来分配凭证和远程管理凭证。例如,您可能需要单独的发现规则来处理使用 DRAC 的 Dell 节点。
流程
创建名为
dell-drac-rules.json并包含以下内容的文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 请替换此例中的用户名和密码值以适合您的环境:
将规则导入 ironic:
openstack baremetal introspection rule import dell-drac-rules.json
$ openstack baremetal introspection rule import dell-drac-rules.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 25 章 配置自动配置集标记 复制链接链接已复制到粘贴板!
内省操作会执行一系列的基准数据测试,director 将保存这些测试数据。director 保存这些测试中的数据。可使用多种方式创建使用此数据的策略集:
- 这些策略可以识别性能不佳或不稳定的节点,并隔离这些节点在 overcloud 中使用。
- 这些策略可定义是否将节点自动标记到特定配置集。
25.1. 策略文件语法 复制链接链接已复制到粘贴板!
策略文件使用 JSON 格式,它包括了一组规则。每个规则都定义一个 description、一个 condition 和一个 action。description 是规则的纯文本描述,condition 使用键值模式定义一个评估,action 是条件的执行。
Description
description 是规则的纯文本描述。
例如:
"description": "A new rule for my node tagging policy"
"description": "A new rule for my node tagging policy"
Conditions
condition 就是使用以下键-值来定义评估:
- field
定义要评估的字段:
-
memory_mb- 节点的内存大小 (MB)。 -
cpus- 节点 CPU 的总线程数。 -
cpu_arch- 节点 CPU 的架构。 -
local_gb- 节点根磁盘的总存储空间。
-
- op
指定测试所使用的操作。这包括如下属性:
-
eq- 等于 -
ne- 不等于 -
lt- 少于 -
gt- 多于 -
le- 少于或等于 -
ge- 多于或等于 -
in-net- 检查一个 IP 地址是否在指定的网络中 -
matches- 需要完全和提供的正则表达式相匹配 -
contains- 需要一个包括和提供的正则表达式相匹配的值; -
is-empty- 检查该字段是否为空
-
- invert
- 一个布尔值,用来指定是否对检查结果进行反向处理。
- multiple
在存在多个结果的情况下,定义使用的测试。此参数包括如下属性:
-
any- 只需要任何一个结果匹配 -
all- 需要所有结果都匹配 -
first- 需要第一个结果匹配
-
- value
- 测试中的值。如果项和操作结果为这个值,则条件返回为一个“true”的结果。否则,条件返回 false 的结果。
例如:
Actions
如果条件为 true,策略将执行一个操作。此操作使用 action 密钥和其他密钥,具体取决于 action 的值:
-
fail- 使内省失败。需要一个message参数来包括失败的信息。 -
set-attribute- 在一个 ironic 节点上设置一个属性。需要一个path项,它是到一个 ironic 属性(如/driver_info/ipmi_address)的路径,以及一个value值。 -
set-capability- 在一个 ironic 节点上设置一个能力。需要name和value字段,它们是新能力的名称和值。这将替换这个功能的现有值。例如,使用它来定义节点配置集。 -
extend-attribute- 与set-attribute相似,只是在存在相同能力时把这个值附加到当前的值后面。如果同时使用了unique参数,则在相同值已存在时不进行任何操作。
例如:
25.2. 策略文件示例 复制链接链接已复制到粘贴板!
以下是一个包含内省规则的 JSON 文件示例(rules.json):
这个示例包括 3 个规则:
- 如果内存低于 4096 MiB,内省失败。如果您想将某些节点排除在云之外,则可应用这些类型的规则。
- 硬盘容量大于或等于 1 TiB 的节点会被无条件地分配 swift-storage 配置集。
-
硬盘容量在 1 TiB 和 40 GiB 间的节点可以作为 Compute 节点或 Controller 节点。您可以分配两个能力(
compute_profile和control_profile),使openstack overcloud profiles match命令稍后可以作出最终选择。要使此过程成功,必须删除现有配置集能力,否则现有配置集能力具有优先级。
配置集匹配规则不更改任何其他节点。
使用内省规则分配配置集总会覆盖存在的值。但是,对于已经具有配置集能力的节点,会忽略 [PROFILE]_profile 能力。
25.3. 将策略文件导入到 director 复制链接链接已复制到粘贴板!
要应用您在策略 JSON 文件中定义的策略规则,您必须将策略文件导入到 director。
流程
将策略文件导入 director:
openstack baremetal introspection rule import <policy_file>
$ openstack baremetal introspection rule import <policy_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<policy_file> 替换为您的策略规则文件的名称,如rules.json。
-
将
运行内省进程:
openstack overcloud node introspect --all-manageable
$ openstack overcloud node introspect --all-manageableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检索策略规则要应用到的节点的 UUID:
openstack baremetal node list
$ openstack baremetal node listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确认节点已被分配了策略规则文件中定义的配置集:
openstack baremetal node show <node_uuid>
$ openstack baremetal node show <node_uuid>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您在内省规则中出错,请删除所有规则:
openstack baremetal introspection rule purge
$ openstack baremetal introspection rule purgeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 26 章 创建虚拟化 control planes 复制链接链接已复制到粘贴板!
一个虚拟化的 control plane 是位于虚拟机 (VM) 而非裸机上的 control plane。使用虚拟化 control plane 可减少 control plane 所需的裸机数。
本章介绍了如何使用 RHOSP 和 Red Hat Virtualization 为 overcloud 虚拟化 Red Hat OpenStack Platform (RHOSP) control plane。
26.1. 虚拟化 control planes 架构 复制链接链接已复制到粘贴板!
借助 director 使用 Red Hat Virtualization 集群中部署的 Controller 节点置备 overcloud。然后您可以将这些虚拟化控制器部署为虚拟化 control plane 节点。
仅在 Red Hat Virtualization 上支持虚拟化控制器节点。
以下构架图演示了如何部署虚拟化 control plane。使用 Red Hat Virtualization 虚拟机上运行的 Controller 节点分发 overcloud,并在裸机上运行 Compute 和 Storage 节点。
在 Red Hat Virtualization 上运行 OpenStack 虚拟化 undercloud。
虚拟化 control planes 架构
OpenStack Bare Metal Provisioning 服务(ironic)包括 Red Hat Virtualization 虚拟机 staging-ovirt 的驱动程序。您可以使用此驱动程序在 Red Hat Virtualization 环境中管理虚拟节点。您也可以使用此驱动程序在 Red Hat Virtualization 环境内将 overcloud 控制器部署为虚拟机。
虚拟化 RHOSP overcloud control plane 的优点和限制
虽然虚拟化 RHOSP overcloud control plane 有很多优点,但它并不适用于所有配置。
优点
虚拟化 overcloud control plane 有很多优点,可防止停机并提高性能。
- 您可以使用热添加和热删除以按需要扩展 CPU 和内存,将资源动态分配给虚拟化控制器,从而减少停机时间,并有助于随平台扩展而增加容量。
- 您可以在同一 Red Hat Virtualization 集群中部署额外的基础架构虚拟机。这可最大程度减少数据中心中的服务器空间,并最大程度提高物理节点的效率。
- 您可以使用可组合角色来定义更复杂的 RHOSP control plane,并将资源分配给 control plane 的特定组件。
- 使用 VM 实时迁移功能可在不中断服务的情况下维护系统。
- 您可以集成 Red Hat Virtualization 支持的第三方工具或自定义工具。
限制
虚拟化 control plane 对可使用的配置类型有限制。
- 不支持虚拟化 Ceph Storage 节点和 Compute 节点。
- 使用光纤通道的后端不支持 Block Storage (cinder) 镜像到卷。Red Hat Virtualization 不支持 N_Port ID Virtualization (NPIV) 。因此,需要将 LUN 从存储后端映射到控制器(cinder-volume 默认在此运行)的块存储 (cinder) 驱动程序无法工作。您必须为 cinder-volume 创建专用角色,并使用角色创建物理节点,而不是将其包含在虚拟化控制器中。如需更多信息,请参阅 可组合服务和自定义角色。
26.2. 使用 Red Hat Virtualization 驱动程序置备虚拟化控制器 复制链接链接已复制到粘贴板!
完成以下步骤,以使用 RHOSP 和 Red Hat Virtualization 为 overcloud 置备虚拟化 RHOSP control plane。
先决条件
- 您必须具有支持 Intel 64 或 AMD64 CPU 扩展的 64 位 x86 处理器。
您必须已安装并配置了以下软件:
- Red Hat Virtualization。如需更多信息,请参阅 Red Hat Virtualization 文档套件。
- Red Hat OpenStack Platform (RHOSP)。如需更多信息,请参阅 Director 安装和使用。
- 您必须事先准备虚拟化 Controller 节点。这些要求与裸机 Controller 节点相同。如需更多信息,请参阅 Controller 节点要求。
- 您必须事先准备用作 overcloud Compute 节点和存储节点的裸机节点。有关硬件规格,请参阅 Compute 节点 要求和 Ceph Storage 节点要求。
- 您必须已创建了逻辑网络,并且主机网络的集群可对多个网络使用网络隔离。如需更多信息,请参阅逻辑网络。
- 您必须将每个节点的内部 BIOS 时钟设置为 UTC,以防止 hwclock 在应用时区偏移前同步 BIOS 时钟时,可能会导致将来的文件时间戳出现问题。
要避免性能瓶颈,请使用可组合角色并在裸机 Controller 节点上保留 data plane 服务。
步骤
要在 director 中启用
staging-ovirt驱动程序,可将该驱动程序添加到undercloud.conf配置文件的enabled_hardware_types参数中:enabled_hardware_types = ipmi,redfish,ilo,idrac,staging-ovirt
enabled_hardware_types = ipmi,redfish,ilo,idrac,staging-ovirtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 undercloud 是否包含
staging-ovirt驱动程序:openstack baremetal driver list
(undercloud) [stack@undercloud ~]$ openstack baremetal driver listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您正确配置了 undercloud,则命令会返回以下结果:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 overcloud 节点定义模板,例如
nodes.json,以将 Red Hat Virtualization 上托管的虚拟机注册到 director。有关更多信息 ,请参阅为 Overcloud 注册节点。使用以下键-值对定义要使用 overcloud 部署的虚拟机的各个方面:Expand 表 26.1. 为 overcloud 配置虚拟机 键 设置为该值 pm_typeoVirt/RHV 虚拟机的 OpenStack Bare Metal Provisioning (ironic) 服务驱动程序
staging-ovirt。pm_userRed Hat Virtualization Manager 用户名。
pm_passwordRed Hat Virtualization Manager 密码。
pm_addrRed Hat Virtualization Manager 服务器的主机名或 IP。
pm_vm_name在其中创建控制器的 Red Hat Virtualization Manager 中的虚拟机的名称。
例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在每个 Red Hat Virtualization 主机上配置一个 Controller
- 在 Red Hat Virtualization 中使用“soft negative affinity”配置关联性组,以确保为您的控制器虚拟机实施高可用性。如需更多信息,请参阅关联性组。
- 打开 Red Hat Virtualization Manager 界面,使用它将每个 VLAN 映射到控制器虚拟机中的单独逻辑 vNIC。如需更多信息,请参阅逻辑网络。
-
设置 director 和控制器虚拟机的 vNIC 中的
no_filter,并重启虚拟机,可禁用附加到控制器虚拟机的网络上的 MAC 欺骗过滤器。如需更多信息,请参阅虚拟网络接口卡。 部署 overcloud 以在您的环境中包括新的虚拟化控制器节点:
openstack overcloud deploy --templates
(undercloud) [stack@undercloud ~]$ openstack overcloud deploy --templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 27 章 执行高级容器镜像管理 复制链接链接已复制到粘贴板!
默认容器镜像配置适合大多数环境。在某些情况下,您的容器镜像配置可能需要一些自定义,如版本固定。
27.1. 为 undercloud 固定容器镜像 复制链接链接已复制到粘贴板!
在某些情况下,您可能需要 undercloud 的一组特定容器镜像版本。在这种情况下,您必须将镜像固定到特定的版本。要固定镜像,您必须生成和修改容器配置文件,然后将 undercloud 角色数据和容器配置文件结合,以生成包含服务到容器镜像映射的环境文件。在 undercloud.conf 文件的 custom_env_files 参数中包含此环境文件。
步骤
-
以
stack用户身份登录 undercloud 主机。 使用
--output-env-file选项运行openstack tripleo container image prepare default命令,生成包含默认镜像配置的文件:sudo openstack tripleo container image prepare default \ --output-env-file undercloud-container-image-prepare.yaml
$ sudo openstack tripleo container image prepare default \ --output-env-file undercloud-container-image-prepare.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 根据您的环境要求,修改
undercloud-container-image-prepare.yaml文件。-
移除
tag:参数,以便 director 可以使用tag_from_label:参数。director 使用此参数来标识每个容器镜像的最新版本,拉取每个镜像,并在 director 中的容器 registry 上标记每个镜像。 - 移除 undercloud 的 Ceph 标签。
-
确保
neutron_driver:参数为空。不要将此参数设置为OVN,因为 undercloud 不支持 OVN。 包含容器镜像 registry 凭据:
ContainerImageRegistryCredentials: registry.redhat.io: myser: 'p@55w0rd!'ContainerImageRegistryCredentials: registry.redhat.io: myser: 'p@55w0rd!'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您无法将容器镜像推送到新 undercloud 上的 undercloud registry,因为
image-serveregistry 尚未安装。您必须将push_destination值设置为false,或使用自定义值直接从源拉取镜像。如需更多信息,请参阅 容器镜像准备参数。
-
移除
生成新的容器镜像配置文件,该文件结合使用 undercloud 角色文件和自定义
undercloud-container-image-prepare.yaml文件:sudo openstack tripleo container image prepare \ -r /usr/share/openstack-tripleo-heat-templates/roles_data_undercloud.yaml \ -e undercloud-container-image-prepare.yaml \ --output-env-file undercloud-container-images.yaml
$ sudo openstack tripleo container image prepare \ -r /usr/share/openstack-tripleo-heat-templates/roles_data_undercloud.yaml \ -e undercloud-container-image-prepare.yaml \ --output-env-file undercloud-container-images.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow undercloud-container-images.yaml文件是一个环境文件,包含服务参数到容器镜像的映射。例如,OpenStack Identity (keystone) 使用ContainerKeystoneImage参数来定义其容器镜像:ContainerKeystoneImage: undercloud.ctlplane.localdomain:8787/rhosp-rhel9/openstack-keystone:17.0
ContainerKeystoneImage: undercloud.ctlplane.localdomain:8787/rhosp-rhel9/openstack-keystone:17.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,容器镜像标签与
{version}-{release}格式匹配。-
将
undercloud-container-images.yaml文件包含在undercloud.conf文件的custom_env_files参数中。在运行 undercloud 安装时,undercloud 服务使用来自此文件的固定容器镜像映射。
27.2. 为 overcloud 固定容器镜像 复制链接链接已复制到粘贴板!
在某些情况下,您可能需要 overcloud 的一组特定容器镜像版本。在这种情况下,您必须将镜像固定到特定的版本。若要固定镜像,您必须创建 containers-prepare-parameter.yaml 文件,使用此文件将容器镜像拉取到 undercloud registry,并生成包含固定镜像列表的环境文件。
例如,containers-prepare-parameter.yaml 文件可能包含以下内容:
ContainerImagePrepare 参数包含单个规则 set。此规则 set 不得包含 tag 参数,且必须依赖 tag_from_label 参数来标识每个容器镜像的最新版本和发行版本。director 使用此规则 set 来标识每个容器镜像的最新版本,拉取每个镜像,并在 director 中的容器 registry 上标记每个镜像。
步骤
运行
openstack tripleo container image prepare命令,该命令从containers-prepare-parameter.yaml文件中定义的源中拉取所有镜像。包含--output-env-file以指定将包含固定容器镜像列表的输出文件:sudo openstack tripleo container image prepare -e /home/stack/templates/containers-prepare-parameter.yaml --output-env-file overcloud-images.yaml
$ sudo openstack tripleo container image prepare -e /home/stack/templates/containers-prepare-parameter.yaml --output-env-file overcloud-images.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow overcloud-images.yaml文件是一个环境文件,包含服务参数到容器镜像映射。例如,OpenStack Identity (keystone) 使用ContainerKeystoneImage参数来定义其容器镜像:ContainerKeystoneImage: undercloud.ctlplane.localdomain:8787/rhosp-rhel9/openstack-keystone:17.0
ContainerKeystoneImage: undercloud.ctlplane.localdomain:8787/rhosp-rhel9/openstack-keystone:17.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,容器镜像标签与
{version}-{release}格式匹配。在运行
openstack overcloud deploy命令时,以特定顺序将containers-prepare-parameter.yaml和overcloud-images.yaml文件包含在环境文件集合中:openstack overcloud deploy --templates \ ... -e /home/stack/containers-prepare-parameter.yaml \ -e /home/stack/overcloud-images.yaml \ ...$ openstack overcloud deploy --templates \ ... -e /home/stack/containers-prepare-parameter.yaml \ -e /home/stack/overcloud-images.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
overcloud 服务使用 overcloud-images.yaml 文件中列出的固定镜像。
第 28 章 director 错误故障排除 复制链接链接已复制到粘贴板!
在 director 过程的某些阶段可能发生错误。本节包含一些有关诊断常见问题的信息。
28.1. 节点注册故障排除 复制链接链接已复制到粘贴板!
由于节点详细信不正确的问题而通常导致节点注册问题。在这些情况下,请验证包含节点详细信息的模板文件并更正导入的节点详细信息。
步骤
Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--validate-only选项运行节点导入命令。此选项无需执行导入即可验证您的节点模板:(undercloud) $ openstack overcloud node import --validate-only ~/nodes.json Waiting for messages on queue 'tripleo' with no timeout. Successfully validated environment file
(undercloud) $ openstack overcloud node import --validate-only ~/nodes.json Waiting for messages on queue 'tripleo' with no timeout. Successfully validated environment fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要修复导入节点的错误详细信息,请运行
openstack baremetal命令以更新节点详细信息。下例显示如何更改网络详细信息:识别导入节点的已分配端口 UUID:
source ~/stackrc (undercloud) $ openstack baremetal port list --node [NODE UUID]
$ source ~/stackrc (undercloud) $ openstack baremetal port list --node [NODE UUID]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 MAC 地址:
(undercloud) $ openstack baremetal port set --address=[NEW MAC] [PORT UUID]
(undercloud) $ openstack baremetal port set --address=[NEW MAC] [PORT UUID]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在节点上配置新的 IPMI 地址:
(undercloud) $ openstack baremetal node set --driver-info ipmi_address=[NEW IPMI ADDRESS] [NODE UUID]
(undercloud) $ openstack baremetal node set --driver-info ipmi_address=[NEW IPMI ADDRESS] [NODE UUID]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
28.2. 硬件内省故障排除 复制链接链接已复制到粘贴板!
如果检查 RAM 磁盘没有响应,裸机置备检查器服务 ironic-inspector 服务会在默认的 1 小时后超时。超时可能表示检查 RAM 磁盘中的一个错误,但通常是因为环境错误配置造成的超时。
您可以诊断和解决常见环境错误配置问题,以确保内省进程运行完成。
流程
查找
stackrcundercloud 凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确保您的节点处于
manageable状态。内省不检查处于available状态的节点,该状态意味着用于部署。如果要检查处于available状态的节点,请在内省前将节点状态更改为manageable状态:openstack baremetal node manage <node_uuid>
(undercloud)$ openstack baremetal node manage <node_uuid>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在内省调试过程中配置对内省 RAM 磁盘的临时访问,请使用
sshkey参数将您的公共 SSH 密钥附加到/httpboot/inspector.ipxe文件中的内核配置中:kernel http://192.2.0.1:8088/agent.kernel ipa-inspection-callback-url=http://192.168.0.1:5050/v1/continue ipa-inspection-collectors=default,extra-hardware,logs systemd.journald.forward_to_console=yes BOOTIF=${mac} ipa-debug=1 ipa-inspection-benchmarks=cpu,mem,disk selinux=0 sshkey="<public_ssh_key>"kernel http://192.2.0.1:8088/agent.kernel ipa-inspection-callback-url=http://192.168.0.1:5050/v1/continue ipa-inspection-collectors=default,extra-hardware,logs systemd.journald.forward_to_console=yes BOOTIF=${mac} ipa-debug=1 ipa-inspection-benchmarks=cpu,mem,disk selinux=0 sshkey="<public_ssh_key>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在节点上运行内省:
openstack overcloud node introspect <node_uuid> --provide
(undercloud)$ openstack overcloud node introspect <node_uuid> --provideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 内省完成后,使用
--provide选项将节点状态更改为available。从
dnsmasq日志中识别节点的 IP 地址:sudo tail -f /var/log/containers/ironic-inspector/dnsmasq.log
(undercloud)$ sudo tail -f /var/log/containers/ironic-inspector/dnsmasq.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果出错,则使用根用户和临时访问详细信息访问节点:
ssh root@192.168.24.105
$ ssh root@192.168.24.105Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在内省期间访问节点以运行诊断命令并排除内省故障。
要停止内省过程,请运行以下命令:
openstack baremetal introspection abort <node_uuid>
(undercloud)$ openstack baremetal introspection abort <node_uuid>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您也可以等待操作过程超时。
注意Red Hat OpenStack Platform director 在初始中止后重试内省三次。在每次尝试时均运行
openstack baremetal introspection abort命令以完全中止内省。
28.3. overcloud 创建和部署故障排除 复制链接链接已复制到粘贴板!
使用 OpenStack Orchestration (heat) 服务对 overcloud 进行初始创建。如果 overcloud 部署失败,则使用 OpenStack 客户端和服务日志文件诊断失败的部署。
步骤
Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行部署失败的命令:
openstack overcloud failures
$ openstack overcloud failuresCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令以显示失败的详细信息:
(undercloud) $ openstack stack failures list <OVERCLOUD_NAME> --long
(undercloud) $ openstack stack failures list <OVERCLOUD_NAME> --longCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
用您的 overcloud 的名称替换
<OVERCLOUD_NAME>。
-
用您的 overcloud 的名称替换
运行以下命令以识别失败的堆栈:
(undercloud) $ openstack stack list --nested --property status=FAILED
(undercloud) $ openstack stack list --nested --property status=FAILEDCopy to Clipboard Copied! Toggle word wrap Toggle overflow
28.4. 节点置备故障排除 复制链接链接已复制到粘贴板!
OpenStack Orchestration (heat) 服务控制置备过程。如果节点置备失败,则使用 OpenStack 客户端和服务日志文件诊断问题。
步骤
Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查裸机恢复服务以查看所有注册节点及其当前状态:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可用于置备的所有节点都应设置以下状态:
-
Maintenance 设置为
False。 -
在置备前,Provision State 设置为
available。
-
Maintenance 设置为
如果节点的
Maintenance没有设置为False或Provision State设置为available,使用以下表来找出问题以及相关的解决方案。Expand 问题 原因 解决方案 Maintenance 自动将自身设置为
True。director 无法访问节点的电源管理。
检查节点电源管理的凭据。
Provision State 设置为
available,但节点未置备。此问题在启动裸机部署前发生。
检查包括配置集和类别映射的节点详细信息。检查节点硬件详细信息是否在该类别的要求内。
节点的 Provision State 设置为
wait call-back。此节点的节点置备过程尚未完成。
等到此状态更改。否则,连接到节点的虚拟控制台并检查输出。
Provision State 处于
active,Power State 处于power on,但节点无响应。节点置备已成功完成,并在部署后配置步骤中出问题。
诊断节点配置过程。连接到节点的虚拟控制台并检查输出。
Provision State 为
error或deploy failed。节点置备已失败。
使用
openstack baremetal node show命令查看裸机节点详细信息,并检查last_error字段,其中包含错误说明。
其他资源
28.5. 置备期间 IP 地址冲突故障排除 复制链接链接已复制到粘贴板!
如果目标主机分配的 IP 地址已经使用,则内省和部署任务将失败。要防止这些失败,可对 Provisioning 网络执行端口扫描,以确定发现 IP 范围和主机 IP 范围是否可用。
步骤
安装
nmap:sudo dnf install nmap
$ sudo dnf install nmapCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
nmap命令扫描 IP 地址范围中的活动地址。这个示例会扫描 192.168.24.0/24 这个范围,使用 Provisioning 网络的 IP 子网值(使用 CIDR 位掩码符号 )替换它:sudo nmap -sn 192.168.24.0/24
$ sudo nmap -sn 192.168.24.0/24Copy to Clipboard Copied! Toggle word wrap Toggle overflow 复查
nmap扫描的输出。例如,您应查看 undercloud 的 IP 地址,以及子网上存在的任何其他主机:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果这些活跃的 IP 地址和 undercloud.conf 中指定的 IP 地址范围有冲突,则必须在内省或部署overcloud 节点前修改 IP 地址范围或释放一些 IP 地址。
28.6. “No Valid Host Found”错误故障排除 复制链接链接已复制到粘贴板!
在一些情况下,/var/log/nova/nova-conductor.log 包括了以下错误:
NoValidHost: No valid host was found. There are not enough hosts available.
NoValidHost: No valid host was found. There are not enough hosts available.
当计算调度程序找不到适合启动新实例的裸机节点时,会发生此错误。这通常意味着,Compute 服务期望找到的资源与裸机恢复服务向 Compute 建议的资源之间存在不匹配。要检查是否存在不匹配的错误,请完成以下步骤:
步骤
Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查是否在节点上成功执行内省。如果内省失败,则检查每个节点是否包含所需的 ironic 节点属性:
(undercloud) $ openstack baremetal node show [NODE UUID]
(undercloud) $ openstack baremetal node show [NODE UUID]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
propertiesJSON 项中的cpus、cpu_arch、memory_mb和local_gb都有有效的值。确保映射到节点的 Compute 类型不超过所需节点数的节点属性:
(undercloud) $ openstack flavor show [FLAVOR NAME]
(undercloud) $ openstack flavor show [FLAVOR NAME]Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
运行
openstack baremetal node list命令以确保有足够的节点处于可用状态。处于manageable状态的节点通常表示内省失败。 运行
openstack baremetal node list命令并确保节点不处于维护模式。如果节点自动更改为维护模式,则可能的原因是电源管理凭据不正确。检查电源管理凭据,然后移除维护模式:(undercloud) $ openstack baremetal node maintenance unset [NODE UUID]
(undercloud) $ openstack baremetal node maintenance unset [NODE UUID]Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果您使用的是自动配置集标记,则检查是否有足够的节点对应于每个类别和配置集。在节点上运行
openstack baremetal node show命令并检查properties字段中的capabilities密钥。例如,标记为 Compute 角色的节点包含profile:compute值这样的信息。 内省后,必须等待节点信息从 Bare Metal 传播到 Compute。但是,如果您手工进行了一些操作,节点可能会短时间内对 Compute service (nova) 不可用。使用以下命令检查系统中的总体资源:
(undercloud) $ openstack hypervisor stats show
(undercloud) $ openstack hypervisor stats showCopy to Clipboard Copied! Toggle word wrap Toggle overflow
28.7. 容器配置故障排除 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform director 使用 podman 管理容器和 puppet 来创建容器配置。此步骤显示如何在出错时对容器进行诊断。
访问主机
Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 获取包含容器故障的节点的 IP 地址。
(undercloud) $ metalsmith list
(undercloud) $ metalsmith listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 登录该节点:
(undercloud) $ ssh tripleo-admin@192.168.24.60
(undercloud) $ ssh tripleo-admin@192.168.24.60Copy to Clipboard Copied! Toggle word wrap Toggle overflow
识别故障容器
查看所有容器:
sudo podman ps --all
$ sudo podman ps --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 识别故障容器。故障容器通常以非零的状态推出。
检查容器日志
每个容器都会保留其主进程的标准输出内容。使用此输出内容作为日志,帮助确定容器运行过程中实际上发生了什么。例如,要查看
keystone容器的日志,请运行以下命令:sudo podman logs keystone
$ sudo podman logs keystoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在大多数情况下,此日志包含有关容器故障原因的信息。
主机还包含已失败服务的
stdout日志。可在/var/log/containers/stdouts/中查找stdout日志。例如,要查看出现故障的keystone容器的日志,请运行以下命令:cat /var/log/containers/stdouts/keystone.log
$ cat /var/log/containers/stdouts/keystone.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow
检查容器
在某些情况下,您可能需要验证容器的相关信息。例如,请使用以下命令来查看 keystone 容器的相关数据:
sudo podman inspect keystone
$ sudo podman inspect keystone
此命令返回一个包含低级配置数据的 JSON 对象。您可以通过管道将这些输出内容传递给 jq 命令,以对特定数据进行解析。例如,要查看 keystone 容器的加载情况,请运行以下命令:
sudo podman inspect keystone | jq .[0].Mounts
$ sudo podman inspect keystone | jq .[0].Mounts
您还可以使用 --format 选项将数据解析到一行中,这在针对一组容器数据运行命令时非常有用。例如,要重建用于运行 keystone 容器的选项,请使用包含 --format 选项的以下 inspect 命令:
sudo podman inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}:{{ join .Options "," }}{{end}} -ti {{.Config.Image}}' keystone
$ sudo podman inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}:{{ join .Options "," }}{{end}} -ti {{.Config.Image}}' keystone
--format 选项会按照 Go 语法来创建查询。
将这些选项和 podman run 命令一起使用以重新创建容器用于故障排除目的:
OPTIONS=$( sudo podman inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}{{if .Mode}}:{{.Mode}}{{end}}{{end}} -ti {{.Config.Image}}' keystone )
sudo podman run --rm $OPTIONS /bin/bash
$ OPTIONS=$( sudo podman inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}{{if .Mode}}:{{.Mode}}{{end}}{{end}} -ti {{.Config.Image}}' keystone )
$ sudo podman run --rm $OPTIONS /bin/bash
在容器内运行命令
在某些情况下,您可能需要通过特定的 Bash 命令从容器中获取信息。在此情况下,使用以下 podman 命令以在运行中容器内执行命令。例如,运行 podman exec 命令以在 keystone 容器内运行命令:
sudo podman exec -ti keystone <COMMAND>
$ sudo podman exec -ti keystone <COMMAND>
-ti 选项会通过交互式伪终端来运行命令。
-
用您要运行的命令替换
<COMMAND>。例如,每个容器都有一个健康检查脚本,用于验证服务的连接状况。您可以使用以下命令为keystone运行这个健康检查脚本:
sudo podman exec -ti keystone /openstack/healthcheck
$ sudo podman exec -ti keystone /openstack/healthcheck
要访问容器的 shell,请运行 podman exec,并将 /bin/bash 用作您要在容器内运行的命令:
sudo podman exec -ti keystone /bin/bash
$ sudo podman exec -ti keystone /bin/bash
查看容器文件系统
要查看故障容器的文件系统,请运行
podman mount命令。例如,要查看出现故障的keystone容器的文件系统,请运行以下命令:sudo podman mount keystone
$ sudo podman mount keystoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这会提供一个挂载位置,用于查看文件系统内容:
/var/lib/containers/storage/overlay/78946a109085aeb8b3a350fc20bd8049a08918d74f573396d7358270e711c610/merged
/var/lib/containers/storage/overlay/78946a109085aeb8b3a350fc20bd8049a08918d74f573396d7358270e711c610/mergedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这对于查看容器内的 Puppet 报告很有用。您可以在容器挂载内的
var/lib/puppet/目录中查找这些报告。
导出容器
当容器出现故障时,您可能需要调查文件中包含的所有内容。在这种情况下,您可以将容器的整个文件系统导出为 tar 归档。例如,要导出 keystone 容器的文件系统,请运行以下命令:
sudo podman export keystone -o keystone.tar
$ sudo podman export keystone -o keystone.tar
这个命令会创建 keystone.tar 归档,以供您提取和研究。
28.8. Compute 节点故障排除 复制链接链接已复制到粘贴板!
Compute 节点使用 Compute 服务来执行基于虚拟机监控程序的操作。这意味着,对 Compute 节点进行故障排除可以解决与这个服务相关的问题。
步骤
Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 获取包含故障的 Compute 节点的 IP 地址:
(undercloud) $ openstack server list
(undercloud) $ openstack server listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 登录该节点:
(undercloud) $ ssh tripleo-admin@192.168.24.60
(undercloud) $ ssh tripleo-admin@192.168.24.60Copy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到 root 用户:
sudo -i
$ sudo -iCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看容器状态:
sudo podman ps -f name=nova_compute
$ sudo podman ps -f name=nova_computeCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Compute 节点的主日志文件为
/var/log/containers/nova/nova-compute.log。如果 Compute 节点通信出现问题,请使用此文件开始诊断。 - 如果需要在 Compute 节点上进行维护工作,把主机上存在的实例迁移到另外一个可以正常工作的 Compute 节点上,然后禁用需要进行维护的节点。
28.9. 创建 sosreport 复制链接链接已复制到粘贴板!
如果您需要联系红帽以获得 Red Hat OpenStack 平台的产品支持,可能需要生成一份 sosreport。有关创建 sosreport 的更多信息,请参阅:
28.10. 日志位置 复制链接链接已复制到粘贴板!
在故障排除时,使用以下日志手机 undercloud 和 overcloud 的信息。
| 信息 | 日志位置 |
|---|---|
| 容器化服务日志 |
|
| 容器化服务中的标准输出 |
|
| Ansible 配置日志 |
|
| 信息 | 日志位置 |
|---|---|
|
|
|
| Undercloud 安装日志 |
|
| 信息 | 日志位置 |
|---|---|
| Cloud-Init 日志 |
|
| 高可用性日志 |
|
第 29 章 Undercloud 和 overcloud 服务的提示 复制链接链接已复制到粘贴板!
本节提供有关在 undercloud 上调整和管理特定 OpenStack 服务的建议。
29.1. 调优部署性能 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform director 使用 OpenStack Orchestration (heat) 开展主要部署和置备功能。Heat 使用一系列 worker 执行部署任务。为计算默认 worker 数,director 的 heat 配置将 undercloud 的总 CPU 线程计数减半。在本实例中,线程数是指 CPU 内核数乘以超线程值。例如,如果 undercloud 的 CPU 具有 16 个线程,则 heat 默认生成 8 个 worker。director 配置会默认使用最小和最大值:
| 服务 | 最小值 | 最大值 |
|---|---|---|
| OpenStack Orchestration (heat) | 4 | 24 |
但是,您可以使用环境文件中的 HeatWorkers 参数手动设置 worker 数:
heat-workers.yaml
parameter_defaults: HeatWorkers: 16
parameter_defaults:
HeatWorkers: 16
undercloud.conf
custom_env_files: heat-workers.yaml
custom_env_files: heat-workers.yaml
29.2. 更改 HAProxy 的 SSL/TLS 密码规则 复制链接链接已复制到粘贴板!
如果在 undercloud 中启用了 SSL/TLS (请参阅 第 7.2 节 “Director 配置参数”),您可能需要强化与 HAProxy 配置一起使用的 SSL/TLS 密码和规则。这种加强有助于避免 SSL/TLS 漏洞,如 POODLE 漏洞。
使用 hieradata_override undercloud 配置选项,设置下列 hieradata:
- tripleo::haproxy::ssl_cipher_suite
- HAProxy 中使用的密码套件。
- tripleo::haproxy::ssl_options
- HAProxy 中使用的 SSL/TLS 规则。
例如,您可能需要使用下列密码和规则:
-
Cipher:
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS -
规则:
no-sslv3 no-tls-tickets
创建一个包含以下内容的 hieradata 覆盖文件 (haproxy-hiera-overrides.yaml):
tripleo::haproxy::ssl_cipher_suite: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS tripleo::haproxy::ssl_options: no-sslv3 no-tls-tickets
tripleo::haproxy::ssl_cipher_suite: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
tripleo::haproxy::ssl_options: no-sslv3 no-tls-tickets
cipher 集合是一个连续行。
设置 undercloud.conf 文件中的 hieradata_override 参数,以便使用在运行 openstack undercloud install 之前创建的 hieradata 覆盖文件:
[DEFAULT] ... hieradata_override = haproxy-hiera-overrides.yaml ...
[DEFAULT]
...
hieradata_override = haproxy-hiera-overrides.yaml
...
第 30 章 电源管理驱动 复制链接链接已复制到粘贴板!
虽然 IPMI 是 director 用来进行电源管理的主要方法,但是 director 也支持其它电源管理类型。此附录包含 director 支持的电源管理功能列表。为 overcloud 注册节点时使用这些电源管理设置。有关更多信息 ,请参阅为 overcloud 注册节点。
30.1. 智能平台管理接口 (IPMI) 复制链接链接已复制到粘贴板!
使用基板管理控制器 (BMC) 时的标准电源管理方法。
- pm_type
-
将这个选项设置为
ipmi。 - pm_user; pm_password
- IPMI 的用户名和密码。
- pm_addr
- IPMI 控制器的 IP 地址。
- pm_port(可选)
- 连接到 IPMI 控制器的端口。
30.2. Redfish 复制链接链接已复制到粘贴板!
由分布式管理任务组 (DMTF) 开发的,IT 基础架构的标准 RESTful API
- pm_type
-
将这个选项设置为
redfish。 - pm_user; pm_password
- Redfish 的用户名和密码。
- pm_addr
- Redfish 控制器的 IP 地址。
- pm_system_id
-
系统资源的规范路径(canonical path)。此路径必须包含 root 服务、版本和系统的路径/唯一 ID。例如:
/redfish/v1/Systems/CX34R87. - redfish_verify_ca
-
如果基板管理控制器 (BMC) 中的 Redfish 服务没有配置为使用由认可证书颁发机构 (CA) 签名的有效 TLS 证书,ironic 中的 Redfish 客户端无法连接到 BMC。将
redfish_verify_ca选项设置为false来静默错误。但请注意:禁用 BMC 身份验证会破坏您的 BMC 的访问安全性。
30.3. Dell Remote Access Controller (DRAC) 复制链接链接已复制到粘贴板!
DRAC 是一个提供远程电源功能的接口,这些功能包括电源管理和服务器监控。
- pm_type
-
将这个选项设置为
idrac。 - pm_user; pm_password
- DRAC 的用户名和密码。
- pm_addr
- DRAC 主机的 IP 地址。
30.4. Integrated Lights-Out (iLO) 复制链接链接已复制到粘贴板!
iLO 是惠普提供的一个远程电源功能的接口,这些功能包括电源管理和服务器监控。
- pm_type
-
将这个选项设置为
ilo。 - pm_user; pm_password
- iLO 的用户名和密码。
- pm_addr
iLO 接口的 IP 地址。
-
要启用这个驱动程序,请将
ilo添加到undercloud.conf的enabled_hardware_types选项中,然后重新运行openstack undercloud install。 - HP 节点的 ILO 固件版本至少为 1.85(2015 年 5 月 13 日)才能成功内省。director 已成功测试了使用此 ILO 固件版本的节点。
- 不支持使用共享 iLO 端口。
-
要启用这个驱动程序,请将
Fujitsu iRMC 是一个 BMC(Baseboard Management Controller),它集成了 LAN 连接以及扩展的功能。这个驱动提供了对连接到 iRMC 上的裸机系统的电源管理功能。
需要 iRMC S4 或更高版本。
- pm_type
-
将这个选项设置为
irmc。 - pm_user; pm_password
iRMC 接口的用户名和密码。
重要iRMC 用户必须具有
ADMINISTRATOR权限。- pm_addr
- iRMC 接口的 IP 地址。
- pm_port(可选)
- iRMC 操作使用的端口。默认值是 443。
- pm_auth_method(可选)
-
iRMC 操作的验证方法。使用
basic或digest。默认值为基本的。 - pm_client_timeout(可选)
- iRMC 操作超时(以秒为单位)。默认值是 60 秒。
- pm_sensor_method(可选)
获得感应器数据的方法。使用
ipmitool或scci。默认值是ipmitool。-
要启用此驱动程序,将
irmc添加到undercloud.conf的enabled_hardware_types选项中,并重新运行openstack undercloud install命令。
-
要启用此驱动程序,将
30.6. Red Hat Virtualization 复制链接链接已复制到粘贴板!
这个驱动通过其 RESTful API 控制 Red Hat Virtualization (RHV) 中的虚拟机。
- pm_type
-
将这个选项设置为
staging-ovirt。 - pm_user; pm_password
-
RHV 环境的用户名和密码。该用户名中还含有认证供应商。例如:
admin@internal。 - pm_addr
- RHV REST API 的 IP 地址。
- pm_vm_name
- 要控制的虚拟机的名称。
- mac
节点上的网络接口的 MAC 地址列表。对于每个系统的 Provisioning NIC,只使用 MAC 地址。
-
要启用此驱动程序,将
staging-ovirt添加到undercloud.conf的enabled_hardware_types选项中,并重新运行openstack undercloud install命令。
-
要启用此驱动程序,将
30.7. manual-management 驱动程序 复制链接链接已复制到粘贴板!
使用 manual-management 驱动程序控制没有电源管理的裸机设备。director 无法控制已注册的裸机设备,您必须在内省和部署过程中的特定点执行手动电源操作。
此选项仅适用于测试和评估目的。不建议用于 Red Hat OpenStack Platform 企业环境。
- pm_type
将此选项设置为
manual-management。- 这个驱动不使用任何验证信息,因为它不控制电源管理。
-
要启用此驱动程序,将
manual-management添加到undercloud.conf的enabled_hardware_types选项中,并重新运行openstack undercloud install命令。 -
在
instackenv.json节点清单文件中,为您要手动管理的节点将pm_type设置为manual-management。
内省
-
在节点上执行内省时,先手动启动节点,再运行
openstack overcloud node introspect命令。确保节点通过 PXE 引导。 -
如果您启用了节点清理,在运行 openstack baremetal node list
命令时手动重新引导节点,并在运行openstack baremetal node list命令时节点状态完全等待每个节点。确保节点通过 PXE 引导。 - 在内省和清理过程完成后,关闭节点。
Deployment
-
在执行 overcloud 部署时,使用
openstack baremetal node list命令检查节点状态。等待节点状态从deploying变为wait call-back,然后手动启动节点。确保节点通过 PXE 引导。 -
在 overcloud 置备过程完成后,节点将关闭。您必须从磁盘引导节点才能启动配置过程。要检查置备完成,请使用
openstack baremetal node list命令检查节点状态,并等待节点状态变为active每个节点。当节点状态为active时,手动引导置备的 overcloud 节点。