
我使用 juju 創建了基於 MAAS 的 Openstack。我已經建立了實例、專案等。我正在嘗試透過銷毀和刪除服務來測試恢復基石,只是為了看看它是否可以恢復。我還刪除了 keystone 資料庫。 (已備份)因此,透過 juju,我銷毀了已損壞的舊梯形石,並部署了新的梯形石。這實際上讓我再次運行,除了所有項目(租戶)都消失了,並且實例不屬於任何項目之外。因此,我恢復了 keystone 資料庫,但沒有令牌,但是當我這樣做時,我在 Horizon 中收到錯誤訊息,告訴我 keystone 不會授權客戶端。
恢復損壞的梯形校正節點的最佳方法是什麼......?看來當你用 juju 重做 keystone 時你會得到新的令牌。 juju能否以某種方式將舊的基石注入新的基石中?
答案1
您遇到的問題是 keystone charm 將一些資訊儲存在 keystone 資料庫之外;具體來說,服務的使用者名稱和密碼儲存在本機磁碟上,以便當其他服務單元與 keystone 相關時,keystone 服務可以將請求使用者的正確密碼分發給相關服務。
如果您在部署 keystone 時沒有提供 admin-password 和 admin-token 配置,也會遇到問題;如果沒有明確配置,梯形校正服務單元將隨機產生這些 - 因此當您刪除然後新增的梯形校正服務單元時,它們會發生變化。
您最終得到的是資料庫中的一組雜湊密碼(由第一個服務單元建立),它們與第二個 keystone 服務單元中磁碟上產生的密碼不符。
理想情況下,我們可以透過 juju 中的某種通用物件儲存功能(例如物件放置/物件取得)來解決此問題,但這不是受支援的功能。
所有密碼和令牌的磁碟儲存都發生在 /var/lib/keystone 中;您也許可以將它們挑選出來作為 keystone 服務單元本身備份的一部分;但是,當您新增新的服務單元時,您會遇到麻煩,因為在您能夠復原這些檔案之前服務關係就會觸發。
身為 OpenStack 魅力維護者之一,我會多考慮一下,看看我們是否可以想出更優雅的東西。