我正在构建一个 openstack 集群,并且遇到了一些我认为可能是配额问题的问题。我可以在每台主机上成功构建虚拟机,但每台主机只有一个虚拟机。
我使用 puppet 部署了系统。当前部署的 openstack 版本是 Ussuri。使用的 openstack puppet 模块是 17.4,除了使用 13.4 的 puppet-vswitch
每个计算主机(管理程序)有 64 个内核和 512GB 的 RAM。即使我启动了一个 2 核 vm,我也无法在该虚拟机管理程序上再启动,并且我在日志中收到以下错误:
调度程序日志:
"status": 409, "title": "Conflict", "detail": "There was a conflict when trying to complete your request.\n\n Unable to allocate inventory: Unable to create allocation for 'VCPU' on resource provider
nova-conductor.log
2021-05-24 15:31:21.770 31421 ERROR nova.conductor.manager [req-18e93e25-5cc2-43b6-a036-312ed064070b 9f72d8a0694146288eb09ac7fee38298 7016985dddfe4048b535ca7ff12a0c68 - default default] Failed to schedule instances: nova.exception_Remote.NoValidHost_Remote: No valid host was found. There are not enough hosts available.
我已经检查并重新检查了该项目的配额,并且实例数设置为 10000,所以我不确定我缺少什么:
| 固定IP | 10000
| 浮动_ips | 无
| 健康监视器 | 无
| 注入文件大小 | 10240
| 注入文件 | 5
| 注入路径大小 | 255
| 实例 | 10000
| 密钥对 | 100 | 项目名称 | 管理员
| 属性 | 128
| 公羊 | 99999999
我不太确定我还能检查什么,并且从我所做的搜索来看,似乎没有其他人遇到过这样的事情,所以我希望我缺少一个简单的设置。
编辑 5-26-21:我进行了更多测试,发现了一个有趣的模式。
如果我在计算主机上放置一台 1 核机器(风格 m1.nano),我可以构建任意数量的虚拟机,任何我想要的风格,直到机器物理运行资源。
如果我创建了大于 1 核 vm 的任何东西,并且该 vm 是在还没有 1 核 vm 的计算主机上启动的,那么在放置一台机器后,在该主机上构建的任何其他 vm 都会失败。
除了告诉我它在失败时无法分配 vcpus 之外,日志没有任何帮助。
编辑添加部署方法和 openstack 版本。
提前致谢!-杰夫
我最近将此类错误归结为 MariaDB 问题(https://jira.mariadb.org/browse/MDEV-25714)。就我而言,MariaDB 的版本是 10.6.5。
在调试模式下运行放置 API 时,它的日志显示如下消息
“资源提供程序上的 VCPU 容量过剩。需要:1,已使用:4118,容量:768.0”
但检查放置数据库/分配表中的条目显示“4118”是所提供资源的所有资源的总和,而不仅仅是 CPU 类。
该问题是由于 DBMS 在检索当前分配的资源时使用子查询处理“外部连接”时出现错误所致。
您可能希望运行该票证中“Daniel Howard”描述的测试,以验证您的 MariaDB 版本是否也受到影响 - 当然,除非您遇到这些问题但根本没有使用 MariaDB。