解决了"找不到有效主机,可用主机不足"的问题

时间:2020-01-09 10:39:14  来源:igfitidea点击:

使用TripleO执行Overcloud部署时出现此错误。

"No valid host was found. not enough hosts available"

在我的Openstack配置试运行期间,我收到此错误消息"找不到有效的主机。
没有足够的可用主机",由于各种原因可能会发生此消息。
但是,在进行overcloud部署时看到的最常见原因之一是目标nova主机和期望配置文件属性之间存在差异。

其中我试图分享一些可能的场景,以及提出的解决方案,我可以想到这些场景。

如何解决"找不到有效的主机,没有足够的主机"

错误消息:

从Undercloud Director执行overcloud部署时,我们可能会在控制台上收到以下错误消息

2016-08-14 06:42:59Z [overcloud.Controller.0.Controller]:CREATE_FAILED ResourceInError:resources.Controller:由于消息:找不到有效主机而进入状态错误。
没有足够的主机可用。
,代码:500" 2016-08-14 06:42:59Z [overcloud.Controller.0]:CREATE_FAILED资源创建失败:ResourceInError:resources.Controller:由于"消息:找不到有效主机,而进入状态ERROR。
有没有足够的主机。
,代码:500英寸

同样,在nova-conductor.log中,我们可能会发现以下消息

NOVA-conductor.log:2016年8月12日22:50:24.855 11372警告nova.scheduler.utils [REQ-1bcec69e-4ad1-4460-bdd0-506e701dd81b a557b3e88e20446d921adbea6667e9ec d7f4df43c5db41f08572f582344b4e6f  -   -   - ]无法compute_task_build_instances:没有有效的主机被发现。
没有足够的主机。

在nova-scheduler.log中,可能会显示以下消息

nova-scheduler.log:2016-08-13 16:22:48.035 1475信息nova.filters [req-291df51f-aac0-42dc-bc72-84dfdb3e4a0c a557b3e88e20446d921adbea6667e9ec d7f4df43c5db41f085'ing主机实例-已过滤所有实例的主机-] f6ec9c8e-4dd9-4995-92b7-b570bb06790f'。
筛选器结果:['RetryFilter:(开始:3,en,'TripleOCapabilitiesFilter:(开始:3,结束:3)','ComputeCapabilitiesFilter:(开始:3,结束:1)','AvailabilityZoneFilter:(开始:1, end:1)','RamFilter:(s1,end:1)','DiskFilter:(start:1,end:0)']

分析与解决方案:

方案1(检查维护模式状态):

首先,请确保所有节点都处于可用状态且未处于维护模式,并且尚未被现有实例使用。

[stack@undercloud-director ~]$openstack baremetal node list
+--------------------------------------+---------------------------+---------------+-------------+--------------------+-------------+
| UUID                                 | Name                      | Instance UUID | Power State | Provisioning State | Maintenance |
+--------------------------------------+---------------------------+---------------+-------------+--------------------+-------------+
| 8ef9b862-9a4f-4961-813c-4b81be7c8e48 | overcloud-controller      | None          | power off   | available          | False       |
| 7995f1f2-4af7-4c5d-9099-fc928c4c73b3 | overcloud-compute.example | None          | power off   | available          | False       |
| 7c84cdf2-c5b2-47fb-a741-30c025b54183 | overcloud-ceph.example    | None          | power off   | available          | False       |
+--------------------------------------+---------------------------+---------------+-------------+--------------------+-------------+

方案2(验证IPMI连接):

使用电源凭证检查undercloud节点是否能够连接到overcloud虚拟机管理程序(例如

G。
ipmi_address,ipmi_username和ipmi_password),因为如果undercloud节点无法连接到overcloud虚拟机管理程序,则它将无法获取虚拟机管理程序节点的详细信息。

[stack@undercloud-director ~]$ipmitool -I lanplus -H 10.43.138.12 -L ADMINISTRATOR -p 6320 -U admin -R 3 -N 5 -P redhat power status
Chassis Power is off
[stack@undercloud-director ~]$ipmitool -I lanplus -H 10.43.138.12 -L ADMINISTRATOR -p 6321 -U admin -R 3 -N 5 -P redhat power status
Chassis Power is off
[stack@undercloud-director ~]$ipmitool -I lanplus -H 10.43.138.12 -L ADMINISTRATOR -p 6320 -U admin -R 3 -N 5 -P redhat power status
Chassis Power is off

ipmitool可能无法连接到虚拟机监控程序,因此在overcloud部署期间添加节点功能会中断

方案3(必须正在运行计算服务):

另外,请确保我们已运行并启用了Compute服务:

[stack@undercloud-director ~]$openstack compute service list --service nova-compute
+----+--------------+-----------------------------+------+---------+-------+----------------------------+
| ID | Binary       | Host                        | Zone | Status  | State | Updated At                 |
+----+--------------+-----------------------------+------+---------+-------+----------------------------+
|  4 | nova-compute | undercloud-director.example | nova | enabled | up    | 2016-08-14T12:51:23.000000 |
+----+--------------+-----------------------------+------+---------+-------+----------------------------+

默认情况下,在连续10次构建失败后,Compute服务将停止运行(禁用)。
这是为了确保新的构建请求不会路由到损坏的Compute服务。
如果是这种情况,请确保修复故障原因,然后重新启用它:

$openstack compute service set --enable <COMPUTE HOST> nova-compute

方案4(节点和风味的属性必须相同):

最后,确保节点的属性与分配的风味的properties字段完全匹配。
在自省阶段填充节点的属性字段。

例如我节点的属性

[stack@undercloud-director ~]$openstack baremetal node show ece1651a-6adc-4826-9f77-5d47891c6c9b -c properties
+------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                           |
+------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
| properties | {u'memory_mb': u'10240', u'cpu_arch': u'x86_64', u'local_gb': u'49', u'cpus': u'4', u'capabilities':                                            |
|            | u'profile:control,cpu_aes:true,cpu_hugepages:true,boot_option:local'}                                                                           |
+------------+-------------------------------------------------------------------------------------------------------------------------------------------------+

如上所示,此节点的配置文件是控件,因此我们需要使用以下命令检查"控件"风味的属性。

[stack@undercloud-director ~]$openstack flavor show control -c properties -f value
capabilities:boot_option='local', capabilities:cpu_aes='true', capabilities:cpu_hugepages='true', capabilities:profile='control', cpu_arch='x86_64'

其中我们看到两个属性字段都完全匹配。

如何在Openstack中更新"节点"的属性内容?

无论如何我们都不建议我们手动更新节点的属性内容,因为属性字段会在overcloud配置的自省阶段自动填充,除非我们知道自己在做什么,否则我们不应该覆盖或者更改它们。
我们应该修改风味的属性以匹配节点的内容。
但是我们仍然可以使用以下命令更新节点的属性

$ironic node-update overcloud-controller.example add properties/capabilities='profile:control,cpu_aes:true,cpu_hugepages:true,boot_option:local'

如何在Openstack中更新flavor的属性字段?

要更新风味的属性部分,请使用以下命令

$openstack flavor set --property "capabilities:profile"="control"  --property "capabilities:cpu_aes"="true"  --property "capabilities:cpu_hugepages"="true" --property "capabilities:boot_option"="local" control

说明:

下面的链接包含更多选项或者参数,可在上述命令中使用https://docs.openstack.org/ironic/latest/install/configure-nova-flavors.html

当然,还有更多的可能性,这些是我在测试阶段所面对的很少。
无论如何,如果以上内容对我们没有帮助,那么有关此问题的更多信息,我们可以检查下面的日志文件

/var/log/ironic/*
/var/log/nova/*