大规模部署 Red Hat OpenStack Platform
大型部署的硬件要求和建议
OpenStack Documentation Team
rhos-docs@redhat.com
摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。
在 JIRA 中提供文档反馈
使用 Create Issue 表单对文档提供反馈。JIRA 问题将在 Red Hat OpenStack Platform Jira 项目中创建,您可以在其中跟踪您的反馈进度。
- 确保您已登录到 JIRA。如果您没有 JIRA 帐户,请创建一个帐户来提交反馈。
- 点击以下链接打开 Create Issue 页面: Create Issue
- 完成 Summary 和 Description 字段。在 Description 字段中,包含文档 URL、章节或章节号以及问题的详细描述。不要修改表单中的任何其他字段。
- 点 Create。
第 1 章 对大型部署的建议
使用以下 undercloud 和 overcloud 建议、规格和配置来部署大型 Red Hat OpenStack Platform (RHOSP)环境。包括超过 100 个 overcloud 节点的 RHOSP 17.1 部署被视为大型环境。红帽已在不使用 minion 的情况下,使用 RHOSP 17.1 在大型扩展环境中测试并验证了最佳性能。
对于基于 DCN 的部署,中央和边缘站点中的节点数可能非常高。有关 DCN 部署的建议,请联系红帽全球支持服务。
第 2 章 有关大型 Red Hat OpenStack 部署的推荐规格
您可以使用提供的建议来扩展大型集群部署。
以下流程中的值基于测试 Red Hat OpenStack Platform Performance & Scale Team 执行,并根据单个环境的不同而有所不同。
2.1. undercloud 系统要求
为获得最佳性能,请在物理服务器上安装 undercloud 节点。但是,如果您使用虚拟化 undercloud 节点,请确保虚拟机有足够的资源与下表中描述的物理机类似。
表 2.1. undercloud 节点的建议规格
系统要求 | Description |
---|---|
数量 | 1 |
CPU | 32 个内核,64 个线程 |
磁盘 | 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 个消息传递节点
如需更多信息,请参阅自定义 Red Hat OpenStack Platform 部署中的 可组合服务和自定义角色。
有关使用可组合角色扩展控制器服务的问题,请联系红帽全局咨询。
存储注意事项
在 overcloud 部署中规划 Controller 节点时,包含足够的存储。
如果您的部署不包括 Ceph 存储,请将专用磁盘或节点用于 overcloud 工作负载或镜像(glance)服务可以使用的 Object Storage (swift)。如果您在 Controller 节点上使用对象存储,请使用独立于根磁盘的 NVMe 设备来减少对象存储期间的磁盘使用。
块存储服务(cinder)需要广泛的并发操作才能将卷上传到镜像存储服务(glance)。镜像在 Controller 磁盘上造成显著的 I/O 负载。这不是批量操作的建议工作流,但如果有必要,使用 Controller 节点上的 SSD 磁盘为此类操作提供更高的 IOPS。
- 默认情况下,基于 Ceilometer、gnocchi 和 Alarming 服务(aodh)的旧 Telemetry 服务会被默认禁用,因此不建议因为对性能影响造成负面影响。如果您启用这些 Telemetry 服务,gnocchi 非常大,并在 Ceph 未启用时向 Object Storage 节点发送指标。
- 所有大规模测试都在带有 Director 部署的 Ceph 集群的环境中进行。
CPU 注意事项
Controller 节点接收的 API 调用、AMQP 消息和数据库查询数量会影响 Controller 节点上的 CPU 内存消耗。每个 Red Hat OpenStack Platform (RHOSP)组件可以同时处理和执行任务的能力也受为每个独立 RHOSP 组件配置的 worker 线程数量的限制。为了避免性能下降,CPU 节点上具有大量任务的组件的最大 worker 线程数量会限制。
RHOSP director 在控制器上配置的组件 worker 线程数量受 CPU 数量的限制。
在部署中使用 Ceph Storage 节点时,对于具有超过 700 节点的大型环境,建议使用以下规格:
表 2.2. 使用 Ceph Storage 节点时为 Controller 节点推荐的规格
系统要求 | Description |
---|---|
数量 | 带有控制器角色中包含的控制器服务的 3 个控制器节点。 另外,要在专用节点上扩展控制器服务,请使用可组合服务。如需更多信息,请参阅自定义 Red Hat OpenStack Platform 部署 指南中的 可组合服务和客户角色。 |
CPU | 2 个插槽,每个有 32 个内核,64 个线程 |
磁盘 | 500 GB 根磁盘(1x SSD 或 2x 的带有 7200RPM 的硬盘驱动器;RAID 1) 500GB 专用磁盘 Swift (1x SSD 或 1x NVMe) |
memory | 384 GB |
Network | 25 Gbps 网络接口或 10 Gbps 网络接口。如果您使用 10 Gbps 网络接口,请使用网络绑定创建两个绑定:
|
当您不要在部署中使用 Ceph Storage 节点时,对于带有超过 700 节点的大型环境,建议使用以下规格:
表 2.3. 如果不使用 Ceph Storage 节点时,为 Controller 节点推荐的规格
系统要求 | Description |
---|---|
数量 | 带有控制器角色中包含的控制器服务的 3 个控制器节点。 另外,要在专用节点上扩展控制器服务,请使用可组合服务。如需更多信息,请参阅自定义 Red Hat OpenStack Platform 部署 指南中的 可组合服务和客户角色。 |
CPU | 2 个插槽,每个有 32 个内核,64 个线程 |
磁盘 | 500GB 根磁盘(1x SSD) 500GB 专用磁盘 Swift (1x SSD 或 1x NVMe) |
memory | 384 GB |
Network | 25 Gbps 网络接口或 10 Gbps 网络接口。如果您使用 10 Gbps 网络接口,请使用网络绑定创建两个绑定:
|
2.3. Overcloud Compute 节点系统要求
在规划 overcloud 部署时,请查看 Compute 节点的建议系统要求。
表 2.4. Compute 节点的建议规格
系统要求 | Description |
---|---|
数量 | 红帽已测试了具有各种可组合计算节点的 750 个节点。 |
CPU | 2 个插槽,每个有 12 个内核,24 个线程 |
磁盘 | 500 GB 根磁盘 |
内存 | 128 GB (每个 NUMA 节点 64 GB);默认情况下,为主机保留 2 GB。 使用分布式虚拟路由时,将保留的 RAM 增加到 5 GB。 |
Network | 25 Gbps 网络接口或 10 Gbps 网络接口。如果您使用 10 Gbps 网络接口,请使用网络绑定创建两个绑定:
|
2.4. Red Hat Ceph Storage 节点系统要求
对于 Ceph Storage 节点系统要求,请查看以下资源:
- 有关 Ceph 节点硬件先决条件的更多信息,请参阅 Red Hat Storage 4 硬件指南中的选择硬件的一般原则。
- 有关 Ceph 节点的部署配置的更多信息,请参阅 部署 Red Hat Ceph Storage 和 Red Hat OpenStack Platform 以及 director。
- 有关更改存储复制号的更多信息,请参阅 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 节点。
- 为首选网络启用 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_start
和dhcp_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
发送的探测的超时时间:neutron
、ovn-controller
和ovn-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: false
和defroute: 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
步骤。
-
要只创建堆栈和相关 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
选项。 对于扩展操作,若要仅在新节点上应用软件配置,您可以在
--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
选项或任务失败。