我正在构建一个 openstack 集群,遇到了一些问题,我认为可能是配额问题。我可以在每个主机上成功构建虚拟机,但每个主机只能构建一个虚拟机。
我使用 puppet 部署了系统。目前部署的 openstack 版本是 Ussuri。使用的 openstack puppet 模块是 17.4,但 puppet-vswitch 除外,它使用 13.4
每个计算主机(虚拟机管理程序)都有 64 个核心和 512GB 的 RAM。即使我启动了 2 核虚拟机,也无法在该虚拟机管理程序上启动更多,并且我在日志中收到以下错误:
调度程序.log:
"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
| 浮动 IP | 无
| 健康监控 | 无
| 注入文件大小 | 10240
| 注入文件 | 5
| 注入路径大小 | 255
| 实例 | 10000
| 密钥对 | 100 | 项目名称 | 管理员 |
属性 | 128
| ram | 99999999
我不太确定我还能检查什么,从我所做的搜索来看,似乎没有其他人遇到过类似的问题,所以我希望这是我所缺少的简单设置。
编辑 5-26-21:我进行了更多测试,发现了一个有趣的模式。
如果我在计算主机上放置一台 1 核机器(类型 m1.nano),那么我就可以构建任意数量的虚拟机,任何我想要的类型,直到机器在物理上耗尽资源为止。
如果我创建大于 1 核虚拟机的任何东西,并且该虚拟机在没有 1 核虚拟机的计算主机上启动,则在放置单台机器后,在此主机上构建的任何其他虚拟机都将失败。
除了告诉我当它失败时无法分配 vcpus 之外,日志没有任何帮助。
编辑以添加部署方法和 openstack 版本。
提前致谢!-杰夫
答案1
我最近发现这样的错误是由于 MariaDB 问题(https://jira.mariadb.org/browse/MDEV-25714)。我的情况是MariaDB是10.6.5版本。
在调试模式下运行 Placement API 时,其日志会显示类似以下消息
“资源提供商的 VCPU 容量过大。需要:1,已用:4118,容量:768.0”
但检查展示位置数据库/分配表中的条目显示“4118”是全部资源为所提供的资源,而不只是针对CPU类。
该问题是由于 DBMS 在检索当前分配的资源时处理带有子查询的“外连接”时出现错误而导致的。
您可能需要运行该票中“Daniel Howard”描述的测试,以验证您的 MariaDB 版本是否也受到影响 - 当然,除非您遇到这些问题但根本没有使用 MariaDB。