|
|
目录% y! d: @- L# ^+ s: ^7 g3 y
No valid host was found. There are not enough hosts available-----openstack建虚拟机直接报错' x4 u1 v& X9 S1 P( r- D
一、问题现象:# ?' o9 @7 a' ]6 u7 D' }& [
二、解决思路:
) e) h1 E o7 Q) A* u! p" W1、查看计算节点的nova-compute 日志,发现如下日志:% E. t2 n% i$ T+ L5 z
2、查看nova-scheduler.log
' y: P% H) @. b$ z7 x( z& t. e- C3、进数据查看数据库表6 J9 S7 |( m F) A( H/ H( ?* X
4、尝试将compute节点从nova service-list中删除,并重新加入到集群中
' ^' B2 J7 E1 c' w5、再次进入数据库,执行 select * from resource_providers;+ b) I- Z3 n# ]2 g ?9 v
6、查找官网,找到了操作 resource_providers的openstack命令,执行如下操作。
' E; q' B5 f# w* G一、问题现象:
4 d0 u3 X" r" i. Y- r# z* X& ]本次环境中只有一个计算节点,创建虚拟机直接报错,使用nova show 看到报错如下图:
( \) |) r$ W- |/ ?& L; j* ^& i"message": "No valid host was found. There are not enough hosts available.", "code": 500
( R. b6 h- |2 J) E! ?! c
/ z/ L5 w2 l" G8 z: o二、解决思路:3 R4 E1 O, r% d/ E' B% f' _
1、查看计算节点的nova-compute 日志,发现如下日志:) X3 J/ E7 C& e/ l! m' z
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": [
* G/ X, v; t) |! u4 f0 r* |8 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"}- C+ P- R0 i' p% \
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
2 r0 z" i4 Z5 y+ F) @发现ResourceProviderCreationFailed: Failed to create resource provider compute1 ,发现resource Provider 创建失败。怀疑数据库resource provider 表没有建出来,继续查看nova-nova-scheduler.log。
5 S* ~7 L% i1 b( k% g$ o4 o3 w2、查看nova-scheduler.log
, V6 A" D- w3 M: P5 v1 ?, `2019-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
8 z: ]# n! q# U5 X- V! 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)']
+ g* m* u# x* v; _3、进数据查看数据库表
* \+ V, q" a$ }9 d9 \1 c- v, Umysql> use nova_api;* R$ ?' m6 b0 c: {+ D4 X! e, A q
mysql[nova_api] > select * from resource_providers;# l/ h' _; R) C9 b
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
; f) Z' S8 k' b- ?/ f% m1 T3 \2 ?| created_at | updated_at | id | uuid | name | generation | can_host | root_provider_id | parent_provider_id |
7 j9 p6 Y7 _% W$ i- _2 }% w! S+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
' [- X0 A6 j& n* X; f. l8 i| 2019-11-21 06:17:39 | 2019-11-21 06:17:41 | 3 | 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 | 1 | NULL | 3 | NULL |
$ e$ Y2 }7 @: e9 C5 R |+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
( {7 v/ F! |" A2 Z# s: i! H' U1 row in set (0.00 sec)7 l+ \& Z! i8 ^6 ]+ R1 {7 A
发现有数据。重新创建虚拟机,依然会发生报错,! q$ m8 s- A0 H/ v3 U9 J% e/ E# E3 T
4、尝试将compute节点从nova service-list中删除,并重新加入到集群中
: j. I/ q) c h* ~) q7 K( o# 停掉compute节点的nova-compute 服务
5 `: Y# j7 }/ u& G$ Y6 k) a8 v& ?nova service-delete <计算节点的uuid>
* r; B7 g+ e4 e- }* l4 @4 W# 开启计算节点的nova-compute服务,让计算节点重新注册
0 @5 Y2 E5 z7 h/ g f尝试创建虚拟机,发现还是报错。返回去,查看nova-compute的日志发现 There was a conflict when trying to complete your request.\n\n Conflicting resource provider name: compute1 already exists. 。提示矛盾。
' d9 L$ D, k H" t5、再次进入数据库,执行 select * from resource_providers;
3 s. u) L4 l& pmysql> use nova_api;3 Y6 _* c: N, l: e& p- P
mysql[nova_api] > select * from resource_providers;
0 ~8 Y* R; E" }+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+* |. L) X$ R4 _9 W+ ]$ R- |! N
| created_at | updated_at | id | uuid | name | generation | can_host | root_provider_id | parent_provider_id |$ J$ U1 [* t2 s, h
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+8 [" C( |, p* k# [' \! K
| 2019-11-21 06:17:39 | 2019-11-21 06:17:41 | 3 | 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 | 1 | NULL | 3 | NULL |
2 S+ n) d0 L6 b+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+ }; d, g2 [5 C- b0 v
1 row in set (0.00 sec)
5 z D$ B+ L1 E1 I发现新注册的计算节点,但是resource_providers的uuid 没有发生变化,怀疑是注册compute节点的时候,并没有更新resource_providers,尝试删除resource_providers;
3 J5 u+ p; p6 H7 i: m2 M9 j; P- j+ \- T Z
4 K0 d! o6 ~; M& D& L& r8 p
! k$ x6 S& I& Q7 W
查找官网,找到了操作 resource_providers的openstack命令,执行如下操作。/ ]: r% e6 l5 h$ m: }
相关文档:https://docs.openstack.org/osc-placement/latest/cli/index.html% {; x `, P4 K/ b1 t, t4 e; a
相关软件包: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
. d/ U$ g( c$ Z1 {) y) v0 H# 安装osc-placement 软件包,生成命令行工具
* D4 Q5 l6 \* \5 i/ M e# 执行如下命令:( u" F1 n9 A0 r8 K, ]' I
export OS_PLACEMENT_API_VERSION=1.10
B/ f% M+ c* l* s Mopenstack allocation candidate list --resource VCPU=1$ e ~, x4 [' i* V1 q& j& w$ r
# 查看当前resource provider
, ~! H3 B# n5 Q7 s# R% H7 l[root@control1 ~]# openstack resource provider list
$ _' w1 G* n- d3 X. `5 H5 Y6 L+--------------------------------------+----------+------------+
/ w) O. U& Y2 U0 v. \| uuid | name | generation |
( [+ T: f& G5 a+--------------------------------------+----------+------------+
2 J( G- z, B, Z8 ~/ L- Y7 b5 N" E| 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 | 2 |
' u! g) M4 F2 ]5 k+ x/ Y) r: J+--------------------------------------+----------+------------+
2 q- D4 t% q) ?3 _7 Z ?/ b# 停止计算节点nova-compute服务
' n/ o1 ]! P3 q7 x! Z; X. C# 从service 中删除compute1. f8 k7 H. c$ K
nova service-delete <uuid>3 W+ }2 w a' V( Q" h, k# G
# 删除当前resource provider
$ e$ W: ^2 {7 w1 C, kopenstack resource provider delete 16d1bd53-7919-4fef-9a11-a0e98c149823
/ G; E4 d9 B' ] ~: t# 重启nova-compute服务,让其自动注册
) ~( B# J8 [2 Q# 查看当前resource provider
( E v; F8 G; T. Q[root@control1 ~]# openstack resource provider list, o# f; v& H# [
+--------------------------------------+----------+------------+( o7 u4 b2 ]8 k+ B2 Z# y8 w
| uuid | name | generation |
/ W/ `1 \% |. X) g+--------------------------------------+----------+------------+
, W$ [5 H( z$ Z3 m| b32cd7b5-26c6-4998-97f1-79fa2315871b | compute1 | 2 |/ Q, Z5 I" _% s! n) ?* g
+--------------------------------------+----------+------------+
P5 f8 r4 l) F g' P7 X# # 执行如下命令,验证是否更新了数据" q# ~7 r8 F. l' j
export OS_PLACEMENT_API_VERSION=1.10
3 d" ~+ Z b( b L7 l2 o* v+ \openstack allocation candidate list --resource VCPU=18 O0 O" ]2 h$ q
执行创建云主机,云主机成功创建。
( H+ u5 L- v* }# U t/ U |
|