A.4 Installation und Konfiguration

In diesem Abschnitt finden Sie die Vorgehensweise zur Installation und Konfiguration von Sentinel in einer hochverfügbaren Umgebung. Jeder Schritt beschreibt zunächst die allgemeine Vorgehensweise und bezieht sich dann auf eine Demo-Einrichtung, die die Details einer beispielhaften Clusterlösung dokumentiert. Sie können andere Optionen oder eine andere Technik verwenden als in diesem Dokument aufgeführt, müssen jedoch die in Abschnitt A.2, Unterstützungsfähigkeit beschriebenen Einschränkungen berücksichtigen.

Im folgenden Diagramm ist eine Aktiv-Passiv-Hochverfügbarkeits-Architektur dargestellt:

A.4.1 Das System einrichten

Konfigurieren Sie die Computerhardware, die Netzwerkhardware, die Speicherhardware, die Betriebssysteme, die Benutzerkonten und andere grundlegende Systemressourcen entsprechend der dokumentierten Anforderungen für Sentinel sowie der lokalen Anforderungen des Kunden. Testen Sie die Systeme, um die ordnungsgemäße Funktion und Stabilität sicherzustellen.

  • Als beste Vorgehensweise sollten alle Clusterknoten zeitsynchronisiert werden. Verwenden Sie zu diesem Zweck NTP oder eine ähnliche Technologie.

  • Für den Cluster ist eine zuverlässige Hostnamenauflösung erforderlich. Als beste Vorgehensweise könnten Sie alle internen Clusterhostnamen in die Datei /etc/hosts eingeben, um die Kontinuität im Fall eines DNS-Fehlers sicherzustellen. Wenn ein Clusterknoten die anderen Clusterknoten nicht nach Namen auflösen kann, tritt bei der in diesem Abschnitt beschriebenen Clusterkonfiguration ein Fehler auf.

  • Die CPU-, RAM- und Speicherplatzeigenschaften für jeden Clusterknoten müssen den Systemanforderungen entsprechen, die auf Basis der erwarteten Ereignisrate in Abschnitt 5.0, Erfüllen der Systemanforderungen definiert sind.

  • Die Speicherplatz- und E/A-Eigenschaften für die Speicherknoten müssen den Systemanforderungen entsprechen, die auf Basis der erwarteten Ereignisrate und Datenbeibehaltungsrichtlinien für die lokale und/oder Netzwerkspeicherung in Abschnitt 5.0, Erfüllen der Systemanforderungen definiert sind.

  • Wenn Sie die Betriebssystem-Firewalls konfigurieren möchten, um den Zugriff auf Sentinel und den Cluster einzuschränken, finden Sie detaillierte Informationen darüber, welche Ports abhängig von der lokalen Konfiguration und den Quellen, die Ereignisdaten senden, im Abschnitt Abschnitt 7.0, Verwendete Ports.

Die Beispiellösung verwendet die folgende Konfiguration:

  • Zwei virtuelle Computer mit SUSE Linux 11 SP2-Clusterknoten

    • Bei der Installation des Betriebssystems muss X Windows nicht installiert werden, kann jedoch installiert werden, wenn die GUI-Konfiguration gewünscht wird. Die Boot-Skripte können so festgelegt werden, dass sie ohne X (runlevel 3) starten. Sie können dann nach Bedarf gestartet werden.

    • Die Knoten verfügen über zwei NICs – einen für den externen Zugriff und einen für die iSCSI-Kommunikation.

    • Konfigurieren Sie die externen NICs mit IP-Adressen, die den Fernzugriff über SSH oder ähnliches zulassen. Für dieses Beispiel verwenden wir 172.16.0.1 (node01) und 172.16.0.2 (node02).

    • Jeder Knoten sollte genügend Speicherplatz für das Betriebssystem, die Sentinel-Binärdateien und die Konfigurationsdaten, die Clustersoftware, den temporären Speicher etc. haben. Sehen Sie sich die SUSE Linux- und SLE HAE-Systemanforderungen sowie die Sentinel-Anwendungsanforderungen an.

  • Einen virtuellen Computer mit SUSE Linux 11 SP2, der mit iSCSI-Zielen für den freigegebenen Speicher konfiguriert ist

    • Bei der Installation des Betriebssystems muss X Windows nicht installiert werden, kann jedoch installiert werden, wenn die GUI-Konfiguration gewünscht wird. Die Boot-Skripte können so festgelegt werden, dass sie ohne X (runlevel 3) starten. Sie können dann nach Bedarf gestartet werden.

    • Das System verfügt über zwei NICs – einen für den externen Zugriff und einen für die iSCSI-Kommunikation.

    • Konfigurieren Sie den externen NIC mit einer IP-Adresse, die den Fernzugriff über SSH oder ähnliches zulässt. Für dieses Beispiel verwenden wir 172.16.0.3 (storage03).

    • Das System sollte über genügend Speicherplatz für das Betriebssystem, einen temporären Speicher und ein großes Volume für den freigegebenen Speicher für Sentinel-Daten verfügen sowie über etwas Speicherplatz für eine SBD-Partition. Sehen Sie sich die Systemanforderungen für SUSE Linux sowie die Anforderungen für den Sentinel-Ereignisdatenspeicher an. Für die Beispiellösung stellen wir alle Daten (lokal, Netzwerk, SBD) auf eine einzige Festplatte. Für Bereitstellungen in Produktionsumgebungen könnten diese verschiedenen Knoten zugewiesen werden.

HINWEIS:In einem Produktionscluster können Sie interne, nicht weiterleitbare IPs auf verschiedenen NICs (möglicherweise zwei, aus Redundanzgründen) für die interne Clusterkommunikation verwenden.

A.4.2 Einrichtung des freigegebenen Speichers

Richten Sie Ihren freigegebenen Speicher ein und vergewissern Sie sich, dass Sie ihn auf jedem Clusterknoten einhängen können. Wenn Sie FibreChannel und ein SAN verwenden, könnten physische Verbindungen und weitere Konfigurationsschritte erforderlich sein. Der freigebene Speicher wird für die Datenbanken und Ereignisdaten von Sentinel verwendet. Er muss daher für die Kundenumgebung entsprechend groß sein, basierend auf der erwarteten Ereignisrate und den Datenbeibehaltungsrichtlinien.

Eine typische Implementierung könnte ein schnelles SAN verwenden, das über FibreChannel an alle Clusterknoten angehängt wird und über ein großes RAID-Array zum Speichern der lokalen Ereignisdaten verfügt. Ein separater NAS- oder iCSI-Knoten könnte für den langsameren Netzwerkspeicher verwendet werden. Wenn der Clusterknoten den lokalen Speicher als normales Blockgerät einhängen kann, kann er auch für die Lösung verwendet werden. Der Netzwerkspeicher kann auch als Blockgerät eingehängt werden oder könnte ein NFS- oder CIFS-Volume sein.

HINWEIS:Sie sollten den freigebenen Speicher konfigurieren und ihn testweise in jedem Clusterknoten einhängen, doch der Speicher wird eigentlich durch die Clusterkonfiguration eingehängt.

Für die Beispiellösung verwenden wir iSCSI-Ziele, die auf einem virtuellen SUSE-Linux-Computer gehostet werden:

Die Beispiellösung verwendet iSCSI-Ziele, die auf einem virtuellen SUSE-Linux-Computer gehostet werden: Der virtuelle Computer ist storage03 wie in Das System einrichten aufgeführt. iSCSI-Geräte können über jede Datei oder jedes Blockgerät erstellt werden, doch einfachheitshalber verwenden wir hier eine Datei, die speziell zu diesem Zweck erstellt wird.

Stellen Sie eine Verbindung zu storage03 her und starten Sie eine Konsolensitzung. Erstellen Sie mit dem Befehl dd eine leere Datei jeder beliebigen Größe für den lokalen Sentinel-Speicher:

dd if=/dev/zero of=/localdata count=10240000 bs=1024

In diesem Fall erstellen wir eine 10 GB große Datei mit Nullen (kopiert von /dev/zero pseudo-device). Weitere Details zu den Befehlszeilenoptionen finden Sie in der Info oder auf der man-Seite für dd. Zum Beispiel zur Erstellung von „Datenträgern“ unterschiedlicher Größe. Das iSCSI-Ziel behandelt diese Datei, als ob sie ein Datenträger wäre. Sie könnten natürlich auch einen Datenträger verwenden, falls Sie dies vorziehen.

Wiederholen Sie diesen Vorgang, um eine Datei für den Netzwerkspeicher zu erstellen:

dd if=/dev/zero of=/networkdata count=10240000 bs=1024

Für dieses Beispiel verwenden wir zwei gleich große Dateien („Datenträger“) mit denselben Leistungseigenschaften. Für eine Produktionsbereitstellung könnten Sie den lokalen Speicher in ein schnelles SAN stellen und den Netzwerkspeicher in ein langsameres iSCSI-, NFS- oder CIFS-Volume.

Konfigurieren Sie diese Dateien als iSCSI-Ziele:

  1. Führen Sie YaST an der Befehlszeile aus (oder verwenden Sie die GUI, falls bevorzugt): /sbin/yast

  2. Wählen Sie Netzwerkgeräte > Netzwerkeinstellungen aus.

  3. Vergewissern Sie sich, dass die Registerkarte Überblick ausgewählt ist.

  4. Wählen Sie den sekundären NIC aus der angezeigten Liste aus, fahren Sie anschließend fort bis zur Registerkarte „Bearbeiten“ und drücken Sie die Eingabetaste.

  5. Weisen Sie auf der Registerkarte Adresse eine statische IP-Adresse 10.0.0.3 zu. Dies ist die IP für die interne iSCSI-Kommunikation.

  6. Klicken Sie auf Weiter und anschließend auf OK.

  7. Wählen Sie am Hauptbildschirm die Optionen Netzwerkdienste > iSCSI-Ziel aus.

  8. Installieren Sie nach Aufforderung die erforderliche Software (iscsitarget RPM) vom SUSE Linux 11 SP2-Medium.

  9. Klicken Sie auf Dienst und wählen Sie die Option Beim Booten aus, um sicherzustellen, dass der Dienst beim Booten des Betriebssystems gestartet wird.

  10. Klicken Sie auf Global und wählen Sie anschließend Keine Authentifizierung aus, weil der aktuelle OCF Resource Agent für iSCSI keine Authentifizierung unterstützt.

  11. Klicken Sie auf Ziele und anschließend auf Hinzufügen, um ein neues Ziel hinzuzufügen.

    Das iSCSI-Ziel generiert automatisch eine ID und bietet dann eine leere Liste der verfügbaren LUNs (Laufwerke) an.

  12. Klicken Sie auf Hinzufügen, um ein neues LUN hinzuzufügen.

  13. Belassen Sie die LUN-Nummer als 0, durchsuchen Sie anschließend das Dialogfeld Pfad (unter Type=fileio) und wählen Sie die Datei /localdata aus, die Sie erstellt haben. Wenn Sie über einen dedizierten Datenträger für den Speicher verfügen, geben Sie ein Blockgeräte an wie zum Beispiel /dev/sdc.

  14. Wiederholen Sie die Schritte 12 und 13 und fügen Sie diesmal LUN 1 und /networkdata hinzu.

  15. Behalten Sie für die anderen Optionen die Standardwerte bei. Klicken Sie auf OK und anschließend auf Weiter.

  16. Klicken Sie erneut auf Weiter, um die Standardoptionen für die Authentifizierung auszuwählen, und dann auf Fertig stellen, um die Konfiguration zu beenden. Akzeptieren Sie den Neustart von iSCSI.

  17. Beenden Sie YaST.

Mit der oben genannten Prozedur werden zwei iSCSI-Ziele am Server mit der Adresse 10.0.0.3 ausgewiesen. Stellen Sie sicher, dass die freigegebenen Speichergeräte mit den lokalen Daten in jedem Clusterknoten eingehängt werden können. Sie müssen die Geräte auch (einmal) formatieren:

  1. Stellen Sie eine Verbindung zu einem der Clusterknoten (node01) her und starten Sie YaST.

  2. Wählen Sie Netzwerkgeräte > Netzwerkeinstellungen aus.

  3. Vergewissern Sie sich, dass die Registerkarte Überblick ausgewählt ist.

  4. Wählen Sie den sekundären NIC aus der angezeigten Liste aus, fahren Sie anschließend fort bis zur Registerkarte „Bearbeiten“ und drücken Sie die Eingabetaste.

  5. Klicken Sie auf Adresse, weisen Sie eine statische IP-Adresse von 10.0.0.1 zu. Dies ist die IP-Adresse für die interne iSCSI-Kommunikation.

  6. Wählen Sie Weiter aus und klicken Sie anschließend auf OK.

  7. Klicken Sie auf Netzwerkdienste > iSCSI-Initiator.

  8. Installieren Sie nach Aufforderung die erforderliche Software (open-iscsi RPM) vom SUSE Linux 11 SP2-Medium.

  9. Klicken Sie auf Dienst und wählen Sie Beim Booten aus, um sicherzustellen, dass der iSCSI-Dienst beim Booten gestartet wird.

  10. Klicken Sie auf Erkannte Ziele und wählen Sie Ermittlung aus.

  11. Geben Sie die iSCSI-IP-Adresse (10.0.0.3) an, wählen Sie Keine Authentifizierung aus und klicken Sie anschließend auf Weiter.

  12. Wählen Sie zunächst das erkannte iSCSI-Ziel mit der IP-Adresse 10.0.0.3 aus und anschließend die Option Anmelden.

  13. Wechseln Sie im Dropdown-Menü Start zu „Automatisch“, wählen Sie Keine Authentifizierung aus und klicken Sie anschließend auf Weiter.

  14. Wechseln Sie zur Registerkarte Verbundene Ziele, um sicherzustellen, dass wir mit dem Ziel verbunden sind.

  15. Beenden Sie die Konfiguration. Damit sollten die iSCSI-Ziele als Blockgeräte im Clusterknoten eingehängt sein.

  16. Wählen Sie im YaST-Hauptmenü System > Partitionierer aus.

  17. In der Systemanzeige sollten Sie nun in der Liste neue Festplatten sehen (wie /dev/sdb und /dev/sdc) mit dem Typ IET-VIRTUAL-DISK. Gehen Sie mit der Tabulatortaste zur ersten Festplatte in der Liste (sollte der lokale Speicher sein), wählen Sie sie aus und drücken Sie auf die Eingabetaste.

  18. Wählen Sie Hinzufügen aus, um der leeren Festplatte eine neue Partition hinzuzufügen. Formatieren Sie die Festplatte als primäre ext3-Partition, doch hängen Sie sie nicht ein. Vergewissern Sie sich, dass die Option „Partition nicht einhängen“ ausgewählt ist.

  19. Wählen Sie Weiter und anschließend Fertig stellen, nachdem Sie sich die Änderungen angesehen haben, die vorgenommen werden. Angenommen Sie erstellen eine einzige große Partition auf diesem freigegebenen iSCSI-LUN, dann sollten Sie eine /dev/sdb1 erhalten oder eine ähnliche formatierte Festplatte (weiter unten als /dev/<SHARED1> bezeichnet).

  20. Gehen Sie zurück zum Partitionierer und wiederholen Sie den Partitionierungs- und Formatierungsvorgang (Schritte 16-19) für /dev/sdc oder welches Blockgerät auch immer dem Netzwerkspeicher entspricht. Dies sollte zu einer Partition /dev/sdc1 oder einer ähnlichen formatierten Festplatte führen (weiter unten als /dev/<NETWORK1> bezeichnet).

  21. Beenden Sie YaST.

  22. Erstellen Sie schließlich einen Einhängepunkt und hängen Sie die lokale Partition testweise wie folgt ein (der genaue Gerätename kann von der spezifischen Implementierung abhängen):

    # mkdir /var/opt/novell
    # mount /dev/<SHARED1> /var/opt/novell
    
  23. Sie sollten in der Lage sein, Dateien auf der neuen Partition zu erstellen und diese zu sehen wo auch immer die Partition eingehängt ist.

    So hängen Sie sie aus:

    # umount /var/opt/novell
    

Wiederholen Sie die Schritte 1-15 in der oben genannten Prozedur, um sicherzustellen, dass jeder Clusterknoten den lokalen freigegebenen Speicher einhängen kann. Ersetzen Sie die Knoten-IP in Schritt 5 jedoch durch eine andere IP (z. B.node02 > 10.0.0.2).

A.4.3 Sentinel-Installation

Zur Installation von Sentinel haben Sie zwei Möglichkeiten: Sie installieren jeden Teil von Sentinel im freigegebenen Speicher (und verwenden die Option „--location“, um die Sentinel-Installation dorthin umzuadressieren, wo der freigegebene Speicher eingehängt ist). Oder Sie stellen einfach die variablen Anwendungsdaten in den freigegebenen Speicher.

In dieser Beispiellösung folgen wir letzterem Ansatz und installieren Sentinel in jeden Clusterknoten, der es hosten kann. Wenn Sentinel zum ersten Mal installiert wird, nehmen wir eine vollständige Installation einschließlich der Anwendungsbinärdateien, der Konfiguration und aller Datenspeicher vor. Bei nachfolgenden Installationen in den anderen Clusterknoten wird nur die Anwendung installiert und es wird angenommen, dass die eigentlichen Sentinel-Daten später verfügbar werden (z. B. wenn der freigegebene Speicher eingehängt ist).

Beispiellösung:

In dieser Beispiellösung installieren wir Sentinel in jedem Clusterknoten und speichern nur die variablen Anwendungsdaten im freigegebenen Speicher. Dadurch bleiben die Anwendungsbinärdateien und die Konfiguration an den Standardspeicherorten und wir können die RPMs überprüfen und auch in bestimmten Szenarien Patches im laufenden Betrieb anwenden.

Erste Installation im Knoten

  1. Stellen Sie eine Verbindung zu einem der Clusterknoten her (node01) und öffnen Sie ein Konsolenfenster.

  2. Laden Sie das Sentinel-Installationsprogramm (a tar.gz file) herunter und speichern Sie es im Verzeichnis /tmp im Clusterknoten.

  3. Führen Sie folgende Befehle aus:

    mount /dev/<SHARED1> /var/opt/novell
    
    cd /tmp
    
    tar -xvzf sentinel_server*.tar.gz
    
    cd sentinel_server*
    
    ./install-sentinel --record-unattended=/tmp/install.props
    
  1. Führen Sie eine Standardinstallation durch und konfigurieren Sie das Produkt entsprechend. Das Installationsprogramm installiert die Binärdateien, die Konfiguration und die Datenbanken und richtet die Benutzernamen und Passwörter und die Netzwerkports ein.

  2. Starten Sie Sentinel und prüfen Sie die Basisfunktionen. Sie können die standardmäßige externe Clusterknoten-IP verwenden, um auf das Produkt zuzugreifen.

  3. Fahren Sie Sentinel herunter und hängen Sie den freigegebenen Speicher aus:

    rcsentinel stop
    
    umount /var/opt/novell
    

    Durch diesen Schritt werden die Autostart-Skripte entfernt, sodass der Cluster das Produkt verwalten kann.

    cd /
    
    insserv -r sentinel
    

Nachfolgende Installation im Knoten

Wiederholen Sie die Installation in anderen Knoten:

Das ursprüngliche Sentinel-Installationsprogramm erstellt ein Benutzerkonto, das von dem Produkt verwendet werden kann, welches zum Zeitpunkt der Installation die nächste verfügbare Benutzer-ID verwendet. Bei nachfolgenden Installationen im unbeaufsichtigten Modus wird versucht, dieselbe Benutzer-ID für die Erstellung von Konten zu verwenden, doch es besteht die Möglichkeit, dass Konflikte auftreten (wenn die Clusterknoten zum Zeitpunkt der Installation nicht identisch sind). Es wird dringend empfohlen, eine der folgenden Maßnahmen zu ergreifen:

  • Synchronisieren Sie die Benutzerkontodatenbank in allen Clusterknoten (manuell über LDAP oder ähnliches) und vergewissern Sie sich, dass die Synchronisierung vor weiteren Installationen durchgeführt wird. In diesem Fall erkennt das Installationsprogramm das vorhandene Benutzerkonto und verwendet das vorhandene Konto.

  • Beobachten Sie die Ausgabe der nachfolgenden unbeaufsichtigten Installationen - eine Warnung wird angezeigt, wenn das Benutzerkonto nicht mit derselben Benutzer-ID erstellt werden konnte.

  1. Stellen Sie eine Verbindung zu allen weiteren Clusterknoten (node02) her und öffnen Sie ein Konsolenfenster.

  2. Führen Sie Folgendes aus:

    cd /tmp
    
    scp root@node01:/tmp/sentinel_server*.tar.gz
    
    scp root@node01:/tmp/install.props
    
    tar -xvzf sentinel_server*.tar.gz
    
    ./install-sentinel --no-start --cluster-node --unattended=/tmp/install.props
    
    cd /
    
    insserv -r sentinel
    

Am Ende dieses Vorgangs sollte Sentinel in allen Knoten installiert sein, doch es funktioniert wahrscheinlich zunächst nur im ersten Knoten und in den anderen erst nach der Synchronisierung der verschiedenen Schlüssel, was nach der Konfiguration der Clusterressourcen der Fall ist.

A.4.4 Clusterinstallation

Installieren Sie die Clustersoftware in jedem Knoten und registrieren Sie jeden Clusterknoten mit dem Clustermanager. Die entsprechenden Prozeduren variieren abhängig von der Clusterimplementierung, doch am Ende des Vorgangs sollte jeder Clusterknoten in der Clusterverwaltungskonsole angezeigt werden.

In unserer Beispiellösung richten wir die SUSE Linux High Availability Extension ein und überlagern sie mit den Sentinel-spezifischen Resource Agents:

Wenn Sie zur Überwachung von Sentinel nicht den OCF Resource Agent verwenden, müssen Sie wahrscheinlich eine ähnliche Überwachungslösung für die lokale Clusterumgebung entwickeln. Der OCF Resource Agent für Sentinel ist ein einfaches Shell-Skript, das eine Reihe von Überprüfungen durchführt, um festzustellen, ob Sentinel funktionsfähig ist. Falls Sie selbst einen Resource Agent entwickeln möchten, sollten Sie den vorhandenen als Anleitung verwenden (der Resource Agent ist in der sentinel-ha.rpm im Sentinel-Download-Paket gespeichert).

Ein SLE HAE-Cluster kann auf viele verschiedene Arten konfiguriert werden, doch wir wählen Optionen aus, die die Konfiguration relativ einfach gestalten. Im ersten Schritt wird die SLE HAE-Software installiert. Alle Details zur Installation finden Sie in der Dokumentation für SLE HAE. Informationen zur Installation der SLES-Add-ons finden Sie im Bereitstellungshandbuch.

Sie müssen SLE HAE in allen Clusterknoten installieren, in unserem Beispiel node01 und node02. Mit dem Add-on werden neben der zentralen Software für die Clusterverwaltung und Kommunikation auch viele Resource Agents installiert, die zur Überwachung von Clusterressourcen verwendet werden.

Nach der Installation der Clustersoftware sollte ein zusätzlicher RPM installiert werden, um weitere Sentinel-spezifische Cluster-Resource Agents bereitzustellen. Der RPM ist in der Datei novell-Sentinel-ha-7.1*.rpm verfügbar, die im normalen Sentinel-Download gespeichert ist, den Sie zur Installation des Produkts entpackt haben.

Kopieren Sie in jedem Clusterknoten die Datei novell-Sentinel-ha-7.1*.rpm in das Verzeichnis /tmp und fahren Sie fort mit:

cd /tmp
rpm -i novell-Sentinel-ha-7.1*.rpm

A.4.5 Clusterkonfiguration

Sie müssen die Clustersoftware konfigurieren, um jeden Clusterknoten als Mitglied des Clusters zu registrieren. Als Teil dieser Konfiguration können Sie auch Fencing- und STONITH-Ressourcen einrichten, um die Clusterkonsistenz sicherzustellen.

In unserer Beispiellösung verwenden wir grundsätzlich die einfachste Konfiguration ohne zusätzliche Redundanz oder andere erweiterte Funktionen. Wir verwenden auch eine Unicast-Adresse (anstelle der bevorzugten Multicast-Adresse), weil sie weniger Interaktion mit den Netzwerkadministratoren erfordert und für Testzwecke ausreicht. Wir richten auch eine einfache SBD-basierte Fencing-Ressource ein.

Beispiellösung:

Die Beispiellösung verwendet private IP-Adressen für die interne Clusterkommunikation und verwendet Unicast, um zu vermeiden, dass eine Multicast-Adresse von einem Netzwerkadministrator angefragt werden muss. Die Lösung verwendet auch ein iSCSI-Ziel, das auf demselben virtuellen Computer mit SUSE Linux konfiguriert ist, auf dem auch der freigegebene Speicher gehostet wird, um als SBD-Gerät für Fencing-Zwecke zu dienen. Wie zuvor können mit jeder Datei oder jedem Blockgerät iSCSI-Geräte erstellt werden, doch einfachheitshalber verwenden wir hier eine Datei, die wir für diesen Zweck erstellt haben.

Die folgenden Konfigurationsschritte sind denen zur Einrichtung des freigegebenen Speichers sehr ähnlich:

SBD-Einrichtung

Stellen Sie eine Verbindung zu storage03 her und starten Sie eine Konsolensitzung. Erstellen Sie mit dem Befehl dd eine leere Datei von beliebiger Größe:

dd if=/dev/zero of=/sbd count=1024 bs=1024

In diesem Fall erstellen wir eine 1 MB große Datei mit Nullen (kopiert vom Pseudogerät /dev/zero).

Konfigurieren Sie dieses Gerät als iSCSI-Ziel:

  1. Führen Sie YaST an der Befehlszeile aus (oder verwenden Sie die GUI, falls bevorzugt): /sbin/yast

  2. Wählen Sie Netzwerkdienste > iSCSI-Ziel aus.

  3. Klicken Sie auf Ziele und wählen Sie das vorhandene Ziel aus.

  4. Wählen Sie Bearbeiten aus. Auf der Benutzeroberfläche wird eine Liste von verfügbaren LUNs (Laufwerken) angezeigt.

  5. Wählen Sie Hinzufügen aus, um ein neues LUN hinzuzufügen.

  6. Belassen Sie die LUN-Nummer bei 2. Durchsuchen Sie das Dialogfeld Pfad und wählen Sie die Datei /sbd aus, die Sie erstellt haben.

  7. Belassen Sie die anderen Optionen wie standardmäßig eingestellt, wählen Sie OK und dann Weiter aus und klicken Sie anschließend erneut auf Weiter, um die Standardoptionen für die Authentifizierung auszuwählen.

  8. Beenden Sie die Konfiguration mit Fertig stellen. Starten Sie die Dienste neu, falls erforderlich. Beenden Sie YaST.

HINWEIS:Bei den folgenden Schritten müssen alle Clusterknoten den Hostnamen aller anderen Clusterknoten auflösen können (im Dateisynchronisierungsdienst csync2 treten andernfalls Fehler auf). Wenn das DNS nicht eingerichtet oder verfügbar ist, fügen Sie jedem Host in Datei /etc/hosts Einträge hinzu, die jede IP und deren Hostname auflisten (wie durch den Hostnamenbefehl gemeldet).

Durch diese Prozedur wird am Server unter der IP-Adresse 10.0.0.3 (storage03) ein iSCSI-Ziel für das SBD-Gerät angezeigt.

Knotenkonfiguration

Stellen Sie eine Verbindung zu einem Clusterknoten (node01) her und öffnen Sie eine Konsole:

  1. YaST ausführen.

  2. Öffnen Sie Netzwerkdienste > iSCSI-Initiator.

  3. Wählen Sie Verbundene Ziele aus und anschließend das iSCSI-Ziel, das Sie oben konfiguriert haben.

  4. Wählen Sie die Option Abmelden aus und melden Sie sich vom Ziel ab.

  5. Wechseln Sie zur Registerkarte Erkannte Ziele, wählen Sie das Ziel aus und melden Sie sich erneut an, um die Liste der Geräte zu aktualisieren (lassen Sie die Option für den automatischen Start und „Keine Authentifizierung“ aktiviert).

  6. Wählen Sie OK aus, um das iSCSI-Inititor-Werkzeug zu beenden.

  7. Öffnen Sie System > Partitionierer und kennzeichnen Sie das SBD-Gerät als 1MB IET-VIRTUAL-DISK. Es wird als /dev/sdd oder ähnlich aufgeführt – notieren Sie sich, wie es heißt.

  8. Beenden Sie YaST.

  9. Führen Sie den Befehl ls -l /dev/disk/by-id/ und notieren Sie sich die Geräte-ID, die mit dem Gerätenamen verknüpft ist, den Sie oben gefunden haben.

  10. Führen Sie den Befehl sleha-init aus.

  11. Wenn Sie aufgefordert werden, die Netzwerkadresse für die Verknüpfung einzugeben, geben Sie die IP-Adresse des externen NIC an (172.16.0.1).

  12. Akzeptieren Sie die standardmäßige Multicast-Adresse und den Port. Sie werden später überschrieben.

  13. Geben Sie „j“ ein, um SBD zu aktivieren. Geben Sie anschließend die /dev/disk/by-id/<Geräte-ID> an, wobei<Geräte-ID> die ID bezeichnet, die Sie oben gefunden haben (Sie können die Tabulatortaste verwenden, um den Pfad automatisch einzutragen)

  14. Beenden Sie den Assistenten und vergewissern Sie sich, dass keine Fehler gemeldet wurden.

  15. Starten Sie YaST.

  16. Wählen Sie Hochverfügbarkeit > Cluster aus (oder bei einigen Systemen nur „Cluster“).

  17. Vergewissern Sie sich, dass im Feld auf der linken Seite die Option Kommunikationskanäle ausgewählt ist.

  18. Gehen Sie mit der Tabulatortaste zur ersten Zeile der Konfiguration und ändern Sie die Auswahl von „udp“ zu „udpu“ (dadurch wird Multicast deaktiviert und Unicast ausgewählt).

  19. Wählen Sie die Option Mitgliedsadresse hinzufügen aus und geben Sie diesen Knoten (172.16.0.1) an. Wiederholen Sie dies und fügen Sie den (die) anderen Clusterknoten hinzu: 172.16.0.2.

  20. Wählen Sie zum Beenden der Konfiguration Fertig stellen aus.

  21. Beenden Sie YaST.

  22. Führen Sie den Befehl /etc/rc.d/openais aus, um die Clusterdienste mit dem neuen Synchronisierungsprotokoll neu zu starten.

Stellen Sie eine Verbindung zu jedem weiteren Clusterknoten (node02) her und öffnen Sie die Konsole:

  1. Führen Sie den folgenden Befehl aus: sleha-join

  2. Geben Sie die IP-Adresse des ersten Clusterknotens ein.

Unter bestimmten Umständen wird die Clusterkommunikation nicht korrekt initialisiert. Wenn der Cluster nicht startet (der Dienst openais startet nicht):

  • Kopieren Sie corosync.conf manuell von node01 zu node02 oder führen Sie csync2 -x -v auf node01 aus. Sie können den Cluster auch über YaST im node02 einrichten.

  • Führen Sie /etc/rc.d/openais start im node02 aus.

In einigen Fällen kann im Skript ein Fehler auftreten, weil der Dienst xinetd den neuen Dienst csync2 nicht ordnungsgemäß hinzufügt. Dieser Dienst ist erforderlich, damit der andere Knoten die Clusterkonfigurationsdateien bis zu diesem Knoten synchronisieren kann. Wenn Sie Fehler wie csync2 run failed sehen, könnte dieses Problem bei Ihnen aufgetreten sein. Führen Sie zur Fehlerbehebung kill -HUP `cat /var/run/xinetd.init.pid aus und führen Sie anschließend das Skriptsleha-join erneut aus.

An diesem Punkt sollten Sie „crm_mon“ in jedem Clusterknoten ausführen können und sehen, dass der Cluster ordnungsgemäß ausgeführt wird. Alternativ können Sie „hawk“, die Webkonsole verwenden. Die Standardanmeldeberechtigung lautet „hacluster / linux“.

Für dieses Beispiel müssen wir zwei zusätzliche Parameter optimieren. Ob diese für den Produktionscluster eines Kunden gelten, hängt von dessen Konfiguration ab:

  1. Legen Sie die globale Clusteroption no-quorum-policy auf Ignorieren fest. Dies tun wir, weil unser Cluster nur aus zwei Knoten besteht. Ein Fehler in einem einzelnen Knoten würde somit dazu führen, dass die Mindestanzahl unterschritten wird, und der gesamte Cluster würde herunterfahren: crm configure property no-quorum-policy=ignore

    HINWEIS:Wenn Ihr Cluster aus mehr als zwei Knoten besteht, dürfen Sie diese Option nicht festlegen.

  2. Legen Sie die globale Clusteroption default-resource-stickiness auf 1 fest. Dadurch lässt der Ressourcenmanager die Ressourcen dort weiter ausführen, wo sie sich befinden, und verschiebt sie nicht: crm configure property default-resource-stickiness=1.

A.4.6 Ressourcenkonfiguration

Wie bereits im Abschnitt „Clusterinstallation“ erwähnt, ist für diese Lösung ein OCF Resource Agent erforderlich, um die zentralen Dienste unter SLE HAE zu überwachen. Sie können nach Wunsch auch Alternativen erstellen. Die Software hängt auch von verschiedenen anderen Ressourcen ab, für die Resource Agents standardmäßig mit SLE HAE bereitgestellt werden. Wenn Sie SLE HAE nicht verwenden möchten, müssen Sie diese zusätzlichen Ressourcen mit einer anderen Technologie überwachen:

  • Eine Dateisystemressource, die dem freigegebenen Speicher entspricht, den die Software verwendet.

  • Eine IP-Adressenressource, die der virtuellen IP-Adresse entspricht, über die auf die Dienste zugegriffen wird.

  • Die PostgreSQL-Datenbanksoftware verwendet die Software zum Speichern der Konfiguration und Ereignismetadaten.

Es gibt noch weitere Ressourcen wie MongoDB, die für die Sicherheitsintelligenz und den ActiveMQ-Nachrichtenbus verwendet wird. Zum jetzigen Zeitpunkt werden zumindest diese als Teil der zentralen Dienste überwacht.

Beispiellösung

Die Beispiellösung verwendet einfache Versionen der erforderlichen Ressourcen, wie den einfachen Resource Agent für das Dateisystem. Sie können komplexere Clusterressourcen wie cLVM (eine Version des logischen Volumes des Dateisystems) verwenden, falls erforderlich.

Die Beispiellösung stellt das Skript crm bereit, um die Clusterkonfiguration zu unterstützen. Das Skript zieht relevante Konfigurationsvariablen aus der Datei der unbeaufsichtigten Einrichtung, die als Teil der Sentinel-Installation erstellt wurde. Wenn Sie keine Einrichtungsdatei erstellt haben oder die Konfiguration der Ressourcen ändern möchten, können Sie das Skript entsprechend bearbeiten.

Stellen Sie eine Verbindung zum ursprünglichen Knoten her, in dem Sie Sentinel installiert haben (dies muss der Knoten sein, in dem Sie Sentinel vollständig installiert haben) und gehen Sie folgendermaßen vor (<SHARED1> bezeichnet das freigegebene Volume, das Sie oben erstellt haben):

mount /dev/<SHARED1> /var/opt/novell
cd /usr/lib/ocf/resource.d/novell
./install-resources.sh

Bei den neuen Ressourcen, die im Cluster auftauchen, könnten Probleme auftreten. Führen Sie /etc/rc.d/openais restart in node02 auf, wenn Sie ein Problem feststellen.

Das Skript install-resources.sh fordert Sie auf, einige Werte einzugeben, nämlich die virtuelle IP, die für den Zugriff auf Sentinel verwendet werden soll, und den Gerätenamen des freigegebenen Speichers. Die erforderlichen Clusterressourcen werden dann automatisch erstellt. Beachten Sie, dass das Skript ein bereits eingehängtes freigegebenes Volume benötigt sowie dass dafür die Datei der unbeaufsichtigten Installation, die bei der Sentinel-Installation erstellt wurde, vorhanden sein muss (/tmp/install.props). Sie brauchen dieses Skript nur im ersten installierten Knoten auszuführen. Alle relevanten Konfigurationsdateien werden automatisch mit den anderen Knoten synchronisiert.

Wenn die Kundenumgebung von dieser Beispiellösung abweicht, können Sie die Datei resources.cli bearbeiten (im selben Verzeichnis) und die Definitionen der Primitivdaten dort ändern. Beispielsweise verwendet die Beispiellösung eine einfache Dateisystemressource. Sie möchten stattdessen vielleicht eine eher Cluster-bewusste cLVM-Ressource verwenden.

Nach der Ausführung des Shell-Skripts können Sie einen crm-Statusbefehl ausstellen und die Ausgabe sollte folgendermaßen aussehen:

crm status
Last updated: Thu Jul 26 16:34:34 2012
Last change: Thu Jul 26 16:28:52 2012 by hacluster via crmd on node01
Stack: openais
Current DC: node01 - partition with quorum
Version: 1.1.6-b988976485d15cb702c9307df55512d323831a5e
2 Nodes configured, 2 expected votes
5 Resources configured.
Online: [ node01, node02 ]
stonith-sbd    (stonith:external/sbd):    Started node01
 Resource Group: sentinelgrp
     sentinelip    (ocf::heartbeat:IPaddr2):    Started node01
     sentinelfs    (ocf::heartbeat:Filesystem):    Started node01
     sentineldb    (ocf::novell:pgsql):    Started node01
     sentinelserver    (ocf::novell:sentinel):    Started node01

Zu diesem Zeitpunkt sollten die relevanten Sentinel-Ressourcen im Cluster bereits konfiguriert sein. Sie können nachprüfen, wie sie konfiguriert und im Clusterverwaltungswerkzeug gruppiert sind, indem Sie zum Beispiel den crm-Status ausführen.

A.4.7 Konfiguration des Netzwerkspeichers

Als letzten Schritt in diesem Prozess konfigurieren Sie den Netzwerkspeicher, sodass Sentinel Ereignispartitionen in günstigere Speicher migrieren kann. Dies ist optional und der Netzwerkspeicher braucht tatsächlich nicht so hochverfügbar zu sein wie das restliche System. Sie können jedes beliebige Verzeichnis (von einem SAN eingehängt oder auch nicht) oder ein NFS- oder CIFS-Volume verwenden.

Klicken Sie oben in der Menüleiste auf Speicher, wählen Sie Konfiguration aus und anschließend eines der Optionsfelder unter Netzwerkspeicher, das nicht für diese Einrichtung konfiguriert wurde.

Beispiellösung

Die Beispiellösung verwendet ein einfaches iSCSI-Ziel als freigegebenen Netzwerkspeicherort. Die Konfiguration entspricht in etwa dem lokalen Speicher. In Produktionsimplementierungen wären diese wahrscheinlich unterschiedliche Speichertechnologien.

Mit der folgenden Prozedur können Sie den Netzwerkspeicher für Sentinel konfigurieren:

HINWEIS:Da wir ein iSCSI-Ziel für diese Beispiellösung verwenden, wird das Ziel als Verzeichnis eingehängt, das als Netzwerkspeicher verwendet wird. Dadurch müssen wir die Einhängung als Dateisystemressource konfigurieren ähnlich der Konfiguration des Dateisystems des lokalen Speichers. Dies wurde nicht automatisch als Teil des Skripts für die Ressourceninstallation eingerichtet, da es andere mögliche Varianten gibt. Wir nehmen die Installation hier manuell vor.

  1. Sehen Sie sich die oben beschriebenen Schritte an, um zu ermitteln, welche Partition zur Verwendung als Netzwerkspeicher erstellt wurde (/dev/<NETWORK1> oder etwas wie /dev/sdc1). Erstellen Sie gegebenenfalls ein leeres Verzeichnis, in dem die Partition eingehängt werden kann (wie /var/opt/netdata).

  2. Richten Sie das Netzwerkdateisystem als Clusterressource ein. Verwenden Sie die grafische Weboberfläche oder führen Sie den folgenden Befehl aus:

    crm configure primitive sentinelnetfs ocf:heartbeat:Filesystem params device="/dev/<NETWORK1>" directory="<PATH>" fstype="ext3" op monitor interval=60s
    

    wobei /dev/<NETWORK1> die Partition bezeichnet, die oben im Abschnitt „Einrichtung des freigegebenen Speichers“ erstellt wurde, und <PATH> ein lokales Verzeichnis, in dem die Partition eingehängt werden kann.

  3. Fügen Sie die neue Ressource der Gruppe der verwalteten Ressourcen hinzu:

     crm resource stop sentinelgrp
     crm configure delete sentinelgrp
     crm configure group sentinelgrp sentinelip sentinelfs sentinelnetfs sentineldb sentinelserver
     crm resource start sentinelgrp
    
  4. Sie können eine Verbindung zu dem Knoten herstellen, auf dem aktuell die Ressourcen gehostet werden (verwenden Sie den crm-Status oder Hawk) und vergewissern Sie sich, dass der Netzwerkspeicher korrekt eingehängt wurde (verwenden Sie den mount-Befehl).

  5. Melden Sie sich bei der Sentinel-Weboberfläche an.

  6. Wählen Sie Speicher und Konfiguration aus und anschließend das SAN (lokal eingehängt) unter „Netzwerkspeicher“, das nicht konfiguriert ist.

  7. Geben Sie den Pfad ein, unter dem der Netzwerkspeicher eingehängt ist, wie zum Beispiel /var/opt/netdata.

Die Beispiellösung verwendet einfache Versionen der erforderlichen Ressourcen, wie den einfachen Resource Agent für das Dateisystem. Kunden können komplexere Clusterressourcen wie cLVM (eine Version des logischen Volumes des Dateisystems) verwenden, falls sie es wünschen.