大规模部署 Red Hat OpenStack Platform

Red Hat OpenStack Platform 17.1

大型部署的硬件要求和建议

OpenStack Documentation Team

摘要

本指南包含大规模部署 Red Hat OpenStack Platform 的几个建议。这些建议包括硬件建议、undercloud 调优和 overcloud 配置。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。

在 JIRA 中提供文档反馈

使用 Create Issue 表单对文档提供反馈。JIRA 问题将在 Red Hat OpenStack Platform Jira 项目中创建,您可以在其中跟踪您的反馈进度。

  1. 确保您已登录到 JIRA。如果您没有 JIRA 帐户,请创建一个帐户来提交反馈。
  2. 点击以下链接打开 Create Issue 页面: Create Issue
  3. 完成 SummaryDescription 字段。在 Description 字段中,包含文档 URL、章节或章节号以及问题的详细描述。不要修改表单中的任何其他字段。
  4. Create

第 1 章 对大型部署的建议

使用以下 undercloud 和 overcloud 建议、规格和配置来部署大型 Red Hat OpenStack Platform (RHOSP)环境。包括超过 100 个 overcloud 节点的 RHOSP 17.1 部署被视为大型环境。红帽已在不使用 minion 的情况下,使用 RHOSP 17.1 在大型扩展环境中测试并验证了最佳性能。

对于基于 DCN 的部署,中央和边缘站点中的节点数可能非常高。有关 DCN 部署的建议,请联系红帽全球支持服务。

第 3 章 Red Hat OpenStack 部署最佳实践

在计划和准备部署 OpenStack 时,回顾以下最佳实践。您可以在自己的环境中应用这些实践中的一个或多个。

3.1. Red Hat OpenStack 部署准备

在部署 Red Hat OpenStack Platform (RHOSP)前,请查看以下部署准备任务列表。您可以在自己的环境中应用一个或多个部署准备任务:

设置用于内省的子网范围,以容纳您要一次执行内省的最大 overcloud 节点
当使用 director 部署和配置 RHOSP 时,使用 control plane 网络的 CIDR 标记来容纳您现在或将来添加的所有 overcloud 节点。
为首选网络启用 Jumbo 帧
当高使用的网络使用巨型帧或更高的 MTU 时,网络可以发送更大的数据报或 TCP 有效负载,并减少高带宽的 CPU 开销。仅为支持更高 MTU 的网络启用巨型帧。已知为更高的 MTU 提供更好的性能的标准网络是租户网络、存储网络和存储管理网络。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的配置巨型帧
将每个节点的全球名称(WWN)设置为每个节点的根磁盘提示,以防止节点在部署和引导过程中使用错误的磁盘
当节点包含多个磁盘时,请使用内省数据将 WWN 设置为每个节点的根磁盘提示。这可防止节点在部署和引导过程中使用错误的磁盘。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 指南中的为多磁盘 Ceph 集群定义根磁盘
在有多个磁盘的节点上启用自动清理裸机服务(ironic)

使用 Bare Metal 服务自动清理来清除具有多个磁盘的节点上的元数据,并可能有多个引导装载程序。因为磁盘上存在多个引导装载程序,节点可能会与引导磁盘不一致,这会导致在尝试拉取使用错误 URL 的元数据时节点部署失败。

要启用裸机服务自动清理,在 undercloud 节点上编辑 undercloud.conf 文件并添加以下行:

clean_nodes = true
限制裸机(ironic)内省的节点数量

如果您同时在所有节点上执行内省,则可能会因为网络限制而出现故障。一次在最多 50 个节点上执行内省。

确保 undercloud.conf 文件中的 dhcp_startdhcp_end 范围足够大,适用于您在环境中具有的节点数量。

如果可用 IP 不足,请不要发布超过该范围的大小。这限制了同时内省操作的数量。要允许内省 DHCP 租期过期,在内省完成后,请不要在几分钟后发出更多 IP 地址。

3.2. Red Hat OpenStack 部署配置

查看以下 Red Hat OpenStack Platform (RHOSP)部署配置的建议列表:

使用较小的部署验证 heat 模板
部署由至少三个控制器、一个计算备注和三个 Ceph Storage 节点组成的小型环境。您可以使用此配置来确保所有 heat 模板都正确。
改进跨计算的实例分布

在创建大量实例期间,计算调度程序不知道 Compute 节点的资源,直到为 Compute 节点确认了之前实例的资源分配为止。为了避免生成 Compute 节点的不均匀,您可以执行以下操作之一:

  • NovaSchedulerShuffleBestSameWeighedHosts 参数的值设置为 true

    parameter_defaults:
       NovaSchedulerShuffleBestSameWeighedHosts: `True`
  • 为确保 Compute 节点没有与实例过载,请将 max_instances_per_host 设置为任何 Compute 节点可以生成的最大实例数量,并确保启用了 NumInstancesFilter 参数。当 Compute 节点达到这个实例计数时,调度程序将不再选择它以进行进一步的实例生成调度。

    注意

    NumInstancesFilter 参数默认启用。但是,如果您在环境文件中修改了 NovaSchedulerEnabledFilters 参数,请确保启用 NumInstancesFilter 参数。

    parameter_defaults:
      ControllerExtraConfig
        nova::scheduler::filter::max_instances_per_host: <maximum_number_of_instances>
        NovaSchedulerEnabledFilters:
        - AvailabilityZoneFilter
        - ComputeFilter
        - ComputeCapabilitiesFilter
        - ImagePropertiesFilter
        - ServerGroupAntiAffinityFilter
        - ServerGroupAffinityFilter
        - NumInstancesFilter
    • <maximum_number_of_instances > 替换为任何 Compute 节点可生成的最大实例数。
Networking 服务(neutron)的扩展配置

表 3.1 中的设置经过测试和认证,以提高大规模 openstack 环境中的性能和扩展稳定性。

服务器端探测控制 ovsdb-server 发送的探测的超时时间: neutronovn-controllerovn-metadata-agent。如果它们在超时前没有从客户端获得回复,它们将与客户端断开连接,强制它重新连接。客户端到超时的最常见场景是,当客户端将数据库的副本加载到内存中时,与 ovsdb-server 进行初始连接。当超时太低时,ovsdb-server 会在下载数据库时断开客户端,从而导致客户端重新连接并再次尝试,并且此周期会永久重复。因此,如果最大超时间隔不工作,则将探测间隔值设置为 0 以禁用探测。

如果客户端探测器间隔被禁用,则使用 TCP keepalive 消息来监控与 ovsdb-server 的连接。

注意

如果可用,始终使用 tripleo heat 模板(THT)参数来配置所需的设置。由于手动配置的设置将被配置下载运行覆盖,因此在 THT 或 Puppet 中定义默认值时。另外,您只能为现有环境手动配置设置,因此修改后的设置不会应用到任何新的或替换的节点。

表 3.1. 为网络服务推荐的扩展配置

设置描述手动配置THT 参数

Compute 节点上的 OVS 服务器端不活跃探测

将这个探测间隔从 5 秒增加到 30 秒。

ovs-vsctl set Manager . inactivity_probe=30000
 

Controller 节点上的 OVN 北向服务器端不活跃探测

将这个探测间隔增加到 180000 ms,或将其设置为 0 以禁用它。

podman exec -u root ovn_controller ovn-nbctl --no-leader-only set Connection . inactivity_probe=180000
 

Controller 节点上的 OVN 南向服务器端不活跃探测

将这个探测间隔增加到 180000 ms,或将其设置为 0 以禁用它。

podman exec -u root ovn_controller ovn-sbctl --no-leader-only set Connection . inactivity_probe=180000
 

Compute 节点上的 OVN 控制器远程探测间隔

将这个探测间隔增加到 180000 ms,或将其设置为 0 以禁用它。

podman exec -u root ovn_controller ovs-vsctl --no-leader-only set Open_vSwitch . external_ids:ovn-remote-probe-interval=180000

OVNRemoteProbeInterval: 180000

Controller 节点上的网络服务客户端探测间隔

将这个探测间隔增加到 180000 ms,或将其设置为 0 以禁用它。

crudini --set /var/lib/config-data/puppet-generated/neutron/etc/neutron/plugins/ml2/ml2_conf.ini ovn ovsdb_probe_interval 180000

OVNOvsdbProbeInterval: 180000

Controller 节点上的网络服务 api_workers

根据 neutron-server 的负载,将默认独立的 API worker 进程从 12 增加到 16 或更多。

crudini --set /var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.conf DEFAULT api_workers 16

NeutronWorkers: 16

Controller 节点上的网络服务 agent_down_time

agent_down_time 设置为非常大型集群的最大允许数量。

crudini --set /var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.conf DEFAULT agent_down_time 2147483

NeutronAgentDownTime: 2147483

Compute 节点上的 OVN 元数据 report_agent

在大型安装中禁用 report_agent

crudini --set /var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron_ovn_metadata_agent.ini agent report_agent false
 

Compute 节点上的 OVN metadata_workers

metadata_workers 降低到所有 Compute 节点上的最小值,以减少到 OVN 南向数据库的连接。

crudini --set /var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron_ovn_metadata_agent.ini DEFAULT metadata_workers 1

NeutronMetadataWorkers: 1

Compute 节点上的 OVN 元数据 rpc_workers

rpc_workers 降低到所有 Compute 节点上的最小值。

crudini --set /var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron_ovn_metadata_agent.ini DEFAULT rpc_workers 0

NeutronRpcWorkers: 0

Compute 节点上的 OVN 元数据客户端探测间隔

将这个探测间隔增加到 180000 ms,或将其设置为 0 以禁用它。

crudini --set /var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron_ovn_metadata_agent.ini ovn ovsdb_probe_interval 180000

OVNOvsdbProbeInterval: 180000

限制同时置备的节点数量

fifty 是可在一个企业级机架单元中适合的典型服务器数量,因此您可以一次部署一个机架节点。

为最大程度减少诊断部署问题所需的调试,请一次部署最多 50 个节点。如果要部署更多节点,红帽已同时测试了最多 100 个节点。

要批量扩展 Compute 节点,请使用 openstack overcloud deploy 命令和 --limit 选项。这可能导致 undercloud 上节省的时间并降低资源消耗。

禁用未使用的 NIC

如果 overcloud 部署期间有任何未使用的 NIC,您必须在 NIC 配置模板中定义未使用的接口,并将接口设置为 use_dhcp: falsedefroute: false

如果您没有定义未使用的接口,则内省和扩展操作过程中可能会有路由问题和 IP 分配问题。默认情况下,NIC 设置 BOOTPROTO=dhcp,这意味着未使用的 overcloud NIC 使用 PXE 调配所需的 IP 地址。这可以减少节点的可用 IP 地址池。

关闭未使用的裸机置备(ironic)节点
确保您以维护模式关闭任何未使用的裸机置备(ironic)节点。裸机置备不会跟踪处于维护模式的节点电源状态,并错误地报告之前部署中处于维护模式的节点电源状态为 off。如果未使用的节点具有过时的配置的操作系统,这可能会导致持续部署出现问题,例如来自 overcloud 网络的 IP 地址。当您在部署失败后重新部署时,请确保关闭所有未使用的节点。

3.3. 调优 undercloud

当计划扩展 Red Hat OpenStack Platform (RHOSP)部署来配置默认的 undercloud 设置时,请参阅本节。

通过编辑 /etc/security/limits.conf 文件中的以下参数,确保将 undercloud 的打开文件限制增加到 4096:

*  soft  nofile  4096
*  hard  nofile  4096
分离置备和配置过程
  • 要只创建堆栈和相关 RHOSP 资源,您可以使用 --stack-only 选项运行部署命令。
  • 红帽建议在部署超过 100 个节点时分隔堆栈和 config-download 步骤。

包括 overcloud 所需的环境文件:

$ openstack overcloud deploy \
  --templates \
  -e <environment-file1.yaml> \
  -e <environment-file2.yaml> \
  ...
  --stack-only
  • 在调配堆栈后,您可以从 undercloud 到 overcloud,为 tripleo-admin 用户启用 SSH 访问。config-download 过程使用 tripleo-admin 用户来执行基于 Ansible 的配置:

    $ openstack overcloud admin authorize
  • 要禁用 overcloud 堆栈创建,并且仅将 config-download 工作流应用到软件配置,您可以使用 --config-download-only 选项运行部署命令。包括 overcloud 所需的环境文件:

    $ openstack overcloud deploy \
     --templates \
     -e <environment-file1.yaml> \
     -e <environment-file2.yaml> \
      ...
     --config-download-only
  • 要将 config-download playbook 执行限制为特定节点或一组节点,您可以使用 --limit 选项。
  • 对于扩展操作,若要仅在新节点上应用软件配置,您可以在 --config-download-only 选项中使用 --limit 选项。

    $ openstack overcloud deploy \
    --templates \
    -e <environment-file1.yaml> \
    -e <environment-file2.yaml> \
    ...
    --config-download-only --config-download-timeout --limit <Undercloud>,<Controller>,<Compute-1>,<Compute-2>

    如果您使用 --limit 选项总是在列表中包含 < Controller><Undercloud >。使用 external_deploy_steps 接口的任务(如所有 Ceph 配置)在选项列表中包含 <Undercloud > 时执行。所有 external_deploy_steps 任务在 undercloud 上运行。

    例如,如果您运行扩展任务来添加需要 Ceph 连接的 Compute 节点,且没有在列表中包含 < Undercloud& gt;,则此任务会失败,因为未提供 Ceph 配置和 cephx 密钥文件。

    不要使用 --skip-tags external_deploy_steps 选项或任务失败。

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.