大型部署建议
大规模部署 Red Hat OpenStack Platform 的硬件要求和配置
摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。
使用直接文档反馈(DDF)功能
使用 添加反馈 DDF 功能,用于特定句子、段落或代码块上的直接注释。
- 以 Multi-page HTML 格式查看文档。
- 请确定您看到文档右上角的 反馈 按钮。
- 用鼠标指针高亮显示您想评论的文本部分。
- 点 添加反馈。
- 在添加反馈项中输入您的意见。
- 可选:添加您的电子邮件地址,以便文档团队可以联系您以讨论您的问题。
- 点 Submit。
第 1 章 大型部署建议
使用以下 undercloud 和 overcloud 建议、规格和配置来部署大型 Red Hat OpenStack Platform (RHOSP)环境。包括超过 100 个 overcloud 节点的 RHOSP 16.1 部署被视为大型环境。红帽已在使用 RHOSP 16.1 的大规模环境中测试并验证了最佳性能,而无需使用 minion。
对于基于 DCN 的部署,中央和边缘站点中的节点数可能非常高。有关 DCN 部署的建议,请联系红帽全球支持服务。
第 2 章 有关大型 Red Hat OpenStack 部署的推荐规格
您可以使用提供的建议来扩展大型集群部署。
以下流程中的值基于测试 Red Hat OpenStack Platform Performance & Scale Team 执行,并根据单个环境的不同而有所不同。如需更多信息,请参阅将 Red Hat OpenStack Platform 16.1 扩展到超过 700 个节点。
2.1. undercloud 系统要求
为获得最佳性能,请在物理服务器上安装 undercloud 节点。但是,如果您使用虚拟化 undercloud 节点,请确保虚拟机有足够的资源与下表中描述的物理机类似。
系统要求 | Description |
---|---|
数量 | 1 |
CPU | 32 个内核,64 个线程 |
磁盘 | 500 GB 根磁盘(1x SSD 或 2x 的带有 7200RPM 的硬盘驱动器;RAID 1) Object Storage (swift)的 500 GB 磁盘(1x SSD 或 2x 硬盘驱动器,7200RPM; RAID 1) |
内存 | 256 GB |
Network | 25 Gbps 网络接口或 10 Gbps 网络接口 |
2.2. Overcloud Controller 节点系统要求
所有 control plane 服务都必须在 3 个节点上运行。通常,所有 control plane 服务都部署在 3 个 Controller 节点上。
扩展控制器服务
要增加可用于控制器服务的资源,您可以将这些服务扩展到额外的节点。例如,您可以在专用节点上部署 db
或 messaging
控制器服务,以减少 Controller 节点上的负载。
要扩展控制器服务,请使用可组合角色来定义您要缩放的服务集合。使用可组合角色时,每个服务必须在 3 个额外的专用节点上运行,control plane 中的节点总数必须为奇数来维护 Pacemaker 仲裁。
本例中的 control plane 由以下 9 节点组成:
- 3 个控制器节点
- 3 个数据库节点
- 3 个消息传递节点
有关更多信息,请参阅高级 Overcloud 自定义中的可组合服务和自定义角色。
有关使用可组合角色扩展控制器服务的问题,请联系红帽全局专业服务。
存储注意事项
在 overcloud 部署中规划 Controller 节点时,包含足够的存储。OpenStack Telemetry Metrics (gnocchi)和 OpenStack Image service (glance)服务是 I/O 密集型。使用 Ceph Storage 和镜像服务进行遥测,因为 overcloud 将 I/O 负载移到 Ceph OSD 服务器。
如果您的部署不包括 Ceph 存储,请为 Telemetry Metrics (gnocchi)和 Image (glance)服务可以使用的专用磁盘或节点。如果您在 Controller 节点上使用对象存储,请使用与根磁盘分开的 NVMe 设备,以减少对象数据存储期间的磁盘用量。
对块存储服务(cinder)的大量并发操作,将卷上传到镜像存储服务(glance),因为镜像在控制器磁盘上放置可观的 IO 负载。您可以使用 SSD 磁盘提供更高的吞吐量。
CPU 注意事项
Controller 节点接收的 API 调用、AMQP 消息和数据库查询数量会影响 Controller 节点上的 CPU 内存消耗。每个 Red Hat OpenStack Platform (RHOSP)组件可以同时处理和执行任务的能力也受为每个独立 RHOSP 组件配置的 worker 线程数量的限制。RHOSP director 在控制器上配置的组件 worker 线程数量受 CPU 数量的限制。
在部署中使用 Ceph Storage 节点时,对于具有超过 700 节点的大型环境,建议使用以下规格:
系统要求 | Description |
---|---|
数量 | 带有控制器角色中包含的控制器服务的 3 个控制器节点。 另外,要在专用节点上扩展控制器服务,请使用可组合服务。有关更多信息,请参阅高级 Overcloud 自定义 中的可组合服务和客户角色。 |
CPU | 2 个插槽,每个有 32 个内核,64 个线程 |
磁盘 | 500GB 根磁盘(1x SSD 或 2x 硬盘驱动器,7200RPM;RAID 1) 500GB 专用磁盘 Swift (1x SSD 或 1x NVMe) 可选:用于镜像缓存的 500GB 磁盘(1x SSD 或 2x 硬盘驱动器,7200RPM;RAID 1) |
memory | 384GB |
Network | 25 Gbps 网络接口或 10 Gbps 网络接口。如果您使用 10 Gbps 网络接口,请使用网络绑定创建两个绑定:
|
当您不要在部署中使用 Ceph Storage 节点时,对于带有超过 700 节点的大型环境,建议使用以下规格:
系统要求 | Description |
---|---|
数量 | 带有控制器角色中包含的控制器服务的 3 个控制器节点。 另外,要在专用节点上扩展控制器服务,请使用可组合服务。有关更多信息,请参阅高级 Overcloud 自定义 中的可组合服务和客户角色。 |
CPU | 2 个插槽,每个有 32 个内核,64 个线程 |
磁盘 | 500GB 根磁盘(1x SSD) 500GB 专用磁盘 Swift (1x SSD 或 1x NVMe) 可选:用于镜像缓存的 500GB 磁盘(1x SSD 或 2x 硬盘驱动器,7200RPM;RAID 1) |
memory | 384GB |
Network | 25 Gbps 网络接口或 10 Gbps 网络接口。如果您使用 10 Gbps 网络接口,请使用网络绑定创建两个绑定:
|
2.3. Overcloud Compute 节点系统要求
在规划 overcloud 部署时,请查看 Compute 节点的建议系统要求。
系统要求 | Description |
---|---|
数量 | 红帽已测试了具有各种可组合计算角色的 700 个节点。 |
CPU | 2 个插槽,每个有 12 个内核,24 个线程 |
磁盘 | 500GB 根磁盘(1x SSD 或 2x 硬盘驱动器,7200RPM;RAID 1) |
内存 | 128GB (每个 NUMA 节点64GB); 默认情况下,为主机保留 2GB。 使用分布式虚拟路由,将保留 RAM 增加到 5GB。 |
Network | 25 Gbps 网络接口或 10 Gbps 网络接口。如果您使用 10 Gbps 网络接口,请使用网络绑定创建两个绑定:
|
2.4. Red Hat Ceph Storage 节点系统要求
在规划 overcloud 部署时,请查看以下 Ceph 存储节点的建议系统要求。
系统要求 | Description |
---|---|
数量 | 您必须最少有 5 个节点,并具有三向复制。使用 all-flash 配置时,必须至少有 3 个节点,并具有双向复制。 |
CPU | 每个 OSD 1 个 Intel Broadwell CPU 内核以支持存储 I/O 要求。如果您使用轻量级 I/O 工作负载,您可能不需要 Ceph 在块设备的速度运行。例如,对于某些 NFV 应用,Ceph 提供数据持久性、高可用性和低延迟,但吞吐量不是目标,因此可以接受提供较少的 CPU 能力。 |
内存 | 确保每个 OSD 有 5 GB RAM。这是缓存 OSD 数据和元数据以优化性能所必需的,而不仅仅是 OSD 进程内存。对于超融合基础架构(HCI)环境,请结合使用 Compute 节点规格来计算所需的内存。 |
Network | 确保网络容量(以 MB/s 为单位)大于 Ceph 设备的总 MB/s 容量,以支持使用大 I/O 传输大小的工作负载。通过将 OSD 流量路由到单独的一组物理网络端口,使用集群网络来降低写入延迟。要在 Red Hat OpenStack Platform 中执行此操作,请为网络配置单独的 VLAN,并将 VLAN 分配给单独的物理网络接口。 |
磁盘 |
使用 Solid-State Drive (SSD)磁盘用于 bluestore |
有关 Ceph 节点硬件先决条件的更多信息,请参阅 Red Hat Storage 4 硬件指南中的选择硬件的一般原则。
有关 Ceph 节点的部署配置的更多信息,请参阅使用容器化 Red Hat Ceph 部署 overcloud。
有关更改存储复制号的更多信息,请参阅 Red Hat Ceph Storage 配置指南中的 池、放置组和 CRUSH 配置参考。
第 3 章 Red Hat OpenStack 部署最佳实践
在计划和准备部署 OpenStack 时,回顾以下最佳实践。您可以在自己的环境中应用这些实践中的一个或多个。
3.1. Red Hat OpenStack 部署准备
在部署 Red Hat OpenStack Platform (RHOSP)前,请查看以下部署准备任务列表。您可以在自己的环境中应用一个或多个部署准备任务:
- 设置用于内省的子网范围,以容纳您要一次执行内省的最大 overcloud 节点
- 当使用 director 部署和配置 RHOSP 时,使用 control plane 网络的 CIDR 标记来容纳您现在或将来添加的所有 overcloud 节点。
- 设置 overcloud 镜像上的 root 密码,以允许控制台访问 overcloud 镜像
在网络设置错误时,使用控制台对失败的部署进行故障排除。如需更多信息,请参阅 合作伙伴集成指南中的 将 virt-customize 安装到 director 和设置 Root 密码。在实施此建议时,遵循您的机构的信息安全策略进行密码管理。
另外,您可以使用
userdata_root_password.yaml
模板来使用NodeUserData
参数配置 root 密码。您可以在/usr/share/openstack-tripleo-heat-templates/firstboot/userdata_root_password.yaml
中找到模板。以下示例使用模板来配置
NodeUserData
参数:resource_registry: OS::TripleO::NodeUserData: /usr/share/openstack-tripleo-heat-templates/firstboot/userdata_root_password.yaml parameter_defaults: NodeRootPassword: '<password>'
- 使用调度程序提示为角色分配硬件
-
使用调度程序提示将硬件分配给角色,如
控制器
、计算
、CephStorage
等。调度程序提示提供更方便地识别影响特定硬件的部署问题。 -
nova-scheduler
(即单个进程)可在调度大量节点时覆盖它。当调度程序提示实施标签匹配时,调度程序提示会减少nova-scheduler
的负载。因此,nova-scheduler
在部署期间遇到较少的调度错误,在使用调度程序提示时部署需要较少的时间。 - 使用调度程序提示时不要使用配置集标记。
- 在性能测试中,为特定角色使用相同的硬件,以减少测试和性能结果的可变性。
- 有关更多信息,请参阅高级 Overcloud 自定义指南中的分配特定节点 ID。
-
使用调度程序提示将硬件分配给角色,如
- 将每个节点的全球名称(WWN)设置为每个节点的根磁盘提示,以防止节点在部署和引导过程中使用错误的磁盘
- 当节点包含多个磁盘时,请使用内省数据将 WWN 设置为每个节点的根磁盘提示。这可防止节点在部署和引导过程中使用错误的磁盘。如需更多信息,请参阅 Director 安装和使用指南中的 为多磁盘集群定义根磁盘。
- 在有多个磁盘的节点上启用自动清理裸机服务(ironic)
使用 Bare Metal 服务自动清理来清除具有多个磁盘的节点上的元数据,并可能有多个引导装载程序。因为磁盘上存在多个引导装载程序,节点可能会与引导磁盘不一致,这会导致在尝试拉取使用错误 URL 的元数据时节点部署失败。
要启用裸机服务自动清理,在 undercloud 节点上编辑
undercloud.conf
文件并添加以下行:clean_nodes = true
- 限制裸机(ironic)内省的节点数量
如果您同时在所有节点上执行内省,则可能会因为网络限制而出现故障。一次在最多 50 个节点上执行内省。
确保
undercloud.conf
文件中的dhcp_start
和dhcp_end
范围足够大,适用于您在环境中具有的节点数量。如果可用 IP 不足,请不要发布超过该范围的大小。这限制了同时内省操作的数量。要允许内省 DHCP 租期过期,在内省完成后,请不要在几分钟后发出更多 IP 地址。
- 为不同类型的配置准备 Ceph
以下列表是不同类型的配置的一组建议:
all-flash OSD 配置
每个 OSD 根据设备类型的 IOPS 容量需要额外的 CPU,因此 Ceph IOPS 在较低 OSD 数量下限于 CPU。对于 NVM SSD,这可能是比传统 HDD 更高的 IOPS 容量的两个顺序。对于 SATA/SAS SSD,预计一个比 HDD 更大的随机 IOPS/OSD 顺序,但仅有大约 2 倍到顺序 IOPS 增加的四倍。对于 OSD 设备,您可以提供比 Ceph 要求少的 CPU 资源。
Hyper Converged Infrastructure (HCI)
建议为 OpenStack Compute (nova)客户机保留至少一半的 CPU 容量、内存和网络。确保您有足够的 CPU 容量和内存来支持 OpenStack Compute (nova)客户机和 Ceph Storage。观察内存消耗,因为 Ceph Storage 内存消耗没有弹性。在多 CPU 套接字系统上,将带有 NUMA 支持的 Ceph 的 Ceph CPU 消耗限制为单个套接字。例如,使用
numactl -N 0 -p 0
命令。不要硬编码 Ceph 内存消耗到 1 个插槽。NFV 等对延迟敏感的应用程序
将 Ceph 放置到与 Ceph 使用网卡相同的 CPU 套接字上,并在可能的情况下将网卡中断限制到该 CPU 套接字(在不同的 NUMA 套接字和网卡上运行)。
如果使用双引导装载程序,请将 disk-by-path 用于 OSD map。这为用户提供一致的部署,这与使用设备名称不同。以下片段是 disk-by-path 映射的
CephAnsibleDisksConfig
示例。CephAnsibleDisksConfig: osd_scenario: non-collocated devices: - /dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:0:0 - /dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:1:0 dedicated_devices: - /dev/nvme0n1 - /dev/nvme0n1 journal_size: 512
3.2. Red Hat OpenStack 部署配置
查看以下 Red Hat OpenStack Platform (RHOSP)部署配置的建议列表:
- 使用较小的部署验证 heat 模板
- 部署由至少三个控制器、一个计算备注和三个 Ceph Storage 节点组成的小型环境。您可以使用此配置来确保所有 heat 模板都正确。
- 禁用 undercloud 上的遥测通知
您可以在 undercloud 上禁用以下 OpenStack 服务的遥测通知,以减少 RabbitMQ 队列:
- Compute (nova)
- networking (neutron)
- 编配(heat)
- 身份(keystone)
要禁用通知,在
/usr/share/openstack-tripleo-heat-templates/environments/disable-telemetry.yaml
模板中,将通知驱动程序设置为noop
。- 限制同时置备的节点数量
fifty 是可在一个企业级机架单元中适合的典型服务器数量,因此您可以一次部署一个机架节点。
为最大程度减少诊断部署问题所需的调试,一次不部署 50 个节点。但是,如果您要部署更多节点,红帽已同时成功测试了 100 个节点。
要批量扩展 Compute 节点,请使用
openstack overcloud deploy
命令和--limit
选项。这可能导致 undercloud 上节省的时间并降低资源消耗。
使用 --limit
选项以及以逗号分隔的 config-download playbook 中的标签列表,以使用特定的 config-download 任务运行部署。
- 禁用未使用的 NIC
如果 overcloud 部署期间有任何未使用的 NIC,您必须在 NIC 配置模板中定义未使用的接口,并将接口设置为
use_dhcp: false
和defroute: false
。如果您没有定义未使用的接口,则内省和扩展操作过程中可能会有路由问题和 IP 分配问题。默认情况下,NIC 设置
BOOTPROTO=dhcp
,这意味着未使用的 overcloud NIC 使用 PXE 调配所需的 IP 地址。这可以减少节点的可用 IP 地址池。- 关闭未使用的裸机置备(ironic)节点
- 确保您以维护模式关闭任何未使用的裸机置备(ironic)节点。红帽已确定,来自以前部署的节点处于维护模式。这可以通过 Bare Metal 自动清理进行,其中清理失败的节点被设置为维护模式。裸机置备不会跟踪处于维护模式的节点电源状态,并错误地报告电源状态为 off。这可能导致持续部署出现问题。当您在部署失败后重新部署时,请确保关闭使用节点的电源管理设备的所有未使用的节点。
3.3. 调优 undercloud
在计划扩展 RHOSP 部署并应用调整到默认的 undercloud 设置时,请参阅本节。
- 如果您使用 Telemetry 服务(ceilometer),请提高服务的性能
因为 Telemetry 服务是 CPU 密集型,所以 RHOSP 16.1 中不默认启用遥测。如果要使用 Telemetry,您可以提高服务的性能。
如需更多信息,请参阅 Deployment Recommendations for Specific Red Hat OpenStack Platform Services Guide 中的 Configuration recommendations for the Telemetry service i部分。
- 分离置备和配置过程
-
要只创建堆栈和相关 RHOSP 资源,您可以使用
--stack-only
选项运行部署命令。 - 红帽建议在部署超过 100 个节点时分隔堆栈和 config-download 步骤。
-
要只创建堆栈和相关 RHOSP 资源,您可以使用
包括 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
选项。 --limit
选项可用于将节点划分为不同的角色,以限制要部署的节点数量,或者分隔具有特定硬件类型的节点。要扩展操作,当只想在新节点上应用软件配置时,请将--limit
选项与--config-download-only
选项一起使用。$ 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>
3.4. 调整 overcloud
在计划扩展 Red Hat OpenStack Platform (RHOSP)部署并应用调整到默认的 overcloud 设置时,请查看以下部分:
- 增加 OVN OVSDB 客户端探测间隔以防止故障切换
为大型 RHOSP 部署增加 OVSDB 客户端探测间隔。Pacemaker 在配置的超时时间内没有从 OVN 获取响应时,Pacemaker 会触发
ovn-dbs-bundle
的故障转移。要将 OVN OVSDB 客户端探测间隔增加到 360 秒,请编辑 heat 模板中的OVNDBSPacemakerTimeout
参数:OVNDBSPacemakerTimeout: 360
在每个 Compute 和 Controller 节点上,OVN 控制器会定期探测 OVN SBDB,如果这些请求超时,OVN 控制器会重新同步。当使用创建资源的请求加载多个 Compute 和 Controller 节点时,默认的 60 秒超时值不足。要将 OVN SBDB 客户端探测器增加到 180 秒,请编辑 heat 模板中的
OVNOpenflowProbeInterval
参数:ControllerParameters: OVNRemoteProbeInterval: 180000 OVNOpenflowProbeInterval: 180
注意在 RHOSP 用户和服务触发操作过程中,由于资源限制(如 CPU 或内存资源限制),多个组件可以访问配置的超时值。这可能会导致对 haproxy 前端或后端、消息传递超时、db 查询相关的故障、集群不稳定等的超时请求失败。在初始部署后对 overcloud 环境进行基准测试,以帮助识别与超时相关的瓶颈。
第 4 章 调试建议和已知问题
参阅以下部分以调试可帮助您对部署进行故障排除的建议。
4.1. 已知问题
下表概述了现有当前限制。
- BZ#1857451 - Ansible fork 值应该有一个上限,当前计算需要改变
-
默认情况下,mistral 中的 Ansible playbook 被配置为使用
ansible.cfg
文件中的 10 个CPU_COUNT
fork。如果不使用--limit
选项,将 Ansible 执行限制为特定节点或一组节点,并将 Ansible 执行设置为在所有现有节点上运行,Ansible 会消耗几乎 100% 内存。
4.2. 内省调试
在调试内省时,检查以下建议列表。
- 在
undercloud.conf
文件中检查您的内省 DHCP 范围和 NIC -
如果其中任何一个值不正确,请修复它们,然后重新运行
openstack undercloud install
命令。 - 确保您不会尝试内省超过 DHCP 范围的节点允许
- 内省完成后,每个节点的 DHCP 租期会大约两分钟内继续激活。
- 确保目标节点响应
- 如果所有节点内省失败,请确保您可以使用配置的 NIC 以及带外接口凭证和地址通过原生 VLAN ping 目标节点。
- 在控制台中检查内省命令
- 要调试特定节点,请在节点引导时观察控制台,并观察节点的内省命令。如果在节点完成 PXE 进程前停止,请检查连接、IP 分配和网络负载。当节点退出 BIOS 并引导内省镜像时,故障会很少,与连接问题几乎独占相关。确保来自内省镜像的心跳不会随其到 undercloud 的方式中断。
4.3. 部署调试
在调试部署时使用以下建议。
- 检查在 provisioning 网络中提供地址的 DHCP 服务器
在置备网络上提供地址的任何其他 DHCP 服务器都可能会阻止 Red Hat OpenStack Platform director 检查和置备机器。
对于 DHCP 或 PXE 内省问题,请输入以下命令:
$ sudo tcpdump -i any port 67 or port 68 or port 69
对于 DHCP 或 PXE 部署问题,请输入以下命令:
$ sudo ip netns exec qdhcp tcpdump -i <interface> port 67 or port 68 or port 69
- 检查失败或外磁盘的状态
-
对于失败或外磁盘,请查看您的磁盘状态,以确保根据机器的带外管理,故障或外部磁盘的状态已设置为
Up
。磁盘可以在部署周期内退出Up
状态,并更改磁盘出现在基础操作系统中的顺序。 - 使用以下命令调试失败的 overcloud 部署
-
OpenStack stack failures list overcloud
-
heat resource-list -n5 overcloud | grep -i fail
-
less /var/lib/mistral/config-download-latest/ansible.log
要查看命令的输出,请登录到发生故障的节点,并查看
/var/log/
和/var/log/containers/
中的日志文件。-