|
|
目录
3 @6 k/ t" W/ J. HNo valid host was found. There are not enough hosts available-----openstack建虚拟机直接报错# @& \4 z G5 S6 X2 \8 w4 a
一、问题现象:
1 x( F& c$ F' b7 Z, U- t7 G v二、解决思路:
; C4 N s! Q3 ~6 L. i9 ?1、查看计算节点的nova-compute 日志,发现如下日志:
% Z2 {3 k% D; h+ d2、查看nova-scheduler.log: \2 U2 @. @+ ]; l+ I5 q& W
3、进数据查看数据库表
/ ^! L4 P# x% o8 Z7 C! ]4、尝试将compute节点从nova service-list中删除,并重新加入到集群中, L, D3 l3 \- O" { V3 ~* S" G7 U' t. P
5、再次进入数据库,执行 select * from resource_providers;5 I7 Y1 {3 m3 r) j
6、查找官网,找到了操作 resource_providers的openstack命令,执行如下操作。
& _" D0 x7 `/ d7 n5 x9 s1 _/ m一、问题现象:
" z3 M+ h1 i& E! ^3 l- |本次环境中只有一个计算节点,创建虚拟机直接报错,使用nova show 看到报错如下图:
3 b+ T6 x- z. J7 @( }6 F"message": "No valid host was found. There are not enough hosts available.", "code": 500
- k/ H8 e( b& }: D+ e
2 K- z) P' X( P7 d0 ^9 ]/ v二、解决思路:- W3 I9 M. P% n5 a
1、查看计算节点的nova-compute 日志,发现如下日志:
2 u9 Y) ]9 I7 U8 J1 J2019-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": [& y3 k# p! h) c% ?/ b& p
{"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 B5 r, k1 m, n" F3 k, V- V/ m! l2019-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
) e0 a0 A3 o+ G; b$ V4 p发现ResourceProviderCreationFailed: Failed to create resource provider compute1 ,发现resource Provider 创建失败。怀疑数据库resource provider 表没有建出来,继续查看nova-nova-scheduler.log。2 f& ^" q. x- m6 g& x, u: o
2、查看nova-scheduler.log2 n2 S- f$ f0 h" P5 U2 } J/ X
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% F# k% G2 F g0 y; Z
2019-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)']
! C- r* ^( z3 ?- [0 v% ^3、进数据查看数据库表- Y8 I$ o: A M7 t# }4 ?$ i, Z4 e
mysql> use nova_api;
' k @7 b @% {; x2 s- O% K& K+ hmysql[nova_api] > select * from resource_providers;
2 l2 W. W* J7 l/ n: A! A; A% G7 a+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+3 C8 n( m( D* n/ y. \
| created_at | updated_at | id | uuid | name | generation | can_host | root_provider_id | parent_provider_id |
, o. c. o, g6 Y4 F4 P) B9 m+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
( _( `9 }' o* @- d2 z$ f- X& c| 2019-11-21 06:17:39 | 2019-11-21 06:17:41 | 3 | 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 | 1 | NULL | 3 | NULL |
. n* [, v. I* _1 _+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
/ a1 c ?0 S/ a: D; T0 X1 row in set (0.00 sec)) W" a9 R* ]* Q
发现有数据。重新创建虚拟机,依然会发生报错,- I* U; B: S- l/ {, d' S3 M/ g
4、尝试将compute节点从nova service-list中删除,并重新加入到集群中( Y; j* w. {4 E; s9 Y
# 停掉compute节点的nova-compute 服务3 _/ a5 Y! [1 A- q9 T2 M* @! g- f3 ]' j
nova service-delete <计算节点的uuid>% G) {! _2 T( |/ @
# 开启计算节点的nova-compute服务,让计算节点重新注册
2 p0 m$ N9 }9 D2 Y7 N尝试创建虚拟机,发现还是报错。返回去,查看nova-compute的日志发现 There was a conflict when trying to complete your request.\n\n Conflicting resource provider name: compute1 already exists. 。提示矛盾。
( W; U" z3 a5 F5、再次进入数据库,执行 select * from resource_providers;5 t# L7 y/ d1 d4 `
mysql> use nova_api;
% b5 E1 v# H E s4 ~mysql[nova_api] > select * from resource_providers;! n& l, i, x# l; N" h, D" Y* r
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
u5 K* c6 X1 j# y9 D/ P0 M| created_at | updated_at | id | uuid | name | generation | can_host | root_provider_id | parent_provider_id |: k- A( F! k. t9 x' y
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+ c! P0 _$ @! N
| 2019-11-21 06:17:39 | 2019-11-21 06:17:41 | 3 | 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 | 1 | NULL | 3 | NULL |
+ ^! {0 Y' t6 ^3 i, _+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
4 Q5 v6 i( j( C" ?1 row in set (0.00 sec)- p: T# ]& g" Z* ~) F! Y# f/ l }
发现新注册的计算节点,但是resource_providers的uuid 没有发生变化,怀疑是注册compute节点的时候,并没有更新resource_providers,尝试删除resource_providers;
4 {6 i7 k7 N# M7 [' M' q# E" y4 d" M# K$ {6 i+ h( x
; b7 T Z% S) @8 ~& ?/ ~; T
& h* b9 |5 d( b* h7 i
查找官网,找到了操作 resource_providers的openstack命令,执行如下操作。
' r2 s( a: i# k8 |2 q/ L相关文档:https://docs.openstack.org/osc-placement/latest/cli/index.html6 F) H, `1 f# N; c: c) A8 u
相关软件包: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+ X. L! K' K3 K1 g
# 安装osc-placement 软件包,生成命令行工具
4 k) Y1 y$ E: g+ p9 F0 ]" k# 执行如下命令:& q6 O: F9 Q. W$ r/ f
export OS_PLACEMENT_API_VERSION=1.109 X8 M, @; o/ S' R' T# y
openstack allocation candidate list --resource VCPU=18 _+ I6 u: `7 N H: s
# 查看当前resource provider E/ ?2 v& [" y7 q% i0 @) j! X$ o e
[root@control1 ~]# openstack resource provider list) F* e: r9 \* ^9 j) a0 i0 a
+--------------------------------------+----------+------------+9 u1 H7 ^4 K/ l* ^
| uuid | name | generation |3 r" t, H0 v( I% n x" D# ?% f& N
+--------------------------------------+----------+------------+
% y5 b! m: T5 C! b' `| 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 | 2 |9 v7 K! \3 c' G2 i4 T; l5 q7 b
+--------------------------------------+----------+------------+
& R) j2 M- g7 L7 g# 停止计算节点nova-compute服务: t) h' U" W! m E1 {+ c
# 从service 中删除compute1
8 u7 w1 G" ?2 @1 T# E2 f1 v6 r- Unova service-delete <uuid>
) g1 W& T) e+ T1 [" e' ~% h" {& r# 删除当前resource provider, b1 Z: f3 u( A$ p; I
openstack resource provider delete 16d1bd53-7919-4fef-9a11-a0e98c149823
5 R& L9 }1 ]" B. t0 a/ ?( N. R: j# 重启nova-compute服务,让其自动注册; L0 J& r. L" A- s1 Z
# 查看当前resource provider
4 G* p8 c) j# s3 ~# O5 `' Z6 U6 y+ T( t[root@control1 ~]# openstack resource provider list
0 V) N: X3 k" c6 j m! b, v+--------------------------------------+----------+------------+
5 T/ D/ y( x# |2 Y+ b1 u$ j( @6 _| uuid | name | generation |0 }& m; n" l8 A8 u$ T
+--------------------------------------+----------+------------++ M5 n! d/ @; C$ H
| b32cd7b5-26c6-4998-97f1-79fa2315871b | compute1 | 2 |1 k; M' q: b% w' u; q
+--------------------------------------+----------+------------+
- n. T/ N; q. c) Y& u6 M8 B7 _: P% N6 Z# # 执行如下命令,验证是否更新了数据" M. \7 }) o4 h2 F2 N3 o4 A1 F5 F
export OS_PLACEMENT_API_VERSION=1.10( o# _+ ]) Z, T7 c
openstack allocation candidate list --resource VCPU=1
' W `( @3 k4 \7 l; z& c$ a* G/ l执行创建云主机,云主机成功创建。! ^9 ?- o( b' Z( l" y! M% p+ O
|
|