Ich habe ein Cluster gebaut, aber die Maschinen wandern nicht: es fehlt der Speicher

Das Cluster zu bauen macht Maschinen nicht verschiebbar. Möglich macht die Verschiebung nicht das Netz, sondern der Ort der Platte. Und Container wandern nicht wie virtuelle Maschinen.

AtlasPVE ·

Dieser Eintrag beantwortet

  • proxmox migration fehlgeschlagen
  • proxmox live migration funktioniert nicht
  • braucht proxmox gemeinsamen speicher
  • proxmox lxc migration
  • proxmox lokaler speicher migrieren

Du hast das Cluster gebaut, die Knoten sehen einander, in der Oberfläche stehen sie alle nebeneinander. Dann willst du eine Maschine auf einen anderen Knoten schieben, und es geht nicht.

Es fehlt nicht das Cluster, es fehlt der Speicher.

Verschoben wird nicht die Maschine, sondern der Arbeitsspeicher

Eine laufende virtuelle Maschine zu verschieben heißt, den Zustand in ihrem Arbeitsspeicher auf den anderen Knoten zu kopieren. Das läuft über das Netz und ist schnell.

Aber auch die Platte der Maschine wird gebraucht, und die Platte ist um ein Vielfaches größer als der Arbeitsspeicher. Liegt die Platte nur auf dem eigenen Laufwerk des ersten Knotens, kommt der zweite Knoten nicht heran. Die Verschiebung beginnt entweder gar nicht, oder sie muss die Platte mitkopieren, was dann nicht mehr Sekunden dauert, sondern Minuten oder gar Stunden.

Die Antwort passt also in einen Satz: die Platte muss von beiden Knoten aus sichtbar sein.

Zwei Wege, das einzurichten

Gemeinsamer Speicher. Die Platte liegt an einem gemeinsamen Ort, mit dem sich beide Knoten verbinden: ein Netzspeicher, ein Speicherserver oder eine verteilte Speicherschicht. Beim Verschieben wird die Platte gar nicht kopiert, denn sie ist schon dort. Das ist der schnellste und sauberste Weg.

Spiegelung. Die Platte bleibt lokal, wird aber in regelmäßigen Abständen auf den anderen Knoten kopiert. Beim Verschieben wird nur das gesendet, was sich seit der letzten Kopie geändert hat, deshalb geht es schnell. Der Preis: weil die Kopie nach Zeitplan entsteht, kannst du die letzten Minuten verlieren. Bei einer geplanten Verschiebung ist das kein Problem, bei einem plötzlichen Ausfall kann es eines sein.

Die Frage, die entscheidet, welcher Weg zu dir passt, lautet: stirbt ein Knoten plötzlich, wie viele Minuten Verlust akzeptierst du? Lautet die Antwort "null", brauchst du gemeinsamen Speicher. Lautet sie "ein paar Minuten sind in Ordnung", reicht Spiegelung und ist weit günstiger.

Container wandern nicht wie virtuelle Maschinen

Hier sind Erstbauer eines Clusters am häufigsten überrascht. Eine virtuelle Maschine lässt sich im Betrieb verschieben. Ein Container nicht: er wird heruntergefahren, verschoben und neu gestartet.

Es gibt für deine Container also keine unterbrechungsfreie Verschiebung, auch mit Cluster nicht. Das ist kein Mangel, sondern das Wesen eines Containers: eine virtuelle Maschine bringt ihren eigenen Kern mit, ein Container nutzt den des Servers, und dieser Kern kann nicht mitreisen.

Praktische Folge: berücksichtige das, wenn du entscheidest, welche Arbeit in einem Container und welche in einer virtuellen Maschine läuft. Steht Arbeit, die keine Unterbrechung verträgt, in einem Container, wird sie in Wartungsnächten stillstehen.

Lege die Reihenfolge vorher fest

In der Nacht, in der du einen Knoten aktualisierst, sollten die Antworten auf diese Fragen schon bereitliegen: wie viele Maschinen auf diesem Knoten sind, wie viele verschoben werden können, wie viele heruntergefahren werden müssen und auf welchen Knoten die verschiebbaren gehen.

Das in derselben Nacht auszurechnen, ist eine schlechte Idee. Schreib es einmal auf und lege es beiseite.

Was Atlas tut

Bevor ein Knoten aktualisiert wird, listet Atlas die darauf laufenden Maschinen auf und schlägt dir eine Verschiebereihenfolge vor: welche Maschine auf welchen Knoten. Der Vorschlag verteilt sie reihum auf die verfügbaren Knoten.

Die Unterscheidung beim Container wird hier ausdrücklich gemacht. Für virtuelle Maschinen lautet die vorgeschlagene Methode Verschieben im Betrieb, für Container die Kette herunterfahren, verschieben, starten. Das Produkt bietet dies nicht als Wahlmöglichkeit an, es stellt fest, dass ein Container anders nicht verschoben werden kann.

Maschinen, die der Hochverfügbarkeitsverwaltung überlassen sind, werden ebenfalls markiert, denn sie von Hand zu verschieben und sie der eigenen Entscheidung der Verwaltung zu überlassen, sind zwei verschiedene Dinge.

Und der Vorschlag bleibt ein Vorschlag: der Verschiebebefehl läuft nicht von selbst, du drückst den Knopf.

Eine ehrliche Grenze: Atlas hält heute jede laufende virtuelle Maschine für verschiebbar und prüft nicht, ob ihre Platte tatsächlich vom anderen Knoten aus sichtbar ist. Das Produkt beantwortet die obige Speicherfrage also nicht für dich, du musst sie einmal selbst beantworten. Lies den Vorschlag mit diesem Wissen.

Quellen

Die eigene Dokumentation von Proxmox. Auf Englisch, und sie hat in dieser Sache das letzte Wort.

Verwandte Einträge

Wie sieht das in Atlas aus?

Zur Produktseite