OpenStack Mass/Juju-Wiederherstellung

OpenStack Mass/Juju-Wiederherstellung

Ich habe Openstack basierend auf MAAS mit juju erstellt. Ich habe Instanzen, Projekte usw. erstellt. Ich habe Backups von Datenbank- und Openstack-Konfigurationsdateien erstellt. Ich versuche eine Testwiederherstellung, indem ich den Dienst zerstöre und entferne.Schlussstein, nur um zu sehen, ob es wiederherstellbar war. Ich lösche auch die Keystone-Datenbank. (Sie ist gesichert.) Also zerstöre ich mit Juju den alten Keystone, der kaputt war, und setze einen neuen Keystone ein. Damit läuft es tatsächlich wieder, abgesehen von der Tatsache, dass alle Projekte (Mieter) weg sind und die Instanzen zu keinem Projekt gehören. Also stelle ich die Keystone-Datenbank wieder her, aber ohne die Token. Wenn ich das mache, erhalte ich jedoch einen Fehler in Horizon, der mir mitteilt, dass Keystone den Client nicht autorisiert.

Was wäre die beste Möglichkeit, einen defekten Keystone-Knoten wiederherzustellen...? Es scheint, dass man neue Token erhält, wenn man Keystone mit Juju neu erstellt. Kann Juju die alten irgendwie in den neuen Keystone einfügen?

Antwort1

Das Problem, auf das Sie stoßen, besteht darin, dass der Keystone-Charm einige Informationen außerhalb der Keystone-Datenbank speichert. Insbesondere werden Benutzernamen und Passwörter für Dienste lokal auf der Festplatte gespeichert, sodass der Keystone-Dienst bei zusätzlichen mit Keystone in Zusammenhang stehenden Diensteinheiten das richtige Passwort für den angeforderten Benutzer an den zugehörigen Dienst weitergeben kann.

Sie werden auch auf Probleme stoßen, wenn Sie beim Bereitstellen von Keystone keine Konfiguration mit Administratorkennwort und Administratortoken angegeben haben. Die Keystone-Serviceeinheiten generieren diese nach dem Zufallsprinzip, wenn sie nicht explizit konfiguriert sind. Sie ändern sich also, wenn Sie eine Keystone-Serviceeinheit entfernen und dann eine neue hinzufügen.

Am Ende erhalten Sie einen Satz gehashter Passwörter in der Datenbank (erstellt von der ersten Serviceeinheit), die nicht mit den generierten Passwörtern auf der Festplatte in der zweiten Keystone-Serviceeinheit übereinstimmen.

Idealerweise würden wir dies durch eine Art allgemeine Objektspeicherfunktion in Juju beheben (denken Sie an Object-Put/Object-Get), aber dies ist keine unterstützte Funktion.

Die gesamte Speicherung von Passwörtern und Tokens auf der Festplatte erfolgt in /var/lib/keystone. Sie können diese möglicherweise als Teil einer Sicherung der Keystone-Serviceeinheit selbst abrufen. Beim Hinzufügen der neuen Serviceeinheit kommt es jedoch zu Problemen, da die Servicebeziehungen ausgelöst werden, bevor Sie diese Dateien wiederherstellen können.

Als einer der Charm-Betreuer von OpenStack werde ich noch ein wenig darüber nachdenken und sehen, ob uns etwas Eleganteres einfällt.

verwandte Informationen