解决了"找不到有效主机,可用主机不足"的问题
使用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/*