No valid host was found. There are not enough hosts available-----openstack建虛擬機直接報錯


No valid host was found. There are not enough hosts available-----openstack建虛擬機直接報錯

一、問題現象:

本次環境中只有一個計算節點,創建虛擬機直接報錯,使用nova show 看到報錯如下圖:

"message": "No valid host was found. There are not enough hosts available.", "code": 500

二、解決思路:

1、查看計算節點的nova-compute 日志,發現如下日志:

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": [

{"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"}

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

發現ResourceProviderCreationFailed: Failed to create resource provider compute1 ,發現resource Provider 創建失敗。懷疑數據庫resource provider 表沒有建出來,繼續查看nova-nova-scheduler.log。

2、查看nova-scheduler.log

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
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)']

3、進數據查看數據庫表

mysql> use nova_api;
mysql[nova_api] >  select * from resource_providers;
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
| created_at          | updated_at          | id | uuid                                 | name     | generation | can_host | root_provider_id | parent_provider_id |
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
| 2019-11-21 06:17:39 | 2019-11-21 06:17:41 |  3 | 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 |          1 |     NULL |                3 |               NULL |
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
1 row in set (0.00 sec)

發現有數據。重新創建虛擬機,依然會發生報錯,

4、嘗試將compute節點從nova service-list中刪除,並重新加入到集群中

# 停掉compute節點的nova-compute 服務
nova service-delete <計算節點的uuid>

# 開啟計算節點的nova-compute服務,讓計算節點重新注冊

嘗試創建虛擬機,發現還是報錯。返回去,查看nova-compute的日志發現 There was a conflict when trying to complete your request.\n\n Conflicting resource provider name: compute1 already exists. 。提示矛盾。

5、再次進入數據庫,執行 select * from resource_providers;

mysql> use nova_api;
mysql[nova_api] >  select * from resource_providers;
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
| created_at          | updated_at          | id | uuid                                 | name     | generation | can_host | root_provider_id | parent_provider_id |
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
| 2019-11-21 06:17:39 | 2019-11-21 06:17:41 |  3 | 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 |          1 |     NULL |                3 |               NULL |
+---------------------+---------------------+----+--------------------------------------+----------+------------+----------+------------------+--------------------+
1 row in set (0.00 sec)

發現新注冊的計算節點,但是resource_providers的uuid 沒有發生變化,懷疑是注冊compute節點的時候,並沒有更新resource_providers,嘗試刪除resource_providers;

6、查找官網,找到了操作 resource_providers的openstack命令,執行如下操作。

相關文檔:https://docs.openstack.org/osc-placement/latest/cli/index.html

相關軟件包: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

# 安裝osc-placement 軟件包,生成命令行工具

# 執行如下命令:
export OS_PLACEMENT_API_VERSION=1.10
openstack allocation candidate list --resource VCPU=1

# 查看當前resource provider
[root@control1 ~]# openstack resource provider  list
+--------------------------------------+----------+------------+
| uuid                                 | name     | generation |
+--------------------------------------+----------+------------+
| 16d1bd53-7919-4fef-9a11-a0e98c149823 | compute1 |          2 |
+--------------------------------------+----------+------------+

# 停止計算節點nova-compute服務
# 從service 中刪除compute1
nova service-delete  <uuid>

# 刪除當前resource provider
openstack resource provider  delete 16d1bd53-7919-4fef-9a11-a0e98c149823

# 重啟nova-compute服務,讓其自動注冊
# 查看當前resource provider
[root@control1 ~]# openstack resource provider  list
+--------------------------------------+----------+------------+
| uuid                                 | name     | generation |
+--------------------------------------+----------+------------+
| b32cd7b5-26c6-4998-97f1-79fa2315871b | compute1 |          2 |
+--------------------------------------+----------+------------+



# # 執行如下命令,驗證是否更新了數據
export OS_PLACEMENT_API_VERSION=1.10
openstack allocation candidate list --resource VCPU=1

執行創建雲主機,雲主機成功創建。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM