Implementierung eines Hochverfügbarkeitsclusters für SUSE Linux Enterprise Server

Verwenden Sie die folgenden Informationen und Anleitungen, um einen SUSE Linux®-Enterprise (SLE)-Cluster zu implementieren, der die SUSE High Availability Extension (HAE) nutzt. Der Cluster nutzt Instanzen unter IBM® Power® Virtual Server, die als Clusterknoten dienen.

Die folgenden Informationen beschreiben, wie die einzelnen virtuellen Serverinstanzen in einen Cluster umgewandelt werden.

Diese Verfahren umfassen die Installation der Hochverfügbarkeitspakete und -agenten auf jedem Clusterknoten sowie die Konfiguration der Fencing-Geräte.

Diese Informationen richten sich an Architekten und Spezialisten, die eine hochverfügbare Bereitstellung von SAP-Anwendungen auf Power Virtual Server planen. Sie sind nicht als Ersatz für die bestehende Dokumentation unter SAP oder SUSE gedacht.

Vorbereitende Schritte

Bevor Sie beginnen, lesen Sie bitte die allgemeinen Anforderungen, die Produktdokumentation, die Support-Artikel und die SAP-Hinweise durch, die unter Implementierung von Hochverfügbarkeit für SAP-Anwendungen auf IBMPower Virtual Server Referenzen aufgeführt sind.

Die Konfiguration nutzt SBD-Fencing in Kombination mit dem Hardware-Watchdog-Timer. Erstellen Sie die virtuellen Serverinstanzen unter Verwendung eines der Power10 Maschinentypen im Profil, um die Unterstützung für den Hardware-Watchdog zu aktivieren.

Erstellen Sie virtuelle Serverinstanzen für den Cluster

Befolgen Sie die Anweisungen unter Bereitstellen einer Power Virtual Server-Instanz für das SAP HANA-System bzw. unter Bereitstellen einer Power Virtual Server-Instanz für SAP NetWeaver, um die virtuellen Serverinstanzen zu erstellen, die Sie als Clusterknoten verwenden möchten.

Bereiten Sie die Knoten für die Installation der SLE High Availability Extension vor

Im folgenden Abschnitt werden die grundlegenden Vorbereitungsschritte auf den Clusterknoten beschrieben. Stellen Sie sicher, dass alle Schritte auf beiden Knoten ausgeführt werden.

Melden Sie sich an jedem Cluster-Knoten als Root-Benutzer an.

Hinzufügen von Cluster-Knoten-Einträgen zur Hosts-Datei

Fügen Sie auf beiden Knoten die IP-Adressen aller Clusterknoten zusammen mit ihrem vollqualifizierten Hostnamen und ihrem Kurzhostnamen zur Datei /etc/hosts hinzu.

Weitere Informationen finden Sie unter Hostname und IP-Adresse im Abschnitt Systemanforderungen und Empfehlungen des Administrationshandbuchs für SUSE Linux Enterprise High Availability.

Umgebungsvariablen vorbereiten

Um den Einrichtungsprozess zu vereinfachen, richten Sie einige Umgebungsvariablen für den Root-Benutzer ein. Diese Umgebungsvariablen werden in Verbindung mit den nachfolgenden Betriebssystembefehlen in dieser Anleitung verwendet.

Erstellen Sie auf beiden Knoten eine Datei mit den folgenden Umgebungsvariablen und passen Sie diese an Ihre Umgebung an.

# General settings
export CLUSTERNAME="SAP_CLUSTER"         # Cluster name
# Virtual server instance 1
export NODE1=<HOSTNAME_1>                # Virtual server instance hostname
# Virtual server instance 2
export NODE2=<HOSTNAME_2>                # Virtual server instance hostname

Installieren und Konfigurieren eines SLE-HA-Clusters

Führen Sie die folgenden Schritte aus, um einen Cluster mit zwei Knoten einzurichten.

Die Anleitungen basieren auf der Dokumentation SUSE sowie auf den Artikeln, die unter Implementierung von Hochverfügbarkeit für SAP-Anwendungen auf IBMPower Virtual Server Referenzen aufgeführt sind.

Einige Schritte müssen auf beiden Knoten ausgeführt werden, während andere entweder auf NODE1 oder auf NODE2 ausgeführt werden können.

Installation der HAE-Software für SUSE

Befolgen Sie diese Schritte, um zu überprüfen, ob die HAE-Repositorys von SUSE verfügbar sind, und installieren Sie die erforderlichen Softwarepakete.

Überprüfung der HAE-Repositorys unter SUSE

  1. Überprüfen Sie, ob die Repositorys SUSE und Linux ® Enterprise High Availability Extension aktiviert sind, indem Sie den folgenden Befehl auf beiden Knoten ausführen.

    zypper repos --show-enabled-only | grep High
    

    Überspringen Sie die folgenden Schritte, wenn die Ausgabe die SLE-HAE-Repositorys sowohl für Pool als auch für Updates enthält. Beispiel:

    • SUSE_Linux_Enterprise_High_Availability_Extension_ppc64le:SLE-Product-HA15-SP6-Pool
    • SUSE_Linux_Enterprise_High_Availability_Extension_ppc64le:SLE-Product-HA15-SP6-Updates
  2. Wenn die HAE-Repositorys nicht aufgeführt sind, verwenden Sie, um yast2 sie zu aktivieren.

    • Software
    • Zusatzprodukte
    • Hinzufügen
    • Erweiterungen und Module vom Registrierungsserver
      • Yast2 durchläuft beide Repositorys Pool und Updates
      • Beide Repositories hinzufügen
    • Die Anwendung yast2 beenden
  3. Wenn Sie fertig sind, führen Sie denselben Befehl erneut auf beiden Knoten aus.

    zypper repos --show-enabled-only | grep High
    

Beide SLE-HAE-Repositorys sind aufgeführt.

Installation der SLE HAE-Softwarepakete

Verwenden Sie den folgenden Befehl, um die erforderlichen Softwarepakete zu installieren.

Führen Sie auf beiden Knoten den folgenden Befehl aus.

zypper install -t pattern ha_sles

Konfigurieren eines SLE-Hochverfügbarkeitsclusters

Verwenden Sie die folgenden Informationen, um einen SLE-Hochverfügbarkeitscluster zu konfigurieren.

Überprüfung der Hardwareanforderungen

Beachten Sie die folgenden Hardwareanforderungen, um einen SLE-Hochverfügbarkeitscluster zu konfigurieren.

Detaillierte Hardwareanforderungen finden Sie in der Dokumentation zu SUSE unter Linux Enterprise High Availability im Abschnitt Schnellstart: Installation und Einrichtung.

  • Zwei virtuelle Server oder logische Partitionen, die als Clusterknoten dienen.
  • Ein zweiter Netzwerkkommunikationskanal oder eine gebündelte Netzwerkschnittstelle für Corosync.
  • Ein freigegebenes Volume, das als STONITH-Blockgerät (SBD) verwendet werden soll.
  • Ein Hardware-Watchdog-Timer für zuverlässiges Node-Fencing.

Erstellen von gemeinsam genutzten Speichervolumes

Verwenden Sie die Weboberfläche IBM Cloud ( PowerVS ), um ein oder drei gemeinsam genutzte Volumes zu erstellen, die als SBD-Geräte verwendet werden sollen. SUSE Es wird empfohlen, drei Volumes zu erstellen, um Redundanz zu gewährleisten. Im Anschluss an diese Informationen wird die Erstellung einer einzelnen SBD-Festplatte beschrieben.

Wenn Sie mehrere Festplatten verwenden möchten, wiederholen Sie die folgenden Schritte bei Bedarf für jedes Volume.

  1. Zur Seite Power Virtual Server – Speichervolumes wechseln.

  2. Klicken Sie auf Datenträger erstellen.

  3. Geben Sie im Formular Speichervolumen erstellen die folgenden Informationen ein.

    • Geben Sie einen Namen für das Volume ein.
    • Stellen Sie die Größe (GB) auf 1 ein (Standard).
    • Schalten Sie Teilen auf Ein um.
    • Akzeptieren Sie die Allgemeinen Geschäftsbedingungen, indem Sie das entsprechende Kästchen ankreuzen.
  4. Klicken Sie auf Volume erstellen, um den Vorgang abzuschließen.

    Nun müssen Sie die Volumes an beide Clusterknoten anhängen.

  5. Passen Sie die logische Partition für den ersten Clusterknoten an.

  6. Klicken Sie auf Vorhandenes anhängen, um das zuvor erstellte freigegebene Volume an diesen Knoten anzuhängen.

  7. Wiederholen Sie die gleichen Schritte für den zweiten Clusterknoten.

  8. Führen Sie auf einem beliebigen Knoten den folgenden Befehl aus, um die Gerätenamen der 1-G-Volumes zu ermitteln.

    multipath -l | grep -B1 'size=1G'
    

    Wenn die Ausgabe des Befehls multipath -l wie folgt lautet:

    36005076813810264e800000000006f10 dm-0 IBM,2145
    size=1G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
    
  9. Um den Gerätenamen zu überprüfen, der dem freigegebenen Volume zugeordnet ist, führen Sie den folgenden Befehl aus.

    ls /dev/disk/by-id/wwn-0x6005076813810264e800000000006f10
    

    Das SBD-Gerät muss auf allen Clusterknoten denselben Gerätenamen tragen, um einen ordnungsgemäßen Clusterbetrieb zu gewährleisten.

    Um die weiteren Schritte zu vereinfachen, exportieren Sie den SBD-Gerätepfad als Umgebungsvariable, die bei der Cluster-Initialisierung verwendet wird.

    export SBD_DEVICE=/dev/disk/by-id/wwn-0x6005076813810264e800000000006f10
    

Konfigurieren des Hardware-Watchdogs

Der Hardware-Watchdog-Timer ist auf logischen Partitionen von Power10 standardmäßig aktiviert. Um die Verfügbarkeit zu überprüfen, führen Sie den folgenden Befehl aus.

ls /dev/watchdog*

Die Ausgabe listet zwei Geräte auf: und /dev/watchdog /dev/watchdog0.

Wenn kein Watchdog-Gerät aufgeführt ist, führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Prozessor-Kompatibilitätsmodus auf Power10 eingestellt ist.

LD_SHOW_AUXV=1 /bin/true | grep _PLATFORM

Achten Sie in der Ausgabe auf die folgenden Felder.

  • AT_BASE_PLATFORM – gibt den tatsächlichen Prozessortyp an.
  • AT_PLATFORM – zeigt den Prozessorkompatibilitätsmodus an.

Der Prozessorkompatibilitätsmodus muss auf Power10 eingestellt sein. Wenn eine frühere Version eingestellt ist, steht der Hypervisor-Watchdog nicht zur Verfügung.

Schlichter

Für einen Cluster mit zwei Knoten wird eine dritte LPAR als Schlichter empfohlen. Der Arbitrator ist eine logische Partition, die nicht zum Cluster gehört. Es hostet den QNetd-Server als dritte Instanz, um die Ermittlung des Cluster-Quorums in Split-Brain-Szenarien zu unterstützen. Bei einer geraden Anzahl von Cluster-Knoten sind Arbitratoren unverzichtbar, da sie dem Quorum eine Instanz hinzufügen.

Weitere Informationen finden Sie in der Dokumentation zu SUSE unter den Einträgen QDevice und QNetd.

Der Arbitrator wird in der Regel eingerichtet, nachdem der Cluster bereits läuft. Verwenden Sie den Ansatz crm cluster init qdevice, wie er in der Dokumentation SUSE beschrieben ist.

Konfiguration der Zeitsynchronisation

Beide Clusterknoten benötigen eine Zeitsynchronisation, um einen ordnungsgemäßen Betrieb zu gewährleisten. Wenn logische Partitionen auf PowerVS, ausgeführt werden, erfolgt die Zeitsynchronisation automatisch über Hardware Management Console (HMC). In dieser Konfiguration ist der chrony-Daemon nicht erforderlich.

Konfigurieren des ersten Cluster-Knotens

Die Installationsskripte für die SUSE und die Linux Enterprise High Availability Extension konfigurieren automatisch viele wichtige Komponenten der Clusterumgebung.

sudo crm cluster init --name "$CLUSTERNAME" --sbd-device "$SBD_DEVICE"

Drücken Sie die Eingabetaste, um die Standardwerte zu übernehmen, oder geben Sie ein y und drücken Sie die Eingabetaste, wenn Sie dazu aufgefordert werden.

INFO: Loading "default" profile from /etc/crm/profiles.yml
WARNING: chronyd.service is not configured to start at system boot.
Do you want to continue anyway (y/n)? y
INFO: The user 'hacluster' will have the login shell configuration changed to /bin/bash
Continue (y/n)? y
INFO: A new ssh keypair is generated for user hacluster.
INFO: Configuring csync2
INFO: Starting csync2.socket service on ths-3
INFO: BEGIN csync2 checking files
INFO: END csync2 checking files
INFO: Configure Corosync (unicast):
  This will configure the cluster messaging layer.  You will need
  to specify a network address over which to communicate (default
  is eth0's network, but you can use the network address of any
  active interface).
Address for ring0 [10.51.0.84]
Port for ring0 [5405]
INFO: Initializing SBD
INFO: Hawk cluster interface is now running. To see cluster status, open:
INFO:   https://10.51.0.84:7630/
INFO: Log in with username 'hacluster', password 'linux'
WARNING: You should change the hacluster password to something more secure!
INFO: Starting pacemaker.service on ths-3
INFO: BEGIN Waiting for cluster
...........                                                                     INFO: END Waiting for cluster
INFO: Loading initial cluster configuration
WARNING: "stonith-enabled" in crm_config is set to true, it was false
INFO: Configure Administration IP Address:
  Optionally configure an administration virtual IP
  address. The purpose of this IP address is to
  provide a single IP that can be used to interact
  with the cluster, rather than using the IP address
  of any specific cluster node.
Do you wish to configure a virtual IP address (y/n)? y
Virtual IP []10.51.0.12
INFO: BEGIN Configuring virtual IP (10.51.0.12)
.                                                                               INFO: END Configuring virtual IP (10.51.0.12)
INFO: Configure Qdevice/Qnetd:
  QDevice participates in quorum decisions. With the assistance of
  a third-party arbitrator Qnetd, it provides votes so that a cluster
  is able to sustain more node failures than standard quorum rules
  allow. It is recommended for clusters with an even number of nodes
  and highly recommended for 2 node clusters.
Do you want to configure QDevice (y/n)? n
INFO: Done (log saved to /var/log/crmsh/crmsh.log on ths-3)

Der Cluster ist nun mit einem einzelnen Knoten in Betrieb.

Konfigurieren des zweiten Cluster-Knotens

Verwenden Sie die folgenden Informationen, um den zweiten Clusterknoten zu konfigurieren.

  1. Melden Sie sich beim zweiten Cluster-Knoten an.

  2. Um den Knoten in den bestehenden Cluster zu integrieren, verwenden Sie den Befehl ha-cluster-join. Für diesen Befehl sind ein Benutzerkonto und der Hostname des ersten Clusterknotens erforderlich.

    sudo crm cluster join -u root -c $NODE1
    
  3. Drücken Sie die Eingabetaste, um die Standardwerte zu übernehmen, oder geben Sie einen Wert ein und y drücken Sie die Eingabetaste, wenn Sie dazu aufgefordert werden.

    WARNING: chronyd.service is not configured to start at system boot.
    Do you want to continue anyway (y/n)? y
    INFO: The user 'hacluster' will have the login shell configuration changed to /bin/bash
    Continue (y/n)? y
    INFO: A new ssh keypair is generated for user hacluster.
    INFO: Configuring csync2
    INFO: Starting csync2.socket service
    INFO: BEGIN csync2 syncing files in cluster
    INFO: END csync2 syncing files in cluster
    INFO: Merging known_hosts
    Warning: Permanently added 'ths-4' (ED25519) to the list of known hosts.
    INFO: BEGIN Probing for new partitions
    INFO: END Probing for new partitions
    Address for ring0 [10.51.0.230]
    INFO: Got SBD configuration
    INFO: Hawk cluster interface is now running. To see cluster status, open:
    INFO:   https://10.51.0.230:7630/
    INFO: Log in with username 'hacluster', password 'linux'
    WARNING: You should change the hacluster password to something more secure!
    INFO: Starting pacemaker.service on ths-4
    INFO: BEGIN Waiting for cluster
    ..                                                                              INFO: END Waiting for cluster
    INFO: BEGIN Adjusting sbd related timeout values
    WARNING: "stonith-timeout" in crm_config is set to 83, it was 43
    INFO: END Adjusting sbd related timeout values
    INFO: Set property "priority" in rsc_defaults to 1
    WARNING: "priority-fencing-delay" in crm_config is set to 60, it was 0
    INFO: BEGIN Reloading cluster configuration
    INFO: END Reloading cluster configuration
    INFO: Done (log saved to /var/log/crmsh/crmsh.log on ths-4)
    
  4. Um zu überprüfen, ob der SLE-Cluster läuft, führen Sie den folgenden Befehl aus.

    sudo crm status
    

    Wenn keine Fehler aufgetreten sind, zeigt der Abschnitt Node sliste in der Ausgabe beide Knoten an, die als Online. aufgeführt sind.

    Node List:
      * Online: [ ths-3 ths-4 ]
    

    Im Abschnitt Ressourcen sind zwei Ressourcen aufgeführt, die sich im Status Gestartet befinden, was bedeutet, dass sie aktiv sind und ordnungsgemäß funktionieren.

    Full List of Resources:
      * stonith-sbd	(stonith:external/sbd):	 Started ths-3
      * admin-ip	(ocf::heartbeat:IPaddr2):	 Started ths-3
    

Festlegen eines Passworts für die Benutzer-ID hacluster

Führen Sie auf beiden Knoten den folgenden Befehl aus, um das Passwort für das Benutzerkonto hacluster festzulegen.

passwd hacluster

Überprüfen des SBD-Status

Verwenden Sie die folgenden Informationen, um zu überprüfen, ob die Variable SBD_DEVICE gesetzt ist.

Um den Status der SBD-Steckplätze von einem der Clusterknoten aus zu überprüfen, führen Sie den folgenden Befehl aus.

sbd -d $SBD_DEVICE list

Die Ausgabe listet beide Cluster-Knoten auf, jeweils mit dem Status clean, was darauf hinweist, dass der SBD-Mechanismus ordnungsgemäß funktioniert und keine Fencing-Aktionen anstehen.

Konfigurieren Sie die Fencing-Aktion

Standardmäßig wird der fenced Knoten nach einem Fencing-Ereignis automatisch neu gestartet.

Eine alternative Vorgehensweise besteht jedoch darin, den Knoten auszuschalten und ihn nach der Untersuchung der Ursache des Fehlers manuell neu zu starten.

Die manuelle Aktivierung des Knotens hat mehrere Vorteile.

  • Dadurch werden unnötige Endlosschleifen verhindert, die auftreten können, wenn das Grundproblem weiterhin besteht.
  • Dadurch wird sichergestellt, dass jedes Fencing-Ereignis erkannt und behandelt wird, was die Stabilität und Zuverlässigkeit des Clusters verbessert.

Um die Fencing-Aktion zum Ausschalten des Knotens zu konfigurieren, verwenden Sie den folgenden Befehl.

sudo crm configure property stonith-action="off"

Überprüfen Sie die aktuelle Clusterkonfiguration mit dem folgenden Befehl.

sudo crm configure show

Testen von Fencing-Vorgängen

Um die STONITH-Konfiguration zu testen, müssen Sie auf einem der Knoten manuell eine Fencing-Aktion auslösen.

  1. Führen Sie den folgenden Befehl aus, um NODE2 manuell in eine Sicherheitszone zu verschieben.

    crm node fence ${NODE2}
    
  2. Geben Sie ein und y drücken Sie die Eingabetaste, um fortzufahren, wenn die folgende Meldung angezeigt wird, wodurch NODE2: beendet wird

    Fencing ths-4 will shut down the node and migrate any resources that are running on it! Do you want to fence ths-4  (y/n)? y
    
  3. Aktivieren Sie NODE2, warten Sie, bis der Knoten wieder dem Cluster beitritt, und testen Sie das Fencing aus der entgegengesetzten Richtung.

    Führen Sie auf NODE2 den folgenden Befehl aus.

    crm status
    
  4. Wenn beide Knoten im Online Clusterstatus als angezeigt werden, warten Sie etwa eine Minute, um die Stabilität zu gewährleisten. Starten Sie anschließend über NODE2 eine Fencing-Aktion auf NODE1, indem Sie den folgenden Befehl ausführen, der NODE1: stoppt

    crm node fence ${NODE1}
    
  5. Aktivieren Sie NODE1 und starten Sie anschließend die Cluster-Dienste auf dem Knoten.