XenServer

Gruppierte Pools

Clustering bietet zusätzliche Funktionen, die für Ressourcenpools erforderlich sind, die GFS2-SRs verwenden. Weitere Informationen zu GFS2 finden Sie unter Speicher konfigurieren.

Ein Cluster ist ein Pool von bis zu 16 XenServer-Hosts, die enger verbunden und koordiniert sind als Hosts in nicht gruppierten Pools. Die Hosts im Cluster kommunizieren ständig miteinander in einem ausgewählten Netzwerk. Alle Hosts im Cluster kennen den Status jedes Hosts im Cluster. Diese Hostkoordination ermöglicht es dem Cluster, den Zugriff auf den Inhalt der GFS2 SR zu steuern.

Hinweis:

Die Clustering-Funktion ist nur für Pools von Vorteil, die eine GFS2-SR enthalten. Wenn Ihr Pool keine GFS2-SR enthält, aktivieren Sie das Clustering in Ihrem Pool nicht.

Quorum

Jeder Host in einem Cluster muss immer mit der Mehrheit der Hosts im Cluster (einschließlich sich selbst) kommunizieren. Dieser Zustand wird als Host mit Quorum bezeichnet. Wenn ein Host nicht über ein Quorum verfügt, wird dieser Host selbst abgegrenzt.

Die Anzahl der Hosts, die miteinander kommunizieren müssen, um das Quorum zu erreichen, kann sich von der Anzahl der Hosts unterscheiden, die ein Cluster benötigt, um das Quorum beizubehalten.

In der folgenden Tabelle ist dieses Verhalten zusammengefasst. Der Wert von n ist die Gesamtzahl der Hosts im Clusterpool.

  Anzahl der Hosts, die zum Erreichen des Quorums erforderlich sind Anzahl der Hosts, die erforderlich sind, um beschlussfähig zu bleiben
Ungerade Anzahl von Hosts im Pool (n+1)/2 (n+1)/2
Gerade Anzahl der Hosts im Pool (n/2)+1 n/2

Bei einem Cluster-Pool können Sie überprüfen, ob der Pool über ein Quorum verfügt, indem Sie den Parameter is-quorate des Clusters abfragen:

  xe cluster-list params=is-quorate uuid=<cluster_id>

Um zu sehen, wie viele Hosts im Cluster aktiv sind, führen Sie den folgenden Befehl aus:

  xe cluster-list params=live-hosts uuid=<cluster_id>

Um zu sehen, wie viele Live-Hosts erforderlich sind, damit der Cluster das Quorum erreicht, führen Sie den folgenden Befehl aus:

  xe cluster-list params=quorum uuid=<cluster_id>

Wenn der Cluster erstellt wird, muss die Anzahl der Live-Hosts größer oder gleich diesem Wert sein. Um das Quorum beizubehalten, kann die erforderliche Anzahl an Hosts von dem von diesem Befehl zurückgegebenen Wert abweichen, je nachdem, ob der Cluster eine gerade oder ungerade Anzahl an Hosts enthält.

Pools mit ungeraden Nummern

Um den Quorumwert für einen Pool mit ungeraden Zahlen zu erreichen, benötigen Sie die Hälfte von eins mehr als die Gesamtzahl der Hosts im Cluster: (n+1)/2. Dies ist auch die Mindestanzahl von Hosts, die erreichbar bleiben müssen, damit der Pool beschlussfähig bleibt.

In einem Clusterpool mit 5 Hosts müssen z. B. 3 Hosts erreichbar sein, damit der Cluster aktiv wird und beschlussfähig bleibt [(5+1)/2 = 3].

Es wird empfohlen, nach Möglichkeit eine ungerade Anzahl von Hosts in einem Clusterpool zu verwenden, da so sichergestellt wird, dass die Hosts immer feststellen können, ob sie beschlussfähig sind.

Pools mit geraden Zahlen

Wenn ein Clusterpool mit geraden Zahlen nach einem Kaltstart hochgefahren wird, müssen (n/2)+1 Hosts verfügbar sein, bevor die Hosts ein Quorum haben. Nachdem die Hosts über ein Quorum verfügen, wird der Cluster aktiv.

Ein aktiver Pool mit geraden Zahlen kann jedoch beschlussfähig bleiben, wenn die Anzahl der kontaktierbaren Hosts mindestens n/2 beträgt. Dadurch ist es möglich, dass ein laufender Cluster mit einer geraden Anzahl von Hosts genau in zwei Hälften geteilt wird. Der ausgeführte Cluster entscheidet, welche Hälfte des Clusters sich selbst zäunt und welche Hälfte des Clusters über ein Quorum verfügt. Die Hälfte des Clusters, die den Knoten mit der niedrigsten ID enthält, der vor der Clusteraufteilung als aktiv angesehen wurde, bleibt aktiv, und die andere Hälfte des Clusters wird selbst abgegrenzt.

In einem Clusterpool mit 4 Hosts müssen z. B. 3 Hosts erreichbar sein, damit der Cluster aktiv wird [4/2 + 1 = 3]. Nachdem der Cluster aktiv ist, müssen nur 2 Hosts kontaktierbar sein [4/2 = 2], und diese Gruppe von Hosts muss den Host mit der niedrigsten Knoten-ID enthalten, von der bekannt ist, dass sie aktiv ist.

Selbstzäunung

Wenn ein Host feststellt, dass er nicht über ein Quorum verfügt, führt er innerhalb weniger Sekunden einen Self-Fence durch. Wenn ein Host sich selbst eingrenzt, wird er sofort neu gestartet. Alle VMs, die auf dem Host ausgeführt werden, werden sofort gestoppt, da der Host ein hartes Herunterfahren durchführt. In einem Clusterpool mit Hochverfügbarkeit startet XenServer die VMs entsprechend ihrer Neustartkonfiguration auf anderen Poolmitgliedern neu. Der Host, der sich selbst abgeschirmt hat, wird neu gestartet und versucht, dem Cluster wieder beizutreten.

Wenn die Anzahl der aktiven Hosts im Cluster kleiner als der Quorumwert wird, verlieren alle verbleibenden Hosts das Quorum.

Im Idealfall verfügt Ihr Cluster-Pool immer über mehr Live-Hosts als für das Quorum erforderlich sind, und XenServer führt niemals eine Eingrenzung durch. Um dieses Szenario wahrscheinlicher zu machen, sollten Sie beim Einrichten Ihres Clusterpools die folgenden Empfehlungen berücksichtigen:

  • Stellen Sie sicher, dass Sie über eine gute Hardwareredundanz verfügen.

  • Verwenden Sie ein dediziertes gebundenes Netzwerk für das Clusternetzwerk. Stellen Sie sicher, dass sich die gebundenen Netzwerkkarten im selben L2-Segment befinden. Weitere Informationen finden Sie unter Netzwerk.

  • Konfigurieren Sie das Speicher-Multipathing zwischen dem Pool und dem GFS2 SR. Weitere Informationen finden Sie unter Multipathing für Speicher.

Erstellen eines Cluster-Pools

Stellen Sie zunächst sicher, dass die folgenden Voraussetzungen erfüllt sind:

  • Alle XenServer-Hosts im Clusterpool müssen über mindestens 2 GiB Steuerdomänenspeicher verfügen.

    Abhängig von Ihrer Umgebung benötigen Ihre Hosts möglicherweise mehr Kontrolldomänenspeicher. Wenn Sie nicht über genügend Steuerungsdomänenspeicher auf Ihren Hosts verfügen, kann es zu einer Netzwerkinstabilität in Ihrem Pool kommen. Netzwerkinstabilität kann bei einem Clusterpool mit GFS2-SRs zu Problemen führen. Informationen zum Ändern der Größe des Speichers der Steuerdomäne und zum Überwachen des Speicherverhaltens finden Sie unter Speicherauslastung.

  • Alle Hosts im Cluster müssen statische IP-Adressen für das Clusternetzwerk verwenden.

  • Es wird empfohlen, Clustering nur in Pools mit mindestens drei Hosts zu verwenden, da Pools mit zwei Hosts empfindlich auf Self-Fencing des gesamten Pools reagieren.

  • Clusterpools unterstützen nur bis zu 16 Hosts pro Pool.

  • Wenn Sie über eine Firewall zwischen den Hosts in Ihrem Pool verfügen, stellen Sie sicher, dass Hosts über die folgenden Ports im Clusternetzwerk kommunizieren können:
    • Telefon: 8892, 8896, 21064
    • UDP: 5404, 5405

    Weitere Informationen finden Sie unter Von XenServer verwendete Kommunikationsports.

  • Wenn Sie einen vorhandenen Pool gruppieren, stellen Sie sicher, dass die Hochverfügbarkeit deaktiviert ist. Sie können die Hochverfügbarkeit wieder aktivieren, nachdem das Clustering aktiviert wurde.

  • Wir empfehlen Ihnen dringend, für Ihren Cluster-Pool ein verbundenes Netzwerk zu verwenden, das für keinen anderen Datenverkehr genutzt wird.

Wenn Sie möchten, können Sie mit XenCenter ein Clustering in Ihrem Pool einrichten. Weitere Informationen finden Sie in der XenCenter-Produktdokumentation.

So verwenden Sie die xe CLI zum Erstellen eines Cluster-Pools:

  1. Erstellen Sie ein verbundenes Netzwerk, das als Clusternetzwerk verwendet werden soll.

    Hinweis:

    Wir empfehlen Ihnen dringend, für Ihren Cluster-Pool ein dediziertes Bonding-Netzwerk zu verwenden. Verwenden Sie dieses Netzwerk nicht für anderen Datenverkehr.

    Führen Sie auf dem XenServer-Host, der als Pool-Koordinator fungieren soll, die folgenden Schritte aus:

    1. Öffnen Sie eine Konsole auf dem XenServer-Host.

    2. Erstellen Sie mit dem folgenden Befehl ein Netzwerk für die Verwendung mit der gebundenen Netzwerkkarte:

        xe network-create name-label=bond0
      <!--NeedCopy-->
      

      Die UUID des neuen Netzwerks wird zurückgegeben.

    3. Suchen Sie mit dem folgenden Befehl die UUIDs der PIFs, die in der Bindung verwendet werden sollen:

        xe pif-list
      <!--NeedCopy-->
      
    4. Erstellen Sie Ihr gebundenes Netzwerk entweder im Aktiv-Aktiv-Modus, im Aktiv-Passiv-Modus oder im LACP-Bindungsmodus. Führen Sie je nach dem Bindungsmodus, den Sie verwenden möchten, eine der folgenden Aktionen aus:

      • Um die Bindung im Aktiv-Aktiv-Modus (Standard) zu konfigurieren, verwenden Sie die Schaltfläche Bindung-Erstellen , um die Bindung zu erstellen. Geben Sie unter Verwendung von Kommas zur Trennung der Parameter die neu erstellte Netzwerk-UUID und die UUIDs der zu bindenden PIFs an:

           xe bond-create network-uuid=<network_uuid> /
                pif-uuids=<pif_uuid_1>,<pif_uuid_2>,<pif_uuid_3>,<pif_uuid_4>
         <!--NeedCopy-->
        

        Geben Sie zwei UUIDs ein, wenn Sie zwei Netzwerkkarten verbinden, und vier UUIDs, wenn Sie vier Netzwerkkarten verbinden. Die UUID für die Bindung wird nach dem Ausführen des Befehls zurückgegeben.

      • Um die Bindung im Aktiv-Passiv- oder LACP-Bindungsmodus zu konfigurieren, verwenden Sie die gleiche Syntax, fügen Sie das optionale Modus und geben Sie LACP oder aktives-backup:

           xe bond-create network-uuid=<network_uuid> pif-uuids=<pif_uuid_1>, /
                <pif_uuid_2>,<pif_uuid_3>,<pif_uuid_4> /
                mode=balance-slb | active-backup | lacp
         <!--NeedCopy-->
        

    Nachdem Sie Ihr verbundenes Netzwerk auf dem Pool-Koordinator erstellt haben, werden die Netzwerk- und Verbindungsinformationen automatisch auf den beitretenden Server repliziert, wenn Sie andere XenServer-Hosts zum Pool hinzufügen.

    Weitere Informationen finden Sie unter Vernetzung.

  2. Erstellen Sie einen Ressourcenpool mit mindestens drei XenServer-Hosts.

    Wiederholen Sie die folgenden Schritte auf jedem XenServer-Host, der ein (Nicht-Master-)Poolmitglied ist:

    1. Öffnen Sie eine Konsole auf dem XenServer-Host.
    2. Verknüpfen Sie den XenServer-Host mit dem Pool auf dem Poolkoordinator mit dem folgenden Befehl:

        xe pool-join master-address=master_address master-username=administrators_username master-password=password
      <!--NeedCopy-->
      

      Der Wert des Master-Adresse muss auf den vollqualifizierten Domänennamen des XenServer-Hosts festgelegt werden, bei dem es sich um den Poolkoordinator handelt. Das Passwort Es muss sich um das Administratorkennwort handeln, das bei der Installation des Poolkoordinators festgelegt wurde.

    Weitere Informationen finden Sie unter Hosts und Ressourcenpools.

  3. Legen Sie für jeden PIF, der zu diesem Netzwerk gehört, disallow-unplug=wahr.

    1. Suchen Sie die UUIDs der PIFs, die zum Netzwerk gehören, indem Sie den folgenden Befehl verwenden:

        xe pif-list
      <!--NeedCopy-->
      
    2. Führen Sie den folgenden Befehl auf einem XenServer-Host in Ihrem Ressourcenpool aus:

        xe pif-param-set disallow-unplug=true uuid=<pif_uuid>
      <!--NeedCopy-->
      
  4. Aktivieren Sie Clustering in Ihrem Pool. Führen Sie den folgenden Befehl auf einem XenServer-Host in Ihrem Ressourcenpool aus:

      xe cluster-pool-create network-uuid=<network_uuid>
    <!--NeedCopy-->
    

    Geben Sie die UUID des gebundenen Netzwerks an, das Sie in einem früheren Schritt erstellt haben.

Löschen eines Clusterpools

Sie können einen Clusterpool löschen. Nachdem Sie einen Clusterpool zerstört haben, ist der Pool weiterhin vorhanden, aber nicht mehr gruppiert und kann keine GFS2-SRs mehr verwenden.

Führen Sie den folgenden Befehl aus, um einen Clusterpool zu löschen:

  xe cluster-pool-destroy cluster-uuid=<uuid>

Verwalten des Clusterpools

Bei der Verwaltung Ihres Clusterpools können die folgenden Vorgehensweisen das Risiko verringern, dass der Pool das Quorum verliert.

Hinzufügen oder Entfernen eines Hosts in einem Clusterpool

Wenn Sie einen Host in einem Clusterpool hinzufügen oder entfernen, stellen Sie sicher, dass alle Hosts im Cluster online sind.

Sie können einen Host in einem Clusterpool mithilfe von XenCenter hinzufügen oder entfernen. Weitere Informationen finden Sie unter Hinzufügen eines Servers zu einem Pool und Entfernen eines Servers aus einem Pool.

Sie können auch einen Host in einem Clusterpool hinzufügen oder entfernen, indem Sie die xe CLI verwenden. Weitere Informationen finden Sie unter Hinzufügen eines Hosts zu einem Pool mithilfe der Xe-CLI und Entfernen von XenServer-Hosts aus einem Ressourcenpool.

Stellen Sie sicher, dass die Hosts ordnungsgemäß heruntergefahren werden

Wenn ein Host sauber heruntergefahren wird, wird er vorübergehend aus dem Cluster entfernt, bis er wieder gestartet wird. Während der Host heruntergefahren ist, wird er nicht zum Quorum des Clusters gezählt. Die Abwesenheit des Gastgebers führt nicht dazu, dass die anderen Gastgeber ihr Quorum verlieren. Weitere Informationen finden Sie unter Herunterfahren eines XenServer-Hosts.

Wenn ein Host jedoch zwangsweise oder unerwartet heruntergefahren wird, wird er nicht aus dem Cluster entfernt, bevor er offline geschaltet wird. Dieser Host wird auf den Quorumwert des Clusters angerechnet. Das Herunterfahren kann dazu führen, dass andere Hosts das Quorum verlieren.

Wenn es notwendig ist, einen Host zwangsweise herunterzufahren, prüfen Sie zunächst, wie viele Live-Hosts sich im Cluster befinden. Sie können dies mit dem Befehl corosync-quorumtool. In der Befehlsausgabe ist die Anzahl der Live-Hosts der Wert von Stimmen insgesamt: und die Anzahl der Live-Hosts, die zum Beibehalten des Quorums erforderlich sind, ist der Wert von Quorum:.

  • Wenn die Anzahl der aktiven Hosts mit der Anzahl der Hosts übereinstimmt, die erforderlich sind, um beschlussfähig zu bleiben, erzwingen Sie das Herunterfahren des Hosts. Dies führt dazu, dass der gesamte Cluster abgegrenzt wird.

    Versuchen Sie stattdessen, andere Hosts wiederherzustellen und die Anzahl der Live-Hosts zu erhöhen, bevor Sie das Herunterfahren des Hosts erzwingen.

  • Wenn die Anzahl der Live-Hosts nahe an der Anzahl der Hosts liegt, die erforderlich sind, um beschlussfähig zu bleiben, können Sie das Herunterfahren des Hosts erzwingen. Dadurch ist der Cluster jedoch anfälliger für vollständiges Fencing, wenn andere Hosts im Pool Probleme haben.

Versuchen Sie immer, den heruntergefahrenen Host so schnell wie möglich neu zu starten, um die Resilienz Ihres Clusters zu erhöhen.

Wartungsmodus verwenden

Bevor Sie auf einem Host etwas tun, das dazu führen kann, dass der Host das Quorum verliert, versetzen Sie den Host in den Wartungsmodus. Wenn sich ein Host im Wartungsmodus befindet, werden ausgeführte VMs von ihm auf einen anderen Host im Pool migriert. Wenn dieser Host der Poolkoordinator war, wird diese Rolle an einen anderen Host im Pool weitergegeben. Wenn Ihre Aktionen dazu führen, dass sich ein Host im Wartungsmodus selbst abschirmt, verlieren Sie keine VMs oder Ihre XenCenter-Verbindung zum Pool.

Hosts im Wartungsmodus werden weiterhin auf den Quorumwert für den Cluster angerechnet.

Sie können die IP-Adresse eines Hosts, der Teil eines Clusterpools ist, nur ändern, wenn sich dieser Host im Wartungsmodus befindet. Wenn Sie die IP-Adresse eines Hosts ändern, verlässt der Host den Cluster. Wenn die IP-Adresse erfolgreich geändert wurde, tritt der Host dem Cluster wieder bei. Nachdem der Host dem Cluster wieder beigetreten ist, können Sie den Wartungsmodus deaktivieren.

Wiederherstellen von Hosts, die sich selbst eingezäunt haben oder offline sind

Es ist wichtig, Hosts wiederherzustellen, die sich selbst eingezäunt haben. Während diese Clustermitglieder offline sind, werden sie auf die Quorumzahl für den Cluster angerechnet und verringern die Anzahl der Clustermitglieder, die kontaktiert werden können. Diese Situation erhöht das Risiko, dass ein nachfolgender Hostfehler dazu führt, dass der Cluster das Quorum verliert und vollständig heruntergefahren wird.

Wenn Sie Offline-Hosts in Ihrem Cluster haben, können Sie auch bestimmte Aktionen nicht ausführen. In einem gruppierten Pool muss jedes Mitglied des Pools jeder Änderung der Poolmitgliedschaft zustimmen, bevor die Änderung erfolgreich sein kann. Wenn ein Clustermitglied nicht erreichbar ist, verhindert XenServer Vorgänge, die die Clustermitgliedschaft ändern (z. B. Host hinzufügen oder Host entfernen).

Hosts als nicht wiederherstellbar markieren

Wenn ein oder mehrere Offline-Hosts nicht wiederhergestellt werden können, können Sie den Clusterpool anweisen, sie zu vergessen. Diese Hosts werden dauerhaft aus dem Pool entfernt. Nachdem Hosts aus dem Clusterpool entfernt wurden, werden sie nicht mehr für den Quorumwert gezählt.

Um einen Host als nicht wiederherstellbar zu markieren, verwenden Sie den folgenden Befehl:

  xe host-forget uuid=<host_uuid>

Wiederherstellen eines vergessenen Hosts

Nachdem ein Clusterpool angewiesen wurde, einen Host zu vergessen, kann der Host nicht mehr zum Pool hinzugefügt werden.

Um dem Clusterpool wieder beizutreten, müssen Sie XenServer auf dem Host neu installieren, damit er als neuer Host im Pool angezeigt wird. Anschließend können Sie den Host auf die übliche Weise mit dem Clusterpool verknüpfen.

Problembehandlung für Ihren Clusterpool

Wenn bei Ihrem Cluster-Pool Probleme auftreten, finden Sie weitere Informationen unter Fehlerbehebung bei Cluster-Pools.

Einschränkungen

  • Clusterpools unterstützen nur bis zu 16 Hosts pro Pool.
  • Um HA in Ihrem Clusterpool zu aktivieren, muss es sich bei der Heartbeat-SR um eine GFS2-SR handeln.
  • Für Clusterdatenverkehr wird dringend empfohlen, ein gebundenes Netzwerk zu verwenden, das mindestens zwei verschiedene Netzwerk-Switches verwendet. Verwenden Sie dieses Netzwerk nicht für andere Zwecke.
  • Um die IP-Adresse des Clusternetzwerks mithilfe von XenCenter zu ändern, müssen Clustering und GFS2 vorübergehend deaktiviert werden.
  • Ändern Sie die Bündelung Ihres Clusternetzwerks nicht, während der Cluster aktiv ist und über ausgeführte VMs verfügt. Diese Aktion kann dazu führen, dass Hosts im Cluster hart neu gestartet werden (Fence).
  • Wenn in Ihrem Clusternetzwerk ein IP-Adressenkonflikt (mehrere Hosts mit derselben IP-Adresse) auftritt, an dem mindestens ein Host mit aktiviertem Clustering beteiligt ist, wird der Cluster nicht korrekt gebildet und die Hosts können bei Bedarf nicht abgeschirmt werden. Um dieses Problem zu beheben, beheben Sie den IP-Adressenkonflikt.
Gruppierte Pools