Teilen über


Bereitstellen von geclusterten Anwendungen auf Azure Elastic SAN

Azure Elastic SAN-Volumes können gleichzeitig mit mehreren Compute-Clients verbunden werden, so dass Sie Cluster-Anwendungen auf Azure bereitstellen oder migrieren können. Sie müssen einen Cluster-Manager verwenden, um ein Elastic SAN-Volume gemeinsam zu nutzen, z. B. Windows Server Failover Cluster (WSFC) oder Pacemaker. Der Cluster-Manager kümmert sich um die Kommunikation der Clusterknoten und die Schreibsperre. Elastic SAN bietet von Haus aus kein vollständig verwaltetes Dateisystem, auf das über SMB oder NFS zugegriffen werden kann.

Als gemeinsam genutztes Volume können Elastic SAN-Volumes über Verfügbarkeitszonen oder Regionen hinweg gemeinsam genutzt werden. Die zonenübergreifende gemeinsame Nutzung eines Volumes in einem lokal-redundanten Speicher-SAN verringert Ihre Leistung aufgrund der erhöhten Latenz zwischen dem Volume und den Clients.

Begrenzungen

  • Elastic SAN-Verbindungsskripte können verwendet werden, um freigegebene Volumes an virtuelle Maschinen in VM-Skalierungsgruppen oder virtuelle Maschinen in Verfügbarkeitsgruppen anzuhängen. Die Fehlerdomänenausrichtung wird nicht unterstützt.
  • Die maximale Anzahl von Sitzungen, die von einem freigegebenen Volume unterstützt werden, ist 128.
    • Ein einzelner Client kann mehrere Sitzungen für ein einzelnes Volume erstellen, um die Leistung zu steigern. Wenn Sie beispielsweise 32 Sitzungen auf jedem Ihrer Clients erstellen, können nur vier Clients eine Verbindung mit einem einzelnen Volume herstellen.

Weitere Einschränkungen von Elastic SAN finden Sie unter Unterstützung für Azure Storage-Features.

Funktionsweise

Freigegebene Elastic SAN-Volumes verwenden persistente SCSI-3-Reservierungen, um Initiatoren (Clients) die Steuerung des Zugriffs auf ein freigegebenes Elastic SAN-Volume zu ermöglichen. Dieses Protokoll ermöglicht es einem Initiator, den Zugriff auf ein elastisches SAN-Volume zu reservieren, den Schreib- (oder Lese-) Zugriff durch andere Initiatoren zu begrenzen und die Reservierung auf einem Volume standardmäßig über die Lebensdauer einer Sitzung hinaus aufrechtzuerhalten.

SCSI-3 PR spielt eine entscheidende Rolle bei der Aufrechterhaltung der Datenkonsistenz und -integrität innerhalb freigegebener Volumes in Clusterszenarien. Die Compute-Knoten in einem Cluster können auf ihre angeschlossenen Elastic SAN-Volumes lesen oder schreiben, je nach der von ihren Cluster-Anwendungen gewählten Reservierung.

Ablauf mit permanenter Reservierung

Das folgende Diagramm zeigt ein Beispiel für eine Cluster-Datenbankanwendung mit 2 Knoten, die SCSI-3 PR verwendet, um ein Failover von einem Knoten zum anderen zu ermöglichen.

Diagramm der Cluster-Anwendung.

Der Ablauf ist wie folgt:

  1. Die Cluster-Anwendung, die sowohl auf Azure VM 1 als auch auf VM 2 ausgeführt wird, registriert ihre Lese- oder Schreibabsicht für den Elastic SAN-Volume.
  2. Die Anwendungsinstanz auf VM 1 sichert sich daraufhin die exklusive Reservierung, um auf den Volume zu schreiben.
  3. Diese Reservierung wird für Ihren Volume erzwungen und die Datenbank kann nun exklusiv auf den Volume schreiben. Schreibvorgänge von der Anwendungsinstanz auf VM2 sind nicht erfolgreich.
  4. Wenn die Anwendungsinstanz auf VM 1 ausfällt, kann die Instanz auf VM 2 ein Datenbankfailover initiieren und den Volume übernehmen.
  5. Diese Reservierung wird nun für den Volume erzwungen und er akzeptiert keine Schreibzugriffe von VM 1. Er akzeptiert nur noch Schreibvorgänge von VM 2.
  6. Die gruppierte Anwendung kann das Datenbankfailover abschließen und Anforderungen von VM 2 verarbeiten.

Das folgende Diagramm zeigt eine weitere gängige gruppierte Workload mit mehreren Knoten, die Daten von einem Elastic SAN-Volume lesen, um parallele Prozesse auszuführen (etwa zum Trainieren von Machine Learning-Modellen).

Diagramm eines Machine Learning-Clusters.

Der Ablauf ist wie folgt:

  1. Die auf allen VMs ausgeführte Cluster-Anwendung registriert eine Lese- oder Schreibabsicht für den Elastic SAN-Volume.
  2. Die Anwendungsinstanz auf VM 1 sichert sich eine exklusive Reservierung, um auf den Volume zu schreiben, wodurch der Volume für Lesevorgänge von anderen VMs verfügbar wird.
  3. Diese Reservierung wird auf dem Volume erzwungen.
  4. Alle Knoten im Cluster können nun von dem Volume lesen. Ergebnisse werden nur von einem einzelnen Knoten auf den Volume geschrieben (im Auftrag aller Knoten im Cluster).

Unterstützte SCSI-PR-Befehle

Die folgenden Befehle werden mit Elastic SAN-Volumes unterstützt:

Um mit dem Volume zu interagieren, beginnen Sie mit der entsprechenden Aktion für persistente Reservierungen:

  • PR_REGISTER_KEY
  • PR_REGISTER_AND_IGNORE
  • PR_GET_CONFIGURATION
  • PR_RESERVE
  • PR_PREEMPT_RESERVATION
  • PR_CLEAR_RESERVATION
  • PR_RELEASE_RESERVATION

Wenn Sie PR_RESERVE, PR_PREEMPT_RESERVATION oder PR_RELEASE_RESERVATION verwenden, geben Sie einen der folgenden permanenten Reservierungstypen an:

  • PR_NONE
  • PR_WRITE_EXCLUSIVE
  • PR_EXCLUSIVE_ACCESS
  • PR_WRITE_EXCLUSIVE_REGISTRANTS_ONLY
  • PR_EXCLUSIVE_ACCESS_REGISTRANTS_ONLY
  • PR_WRITE_EXCLUSIVE_ALL_REGISTRANTS
  • PR_EXCLUSIVE_ACCESS_ALL_REGISTRANTS

Der Typ der permanenten Reservierung bestimmt den Zugriff auf den Volume von jedem Knoten im Cluster.

Permanenter Reservierungstyp Reservierungsinhaber Registriert Andere
KEINE RESERVIERUNG Nicht zutreffend Lesen/Schreiben Lesen/Schreiben
EXKLUSIVES SCHREIBEN Lesen/Schreiben Schreibgeschützt Schreibgeschützt
EXKLUSIVER ZUGRIFF Lesen/Schreiben Kein Zugriff Kein Zugriff
EXKLUSIVES SCHREIBEN – NUR REGISTRANTEN Lesen/Schreiben Lesen/Schreiben Schreibgeschützt
EXKLUSIVER ZUGRIFF – NUR REGISTRANTEN Lesen/Schreiben Lesen/Schreiben Kein Zugriff
EXKLUSIVES SCHREIBEN – ALLE REGISTRANTEN Lesen/Schreiben Lesen/Schreiben Schreibgeschützt
EXKLUSIVER ZUGRIFF – ALLE REGISTRANTEN Lesen/Schreiben Lesen/Schreiben Kein Zugriff

Wenn Sie die folgenden Befehle verwenden, müssen Sie außerdem den permanenenten Reservierungsschlüssel (persistent-reservation-key) angeben:

  • PR_RESERVE
  • PR_REGISTER_AND_IGNORE
  • PR_REGISTER_KEY
  • PR_PREEMPT_RESERVATION
  • PR_CLEAR_RESERVATION
  • PR_RELEASE-RESERVATION