Ceph Block Device -Spiegelung

Die RBD-Spiegelung (RADOS Block Device) ist ein Prozess der asynchronen Replikation von Ceph Block Device -Images zwischen zwei oder mehr Ceph-Speicherclustern. Durch die Lokalisierung eines Ceph-Speicherclusters an verschiedenen Standorten kann die RBD-Spiegelung Sie bei der Wiederherstellung nach einem Standortausfall unterstützen. Die journalbasierte Spiegelung von Ceph-Blockeinheiten stellt zeitpunktgesteuerte konsistente Replikate aller Änderungen an einem Image sicher, einschließlich Lese-und Schreibvorgängen, Größenänderungen von Blockeinheiten, Momentaufnahmen, Klonen und Abflachung.

Die RBD-Spiegelung verwendet exklusive Sperren und die Journalfunktion, um alle Änderungen an einem Image in der Reihenfolge aufzuzeichnen, in der sie auftreten. Dadurch wird sichergestellt, dass eine absturzkonsistente Spiegelung eines Image verfügbar ist.
Wichtig: Die CRUSH-Hierarchien, die primäre und sekundäre Pools unterstützen, die Blockeinheitenimages spiegeln, müssen dieselben Kapazitäts-und Leistungsmerkmale haben und über eine ausreichende Bandbreite verfügen, um die Spiegelung ohne übermäßige Latenzzeit sicherzustellen. Wenn Sie beispielsweise einen durchschnittlichen Schreibdurchsatz von X MB/s für Images im primären Speichercluster haben, muss das Netz einen Durchsatz von N * X in der Netzverbindung zur sekundären Site plus einen Sicherheitsfaktor von Y% unterstützen, um N Images zu spiegeln.

Der Dämon rbd-mirror ist für die Synchronisation von Images aus einem Ceph-Speichercluster mit einem anderen Ceph-Speichercluster verantwortlich, indem er Änderungen aus dem fernen primären Image extrahiert und diese Änderungen in das lokale, nicht primäre Image schreibt. Der rbd-mirror -Dämon kann entweder in einem einzelnen Ceph-Speichercluster für unidirektionale Spiegelung oder in zwei Ceph-Speicherclustern für bidirektionale Spiegelung ausgeführt werden, die an der Spiegelungsbeziehung teilnehmen.

Damit die RBD-Spiegelung unter Verwendung der unidirektionalen oder bidirektionalen Replikation funktioniert, wird eine Reihe von Annahmen getroffen:

  • Ein Pool mit demselben Namen ist in beiden Speicherclustern vorhanden.
  • Ein Pool enthält journalfähige Images, die Sie spiegeln möchten.
Wichtig: Bei der unidirektionalen oder bidirektionalen Replikation muss jede Instanz von rbd-mirror gleichzeitig eine Verbindung zu dem anderen Ceph-Speichercluster herstellen können. Außerdem muss das Netz über eine ausreichende Bandbreite zwischen den beiden Rechenzentrumsstandorten verfügen, um die Spiegelung handhaben zu können.

Unidirektionale Replikation

Unidirektionale Spiegelung impliziert, dass ein primäres Image oder ein Pool von Images in einem Speichercluster in einem sekundären Speichercluster repliziert wird. Die unidirektionale Spiegelung unterstützt auch die Replikation auf mehrere sekundäre Speichercluster.

Im sekundären Speichercluster ist das Image das nicht primäre Replikat, d. h., Ceph-Clients können nicht in das Image schreiben. Wenn Daten von einem primären Speichercluster auf einen sekundären Speichercluster gespiegelt werden, wird rbd-mirror NUR auf dem sekundären Speichercluster ausgeführt.

Für die unidirektionale Spiegelung gelten einige Annahmen:

  • Sie verfügen über zwei Ceph-Speichercluster und möchten Images von einem primären Speichercluster auf einen sekundären Speichercluster replizieren.
  • Dem sekundären Speichercluster ist ein Ceph-Clientknoten zugeordnet, der den rbd-mirror -Dämon ausführt. Der Dämon rbd-mirror stellt eine Verbindung zum primären Speichercluster her, um Images mit dem sekundären Speichercluster zu synchronisieren.
Abbildung 1. Einseitige Spiegelung
Unidirektionale Spiegelung

Bidirektionale Replikation

Die bidirektionale Replikation fügt dem primären Cluster einen rbd-mirror -Dämon hinzu, damit Images auf dem primären Cluster herabgestuft und auf dem sekundären Cluster hochgestuft werden können. Anschließend können Änderungen an den Images auf dem sekundären Cluster vorgenommen werden, die in umgekehrter Richtung vom sekundären zum primären Cluster repliziert werden. Für beide Cluster muss rbd-mirror ausgeführt werden, damit Images in beiden Clustern hoch-und herabgestuft werden können. Derzeit wird die bidirektionale Replikation nur zwischen zwei Standorten unterstützt.

Damit die bidirektionale Spiegelung funktioniert, werden einige Annahmen getroffen:

  • Sie verfügen über zwei Speichercluster und möchten Images zwischen ihnen in beide Richtungen replizieren können.
  • Beiden Speicherclustern ist ein Clientknoten zugeordnet, auf dem der Dämon rbd-mirror ausgeführt wird. Der Dämon rbd-mirror , der im sekundären Speichercluster ausgeführt wird, stellt eine Verbindung zum primären Speichercluster her, um Images mit dem sekundären Speichercluster zu synchronisieren, und der Dämon rbd-mirror , der im primären Speichercluster ausgeführt wird, stellt eine Verbindung zum sekundären Speichercluster her, um Images mit dem primären Speichercluster zu synchronisieren.
Abbildung 2. Zwei-Wege-Spiegelung
Bidirektionale Spiegelung

Spiegelungsmodi

Die Spiegelung wird pro Pool mit Spiegelpeerspeicherclustern konfiguriert. Ceph unterstützt je nach Typ der Images im Pool zwei Spiegelungsmodi.
Pool-Modus
Alle Bilder in einem Pool mit aktivierter Journaling-Funktion werden gespiegelt.
Imagemodus
Nur eine bestimmte Teilmenge der Bilder innerhalb eines Pools wird gespiegelt. Sie müssen die Spiegelung für jedes Image separat aktivieren.

Imagestatus

Ob ein Image geändert werden kann, hängt von seinem Status ab:

  • Images im Primärstatus können geändert werden.
  • Images im nicht primären Status können nicht geändert werden.

Images werden automatisch zum primären Image hochgestuft, wenn die Spiegelung zum ersten Mal für ein Image aktiviert wird. Die Werbeaktion kann wie folgt erfolgen:

  • Implizit durch Aktivieren der Spiegelung im Poolmodus.
  • Explizit durch Aktivieren der Spiegelung eines bestimmten Image.

Es ist möglich, primäre Images herabzustufen und nicht primäre Images hochzustufen.

Referenz