|
|
目录
7 B, Y. b' V& q' ]8 l5 hNo valid host was found. There are not enough hosts available-----openstack建虚拟机直接报错2 h2 S! r. t+ w
一、问题现象:/ ~5 ~$ [# J) s8 K ?
二、解决思路:
" X3 z# Z6 Z4 N% \' L1、查看计算节点的nova-compute 日志,发现如下日志:1 C' a k% U7 \3 C( A! `0 N
2、查看nova-scheduler.log
/ f, b6 P3 A2 \+ N% F$ `& z3、进数据查看数据库表
, U" g' A- s. v$ O8 q( \2 F6 P4、尝试将compute节点从nova service-list中删除,并重新加入到集群中3 s* S# Y. ?- \
5、再次进入数据库,执行 select * from resource_providers;) H: B& |3 [2 ]" @" X5 G
6、查找官网,找到了操作 resource_providers的openstack命令,执行如下操作。
8 o. m* F) Y% K% Q; r一、问题现象:
( v% R( i# Z ]本次环境中只有一个计算节点,创建虚拟机直接报错,使用nova show 看到报错如下图:1 N r& _. o$ O* j) d; A! M$ s }
"message": "No valid host was found. There are not enough hosts available.", "code": 500
. k! K% `8 x5 X) _
4 u- v8 t, F. K) T二、解决思路:
7 v) ^# L% w1 V( l5 f, Q, q1、查看计算节点的nova-compute 日志,发现如下日志:
' n6 U$ D @9 X1 S X1 m$ ^2019-11-21 19:47:09.484 8 ERROR nova.scheduler.client.report [req-cbc37e88-16be-4b5b-be98-d889cd1b01dc - - - - -] [req-a5a6d438-3f63-49aa-9dd2-98d061b122b4] Failed to create resource provider record in placement API for UUID d878a164-6499-43d4-9772-b77107a1bb8c. Got 409: {"errors": [
4 j6 ~/ v8 n" I2 ]! V& u{"status": 409, "request_id": "req-a5a6d438-3f63-49aa-9dd2-98d061b122b4", "detail": "There was a conflict when trying to complete your request.\n\n Conflicting resource provider name: compute1 already exists. ", "title": "Conflict"}9 ~. b' U5 @# W. t
2019-11-21 19:47:09.485 8 ERROR nova.compute.manager [req-cbc37e88-16be-4b5b-be98-d889cd1b01dc - - - - -] Error updating resources for node compute1.: ResourceProviderCreationFailed: Failed to create resource provider compute1. G% ~! r4 l* s. G
发现ResourceProviderCreationFailed: Failed to create resource provider compute1 ,发现resource Provider 创建失败。怀疑数据库resource provider 表没有建出来,继续查看nova-nova-scheduler.log。& ^0 d4 \7 G l4 a5 o
2、查看nova-scheduler.log
( W9 N" E* B# A: U2019-11-21 20:18:43.360 29 INFO nova.filters [req-448bd5fa-ddc8-45d9-9b8b-a63bdb691335 e0111848d3904a7288df61cac5163f4f 9be97009f556459cb1814232dbedb4a3 - default default] Filter RetryFilter returned 0 hosts
/ V9 [" i7 Q y) X/ ?7 { A2019-11-21 20:18:43.362 29 INFO nova.filters [req-448bd5fa-ddc8-45d9-9b8b-a63bdb691335 e0111848d3904a7288df61cac5163f4f 9be97009f556459cb1814232dbedb4a3 - default default] Filtering removed all hosts for the request with instance ID 'c9542c1c-191e-49f2-815a-fdcacc081af6'. Filter results: ['RetryFilter: (start: 0, end: 0)']$ F3 o( h4 x4 I, w8 R; E" n( `
3、进数据查看数据库表
1 D' l, j! W* [mysql> use nova_api;
) w: r! j/ D: G- H- `mysql[nova_api] > select * from resource_providers;
; s% z+ B8 h( Q% h; m( ^: {0 ]+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
" O! N# ]' d$ O1 d% l| created_at | updated_at | id | uuid | name | generation | can_host | root_provider_id | parent_provider_id |
5 x! Y+ p- d5 Q+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+: S$ l1 J" _' U, {
| 2019-11-21 06:17:39 | 2019-11-21 06:17:41 | 3 | 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 | 1 | NULL | 3 | NULL |
" P7 r" a c. P0 w: k0 f/ {0 T2 E" B+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+5 V; Z! e" V7 U" H: X8 }" Q
1 row in set (0.00 sec)
& I o5 s0 }+ q5 {$ [发现有数据。重新创建虚拟机,依然会发生报错,
" W4 p8 g5 ~& f. e: @$ U+ H9 r W4、尝试将compute节点从nova service-list中删除,并重新加入到集群中 E9 w; P; O1 l0 D( m* W# a
# 停掉compute节点的nova-compute 服务
% k i$ A8 x0 g! O& G; b8 dnova service-delete <计算节点的uuid>3 ~* N5 X e7 Z% r
# 开启计算节点的nova-compute服务,让计算节点重新注册; r2 A7 j+ I6 n# j( W
尝试创建虚拟机,发现还是报错。返回去,查看nova-compute的日志发现 There was a conflict when trying to complete your request.\n\n Conflicting resource provider name: compute1 already exists. 。提示矛盾。
- k, ~3 Z7 s9 M: V4 m1 |4 S+ g5、再次进入数据库,执行 select * from resource_providers; H! }( a3 @5 z3 b% h$ g# z' _8 ^5 H+ b
mysql> use nova_api;1 ] q/ L( i R
mysql[nova_api] > select * from resource_providers;4 ]. T2 y. U# ?0 X9 H4 b+ T5 O# J
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+5 h, d! H5 r" _, r) U
| created_at | updated_at | id | uuid | name | generation | can_host | root_provider_id | parent_provider_id |- g9 l, u' I( Z: s
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
, X6 z: z5 m" }1 c9 C| 2019-11-21 06:17:39 | 2019-11-21 06:17:41 | 3 | 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 | 1 | NULL | 3 | NULL |
' n5 O" _3 L1 @" c8 `+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+; h( u }) E4 s
1 row in set (0.00 sec)
: g, V0 `( \9 ^# U发现新注册的计算节点,但是resource_providers的uuid 没有发生变化,怀疑是注册compute节点的时候,并没有更新resource_providers,尝试删除resource_providers;/ n. O/ \2 R! V, W
& Z% W8 x" j" X7 I# [0 L8 i4 z; V( C4 |( X
/ Y! t0 M( n, B7 S" g: a# Y查找官网,找到了操作 resource_providers的openstack命令,执行如下操作。 R( U6 _8 f! X+ I
相关文档:https://docs.openstack.org/osc-placement/latest/cli/index.html
# n2 |9 `! o# Z6 {, n8 X" w相关软件包:https://cbs.centos.org/kojifiles/packages/python-osc-placement/1.3.0/1.el7/noarch/python2-osc-placement-1.3.0-1.el7.noarch.rpm( y- L( Z: E, m* S5 S
# 安装osc-placement 软件包,生成命令行工具2 X! { W' t: M( G
# 执行如下命令:0 q3 I6 L" B- j0 r* m
export OS_PLACEMENT_API_VERSION=1.10/ B. R7 z2 K( Q7 Y& t' S, ^# r3 t$ {
openstack allocation candidate list --resource VCPU=1# @( h6 |4 s3 j' k- K2 k/ X, i
# 查看当前resource provider* X' b8 b) ]2 X8 m- u
[root@control1 ~]# openstack resource provider list
' m$ y7 v+ d# Y ~4 \+--------------------------------------+----------+------------++ Z9 P" y' v" v$ D
| uuid | name | generation |
7 i5 h0 _4 g$ a- _4 j; Y. b S& Q' n) b+--------------------------------------+----------+------------+$ w+ Y5 c r2 t& Q$ j( [4 `
| 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 | 2 |
4 e: |- W8 A. C: }; i+--------------------------------------+----------+------------+) O& n1 {1 N/ U- U# O( d7 w
# 停止计算节点nova-compute服务* @ F- R8 R% G8 H5 O! a
# 从service 中删除compute1
! z. Y# z9 Q- S Gnova service-delete <uuid>( R& U4 \. W/ g( W
# 删除当前resource provider$ [1 p V, u* M! V( s
openstack resource provider delete 16d1bd53-7919-4fef-9a11-a0e98c149823, @$ q% ~; z$ B# b
# 重启nova-compute服务,让其自动注册
) C. u/ e1 l" Y E' `0 ]1 a# 查看当前resource provider
. H1 f$ ~! ^& |/ L- H[root@control1 ~]# openstack resource provider list
" [2 h3 e" ^/ S1 R# F1 R+--------------------------------------+----------+------------+7 R0 k ~7 s+ b/ |. O
| uuid | name | generation |8 [# @ S6 t( p. Y
+--------------------------------------+----------+------------+) {# G- t9 B O7 @
| b32cd7b5-26c6-4998-97f1-79fa2315871b | compute1 | 2 |9 l, l/ g4 G0 j- {4 [- T
+--------------------------------------+----------+------------+
3 }" {8 s* v. e2 W" T# # 执行如下命令,验证是否更新了数据
6 V" B- i; z3 c0 jexport OS_PLACEMENT_API_VERSION=1.10) w' x" O9 a, D" [- d
openstack allocation candidate list --resource VCPU=1
+ p3 n9 z# P) |( U执行创建云主机,云主机成功创建。; D' E9 ~: W' \2 X: K
|
|