openstack問題記錄

  • 2019 年 10 月 5 日
  • 筆記

先去查看對應的日誌:/var/log/,再來排查錯誤

1.實例處於錯誤狀態

1556263767222

解決辦法:

1.使用openstack hypervisor list查看

1556263862029

2.然後openstack hypervisor show挨個show一下,看看vcpus,local_gb,memory_mb

1556264047817

556264004581

1556264031226

local_gb只剩9g可用,磁碟空間不夠,需要對/root分區擴容

1556264173404

或者使用捲來創建實例,創建的時候記得選擇實例類型中根磁碟為0的來創建,否則會佔用local_gb的空間,會導致後面無法創建虛擬機。

根磁碟是為鏡像和快照設置的大小,只有用卷創建的時候可以設置根磁碟大小為0。

2. Exceeded maximum number of retries(超過最大重試次數)

Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance e5b8c859-bbdd-49ee-9e8e-14ca63ecb67d.].

3. openstack虛擬機運行慢

  1. 執行以下命令查看計算節點是否支援虛擬機的硬體加速:
egrep -c '(vmx|svm)' /proc/cpuinfo
  1. 如果此命令返回值,則計算節點支援硬體加速,通常不需要其他配置。

    如果此命令返回值zero,則您的計算節點不支援硬體加速,您必須配置libvirt為使用QEMU而不是KVM。

  • 編輯文件中的[libvirt]部分,/etc/nova/nova.conf如下所示:

    [libvirt]  # ...  virt_type = qemu

4. RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable.

說明快取配置存在問題,解決辦法如下:

/etc/openstack-dashboard/local_settings 里的

SESSION_ENGINE = ‘django.contrib.sessions.backends.cache’(文檔里說是如此配置,然而並不好使)

改成

SESSION_ENGINE = ‘django.contrib.sessions.backends.file’

重啟httpd和memcached,我用的CentOS7所以命令是

systemctl restart httpd.service memcached.service

刷新頁面重新登錄,成功進入Dashboard。

5. Volume driver LVMVolumeDriver not initialized

1567511904396

這個其實是第一個紅框中的錯誤引發的,意思就是說執行lvcreate命令的時候報錯,而lvcreate是用來創建lv(邏輯卷)的,而報錯是因為vg中剩餘的空間為0,也就是下圖的VFree(本來是0,這個是我增加完剩餘空間之後的截圖,之前忘截圖了)。

1567511978337

知道了報錯的原因,解決辦法就是要增加VFree的大小,這裡看需要給cinder分配多大的存儲空間,我劃分了1T過去,然後重啟一下cinder相關的服務:systemctl restart openstack-cinder-volume.service target.service。cinder使用的空間如下所述,所以上面那張圖中VFree的值是52.2g。

1567512468075

cinder涉及的linux知識主要是lvm(邏輯卷管理),所以先去搞清楚pv,vg,lv,pe這些概念,然後知道怎麼在linux中創建和管理LVM卷。

6. openstack-cinder-volume.service啟動失敗

執行journalctl -xe可以詳細地查看服務的啟動過程

1567513388161

/etc/cinder/cinder.conf中出現了不期待的連續行,打開文件檢查一下,發現每行都多了一個縮進。。。去掉縮進,重啟服務,成功啟動。

7. vnc console : failed to connect to server (code: 1006)

selection_545

解決辦法:

先去查看日誌,tail -f /var/log/nova/nova-novncproxy.log,結果發現vnc發送請求報文裡面host的ip和實際計算節點的ip不一致,這是由於計算節點ip發生了改變導致的,而我沒有在計算節點重啟nova服務,導致其還是以原來的ip發送請求,從而發生了錯誤。

1567495871070

所以,只需要在ip發生改變的計算節點重啟下nova服務就行了,執行命令systemctl restart libvirtd.service openstack-nova-compute.service