Hochverfügbarkeit für NFS auf Azure-VMs unter SUSE Linux Enterprise Server
Hinweis
Sie sollten einen der Erstanbieter-NFS-Dienste von Azure bereitstellen: NFS für Azure Files oder NFS ANF-Volumes zum Speichern freigegebener Daten in einem hoch verfügbaren SAP-System. Beachten Sie, dass wir SAP-Referenzarchitekturen in den Hintergrund stellen und NFS-Cluster verwenden.
In diesem Artikel werden das Bereitstellen und Konfigurieren der virtuellen Computer, das Installieren des Clusterframeworks und das Installieren eines hochverfügbaren NFS-Servers, auf dem die freigegebenen Daten eines hochverfügbaren SAP-Systems gespeichert werden können, beschrieben. In dieser Anleitung wird beschrieben, wie ein hochverfügbarer NFS-Server eingerichtet wird, der von zwei SAP-Systemen verwendet wird: NW1 und NW2. Bezüglich der Namen der Ressourcen (z. B. virtuelle Computer, virtuelle Netzwerke) im Beispiel wird davon ausgegangen, dass Sie die SAP-Dateiservervorlage mit dem Ressourcenpräfix prod verwendet haben.
Hinweis
In diesem Artikel werden Begriffe verwendet, die von Microsoft nicht mehr genutzt werden. Sobald die Begriffe aus der Software entfernt wurden, werden sie auch aus diesem Artikel gelöscht.
Lesen Sie zuerst die folgenden SAP Notes und Dokumente:
SAP-Hinweis 1928533 mit folgenden Informationen:
- Liste der Azure-VM-Größen, die für die Bereitstellung von SAP-Software unterstützt werden
- Wichtige Kapazitätsinformationen für Größen von Azure-VMs
- Unterstützte SAP-Software und Kombinationen aus Betriebssystem (OS) und Datenbank
- Erforderliche SAP-Kernelversion für Windows und Linux in Microsoft Azure
In SAP-Hinweis 2015553 sind die Voraussetzungen für Bereitstellungen von SAP-Software in Azure aufgeführt, die von SAP unterstützt werden.
SAP-Hinweis 2205917 enthält empfohlene Betriebssystemeinstellungen für den SUSE Linux Enterprise Server for SAP Applications.
SAP-Hinweis 1944799 enthält SAP HANA-Richtlinien für den SUSE Linux Enterprise Server for SAP Applications.
SAP-Hinweis 2178632 enthält ausführliche Informationen zu allen Überwachungsmetriken, die für SAP in Azure gemeldet werden.
SAP-Hinweis 2191498 enthält die erforderliche SAP Host Agent-Version für Linux in Azure.
SAP-Hinweis 2243692 enthält Informationen zur SAP-Lizenzierung unter Linux in Azure.
SAP-Hinweis 1984787 enthält allgemeine Informationen zu SUSE Linux Enterprise Server 12.
SAP-Hinweis 1999351 enthält Informationen zur Problembehandlung für die Azure-Erweiterung zur verbesserten Überwachung für SAP.
Das WIKI der SAP-Community enthält alle erforderlichen SAP-Hinweise für Linux.
Azure Virtual Machines – Planung und Implementierung für SAP unter Linux
Azure Virtual Machines – Bereitstellung für SAP unter Linux (dieser Artikel)
Azure Virtual Machines – DBMS-Bereitstellung für SAP unter Linux
Leitfäden mit bewährten Methoden zu SUSE Linux Enterprise Server for SAP Applications 12 SP5
Versionshinweise zu SUSE Linux Enterprise Server for SAP-Anwendungen 12 SP5
Übersicht
Zum Erreichen von Hochverfügbarkeit erfordert SAP NetWeaver einen NFS-Server. Der NFS-Server ist in einem separaten Cluster konfiguriert und kann von mehreren SAP-Systemen verwendet werden.
Der NFS-Server verwendet einen dedizierten virtuellen Hostnamen und virtuelle IP-Adressen für jedes SAP-System, das diesen NFS-Server verwendet. Für die Verwendung einer virtuellen IP-Adresse ist in Azure ein Lastenausgleich erforderlich. Die dargestellte Konfiguration zeigt einen Lastenausgleich mit:
- Front-End-IP-Adresse 10.0.0.4 für NW1
- Front-End-IP-Adresse 10.0.0.5 für NW2
- Testport 61000 für NW1
- Testport 61001 für NW2
Einrichten eines hochverfügbaren NFS-Servers
Manuelles Bereitstellen von Linux über das Azure-Portal
In diesem Dokument wird davon ausgegangen, dass Sie bereits eine Ressourcengruppe, ein virtuelles Azure-Netzwerk und ein Subnetz bereitgestellt haben.
Stellen Sie zwei virtuelle Computer für NFS-Server bereit. Wählen Sie ein geeignetes SLES-Image aus, das für Ihr SAP-System unterstützt wird. Sie können den virtuellen Computer in einer der Verfügbarkeitsoptionen bereitstellen: Skalierungsgruppe, Verfügbarkeitszone oder Verfügbarkeitsgruppe.
Konfigurieren von Azure Load Balancer
Befolgen Sie den Leitfaden Erstellen eines Lastenausgleichs zum Konfigurieren eines Standardlastenausgleichs für einen NFS-Server mit hoher Verfügbarkeit. Berücksichtigen Sie bei der Konfiguration des Lastenausgleichs die folgenden Punkte.
- Front-End-IP-Konfiguration: Erstellen Sie zwei IP-Adressen des Front-Ends. Wählen Sie dasselbe virtuelle Netzwerk und dasselbe Subnetz wie Ihr NFS-Server aus.
- Back-End-Pool: Erstellen Sie einen Back-End-Pool, und fügen Sie NFS-Server-VMs hinzu.
- Regeln für eingehenden Datenverkehr: Erstellen Sie zwei Lastenausgleichsregeln (eine für NW1 und eine für NW2). Führen Sie für beide Lastenausgleichsregeln die gleichen Schritte aus.
- Front-End-IP-Adresse: Wählen Sie die Front-End-IP-Adresse aus.
- Back-End-Pool: Wählen Sie den Back-End-Pool aus.
- Aktivieren Sie „Hochverfügbarkeitsports“.
- Protokoll: TCP
- Integritätstest: Erstellen Sie einen Integritätstest mit den folgenden Details (gilt für NW1 und NW2)
- Protokoll: TCP
- Port: [z. B.: 61000 für NW1, 61001 für NW2]
- Intervall: 5
- Schwellenwert für Integritätstest: 2
- Leerlauftimeout (Minuten): 30
- Aktivieren Sie „Floating IP aktivieren“.
Hinweis
Die Konfigurationseigenschaft „numberOfProbes“ für Integritätstests (im Portal als „Fehlerschwellenwert“ bezeichnet) wird nicht berücksichtigt. Um also die Anzahl erfolgreicher oder nicht erfolgreicher aufeinanderfolgender Integritätstests zu steuern, legen Sie die Eigenschaft „probeThreshold“ auf „2“ fest. Es ist derzeit nicht möglich, diese Eigenschaft über das Azure-Portal festzulegen. Verwenden Sie daher entweder den Befehl für die Azure CLI oder den Befehl für PowerShell.
Hinweis
Wenn virtuelle Computer ohne öffentliche IP-Adressen im Back-End-Pool einer internen Azure Load Balancer Standard-Instanz (ohne öffentliche IP-Adresse) platziert werden, liegt keine ausgehende Internetverbindung vor, sofern nicht in einer zusätzlichen Konfiguration das Routing an öffentliche Endpunkte zugelassen wird. Ausführliche Informationen zum Erreichen ausgehender Konnektivität finden Sie unter Public endpoint connectivity for Virtual Machines using Azure Standard Load Balancer in SAP high-availability scenarios (Konnektivität mit öffentlichen Endpunkten für virtuelle Computer mithilfe von Azure Load Balancer Standard in SAP-Szenarien mit Hochverfügbarkeit).
Wichtig
- Aktivieren Sie keine TCP-Zeitstempel auf Azure-VMs, die sich hinter Azure Load Balancer befinden. Das Aktivieren von TCP-Zeitstempeln bewirkt, dass bei Integritätstests Fehler auftreten. Setzen Sie den
net.ipv4.tcp_timestamps
-Parameter auf0
. Ausführliche Informationen finden Sie unter Load Balancer-Integritätstests. - Um zu verhindern, dass saptune den manuell festgelegten
net.ipv4.tcp_timestamps
-Wert von0
wieder in1
ändert, sollten Sie die saptune-Version auf Version 3.1.1 oder höher updaten. Weitere Informationen finden Sie unter saptune 3.1.1: Muss ich ein Update durchführen?.
Erstellen des Pacemaker-Clusters
Führen Sie die Schritte unter Einrichten von Pacemaker unter SUSE Linux Enterprise Server in Azure zum Erstellen eines grundlegenden Pacemaker-Clusters für den NFS-Server aus.
Konfigurieren des NFS-Servers
Die folgenden Elemente sind mit einem der folgenden Präfixe versehen: [A] – gilt für alle Knoten, [1] – gilt nur für Knoten 1, oder [2] – gilt nur für Knoten 2.
[A] Richten Sie die Hostnamensauflösung ein.
Sie können entweder einen DNS-Server verwenden oder „/etc/hosts“ auf allen Knoten ändern. In diesem Beispiel wird die Verwendung der /etc/hosts-Datei veranschaulicht. Ersetzen Sie die IP-Adresse und den Hostnamen in den folgenden Befehlen.
sudo vi /etc/hosts
Fügen Sie „/etc/hosts“ die folgenden Zeilen hinzu. Ändern Sie die IP-Adresse und den Hostnamen Ihrer Umgebung entsprechend.
# IP address of the load balancer frontend configuration for NFS 10.0.0.4 nw1-nfs 10.0.0.5 nw2-nfs
[A] Aktivieren Sie den NFS-Server.
Erstellen des Eintrags für den Stammeintrag für den NFS-Export
sudo sh -c 'echo /srv/nfs/ *\(rw,no_root_squash,fsid=0\)>/etc/exports' sudo mkdir /srv/nfs/
[A] Installieren Sie DRBD-Komponenten.
sudo zypper install drbd drbd-kmp-default drbd-utils
[A] Erstellen Sie eine Partition für die DRBD-Geräte.
Listen Sie alle verfügbaren Datenträger auf.
sudo ls /dev/disk/azure/scsi1/ # Example output # lun0 lun1
Erstellen Sie Partitionen für alle Datenträger.
sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun0' sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun1'
[A] Erstellen Sie LVM-Konfigurationen.
Listen Sie alle verfügbaren Partitionen auf.
ls /dev/disk/azure/scsi1/lun*-part* # Example output # /dev/disk/azure/scsi1/lun0-part1 /dev/disk/azure/scsi1/lun1-part1
Erstellen Sie LVM-Volumes für alle Partitionen.
sudo pvcreate /dev/disk/azure/scsi1/lun0-part1 sudo vgcreate vg-NW1-NFS /dev/disk/azure/scsi1/lun0-part1 sudo lvcreate -l 100%FREE -n NW1 vg-NW1-NFS sudo pvcreate /dev/disk/azure/scsi1/lun1-part1 sudo vgcreate vg-NW2-NFS /dev/disk/azure/scsi1/lun1-part1 sudo lvcreate -l 100%FREE -n NW2 vg-NW2-NFS
[A] Konfigurieren Sie DRBD.
sudo vi /etc/drbd.conf
Stellen Sie sicher, dass die Datei „drbd.conf“ die folgenden beiden Zeilen enthält.
include "drbd.d/global_common.conf"; include "drbd.d/*.res";
Ändern Sie die globale DRBD-Konfiguration.
sudo vi /etc/drbd.d/global_common.conf
Fügen Sie die folgenden Einträge den Abschnitten „handler“ und „net“ hinzu.
global { usage-count no; } common { handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.9.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.9.sh"; split-brain "/usr/lib/drbd/notify-split-brain.sh root"; pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; } startup { wfc-timeout 0; } options { } disk { md-flushes yes; disk-flushes yes; c-plan-ahead 1; c-min-rate 100M; c-fill-target 20M; c-max-rate 4G; } net { after-sb-0pri discard-younger-primary; after-sb-1pri discard-secondary; after-sb-2pri call-pri-lost-after-sb; protocol C; tcp-cork yes; max-buffers 20000; max-epoch-size 20000; sndbuf-size 0; rcvbuf-size 0; } }
[A] Erstellen Sie die NFS-DRBD-Geräte.
sudo vi /etc/drbd.d/NW1-nfs.res
Fügen Sie die Konfiguration für das neue DRBD-Gerät ein, und beenden Sie es.
resource NW1-nfs { protocol C; disk { on-io-error detach; } net { fencing resource-and-stonith; } on prod-nfs-0 { address 10.0.0.6:7790; device /dev/drbd0; disk /dev/vg-NW1-NFS/NW1; meta-disk internal; } on prod-nfs-1 { address 10.0.0.7:7790; device /dev/drbd0; disk /dev/vg-NW1-NFS/NW1; meta-disk internal; } }
sudo vi /etc/drbd.d/NW2-nfs.res
Fügen Sie die Konfiguration für das neue DRBD-Gerät ein, und beenden Sie es.
resource NW2-nfs { protocol C; disk { on-io-error detach; } net { fencing resource-and-stonith; } on prod-nfs-0 { address 10.0.0.6:7791; device /dev/drbd1; disk /dev/vg-NW2-NFS/NW2; meta-disk internal; } on prod-nfs-1 { address 10.0.0.7:7791; device /dev/drbd1; disk /dev/vg-NW2-NFS/NW2; meta-disk internal; } }
Erstellen Sie das DRBD-Gerät, und starten Sie es.
sudo drbdadm create-md NW1-nfs sudo drbdadm create-md NW2-nfs sudo drbdadm up NW1-nfs sudo drbdadm up NW2-nfs
[1] Überspringen Sie die Erstsynchronisierung.
sudo drbdadm new-current-uuid --clear-bitmap NW1-nfs sudo drbdadm new-current-uuid --clear-bitmap NW2-nfs
[1] Legen Sie den primären Knoten fest.
sudo drbdadm primary --force NW1-nfs sudo drbdadm primary --force NW2-nfs
[1] Warten Sie, bis die neuen DRBD-Geräte synchronisiert sind.
sudo drbdsetup wait-sync-resource NW1-nfs sudo drbdsetup wait-sync-resource NW2-nfs
[1] Erstellen Sie Dateisysteme auf den DRBD-Geräten.
sudo mkfs.xfs /dev/drbd0 sudo mkdir /srv/nfs/NW1 sudo chattr +i /srv/nfs/NW1 sudo mount -t xfs /dev/drbd0 /srv/nfs/NW1 sudo mkdir /srv/nfs/NW1/sidsys sudo mkdir /srv/nfs/NW1/sapmntsid sudo mkdir /srv/nfs/NW1/trans sudo mkdir /srv/nfs/NW1/ASCS sudo mkdir /srv/nfs/NW1/ASCSERS sudo mkdir /srv/nfs/NW1/SCS sudo mkdir /srv/nfs/NW1/SCSERS sudo umount /srv/nfs/NW1 sudo mkfs.xfs /dev/drbd1 sudo mkdir /srv/nfs/NW2 sudo chattr +i /srv/nfs/NW2 sudo mount -t xfs /dev/drbd1 /srv/nfs/NW2 sudo mkdir /srv/nfs/NW2/sidsys sudo mkdir /srv/nfs/NW2/sapmntsid sudo mkdir /srv/nfs/NW2/trans sudo mkdir /srv/nfs/NW2/ASCS sudo mkdir /srv/nfs/NW2/ASCSERS sudo mkdir /srv/nfs/NW2/SCS sudo mkdir /srv/nfs/NW2/SCSERS sudo umount /srv/nfs/NW2
[A] Richten Sie die DRBD-Split Brain-Erkennung ein.
Bei Verwendung von DRBD zum Synchronisieren von Daten zwischen verschiedenen Hosts kann ein sogenanntes Split Brain-Syndrom auftreten. Ein Split Brain-Syndrom ist ein Szenario, bei dem beide Clusterknoten das DRBD-Gerät als primäres Gerät höher gestuft haben und nicht mehr synchronisiert sind. Dies ist wohl ein selten auftretender Fall, dennoch sollte ein Split Brain-Problem schnellstmöglich behandelt und behoben werden. Es ist daher wichtig, dass bei einem aufgetretenen Split Brain-Problem eine Benachrichtigung erfolgt.
Informationen zum Einrichten einer Benachrichtigung zu einem Split Brain-Problem finden Sie in der offiziellen DRBD-Dokumentation.
Es ist zudem möglich, eine automatische Wiederherstellung nach einem Split Brain-Szenario durchzuführen. Weitere Informationen finden Sie unter Automatic split brain recovery policies (Richtlinien zur automatischen Split Brain-Wiederherstellung).
Konfigurieren des Clusterframeworks
[1] Fügen Sie der Clusterkonfiguration die NFS-DRBD-Geräte für das SAP-System NW1 hinzu.
Wichtig
Kürzlich durchgeführte Tests haben Situationen aufgezeigt, in denen netcat aufgrund von Backlog und der Einschränkung, nur eine Verbindung zu verarbeiten, nicht mehr auf Anforderungen reagiert. Die netcat-Ressource lauscht dann nicht mehr auf Azure Load Balancer-Anforderungen, und die Floating IP-Adresse ist nicht mehr verfügbar.
Für vorhandene Pacemaker-Cluster wurde zuvor empfohlen, netcat durch socat zu ersetzen. Zurzeit wird empfohlen, den Ressourcen-Agent azure-lb zu verwenden, der Teil des Pakets resource-agents ist. Dabei gelten die folgenden Versionsanforderungen für das Paket:- Für SLES 12 SP4/SP5 muss die Version mindestens resource-agents-4.3.018.a7fb5035-3.30.1 sein.
- Für SLES 15/15 SP1 muss die Version mindestens resource-agents-4.3.0184.6ee15eb2-4.13.1 sein.
Beachten Sie, dass für die Änderung eine kurze Ausfallzeit erforderlich ist.
Wenn die Konfiguration bei vorhandenen Pacemaker-Clustern bereits für die Verwendung von socat geändert wurde, wie unter Azure Load Balancer-Erkennungshärtung beschrieben, müssen Sie nicht sofort zum Ressourcen-Agent azure-lb wechseln.sudo crm configure rsc_defaults resource-stickiness="200" # Enable maintenance mode sudo crm configure property maintenance-mode=true sudo crm configure primitive drbd_NW1_nfs \ ocf:linbit:drbd \ params drbd_resource="NW1-nfs" \ op monitor interval="15" role="Master" \ op monitor interval="30" role="Slave" sudo crm configure ms ms-drbd_NW1_nfs drbd_NW1_nfs \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" interleave="true" sudo crm configure primitive fs_NW1_sapmnt \ ocf:heartbeat:Filesystem \ params device=/dev/drbd0 \ directory=/srv/nfs/NW1 \ fstype=xfs \ op monitor interval="10s" sudo crm configure primitive nfsserver systemd:nfs-server \ op monitor interval="30s" sudo crm configure clone cl-nfsserver nfsserver sudo crm configure primitive exportfs_NW1 \ ocf:heartbeat:exportfs \ params directory="/srv/nfs/NW1" \ options="rw,no_root_squash,crossmnt" clientspec="*" fsid=1 wait_for_leasetime_on_stop=true op monitor interval="30s" sudo crm configure primitive vip_NW1_nfs IPaddr2 \ params ip=10.0.0.4 op monitor interval=10 timeout=20 sudo crm configure primitive nc_NW1_nfs azure-lb port=61000 \ op monitor timeout=20s interval=10 sudo crm configure group g-NW1_nfs \ fs_NW1_sapmnt exportfs_NW1 nc_NW1_nfs vip_NW1_nfs sudo crm configure order o-NW1_drbd_before_nfs inf: \ ms-drbd_NW1_nfs:promote g-NW1_nfs:start sudo crm configure colocation col-NW1_nfs_on_drbd inf: \ g-NW1_nfs ms-drbd_NW1_nfs:Master
[1] Fügen Sie der Clusterkonfiguration die NFS-DRBD-Geräte für das SAP-System NW2 hinzu.
# Enable maintenance mode sudo crm configure property maintenance-mode=true sudo crm configure primitive drbd_NW2_nfs \ ocf:linbit:drbd \ params drbd_resource="NW2-nfs" \ op monitor interval="15" role="Master" \ op monitor interval="30" role="Slave" sudo crm configure ms ms-drbd_NW2_nfs drbd_NW2_nfs \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" interleave="true" sudo crm configure primitive fs_NW2_sapmnt \ ocf:heartbeat:Filesystem \ params device=/dev/drbd1 \ directory=/srv/nfs/NW2 \ fstype=xfs \ op monitor interval="10s" sudo crm configure primitive exportfs_NW2 \ ocf:heartbeat:exportfs \ params directory="/srv/nfs/NW2" \ options="rw,no_root_squash,crossmnt" clientspec="*" fsid=2 wait_for_leasetime_on_stop=true op monitor interval="30s" sudo crm configure primitive vip_NW2_nfs IPaddr2 \ params ip=10.0.0.5 op monitor interval=10 timeout=20 sudo crm configure primitive nc_NW2_nfs azure-lb port=61001 \ op monitor timeout=20s interval=10 sudo crm configure group g-NW2_nfs \ fs_NW2_sapmnt exportfs_NW2 nc_NW2_nfs vip_NW2_nfs sudo crm configure order o-NW2_drbd_before_nfs inf: \ ms-drbd_NW2_nfs:promote g-NW2_nfs:start sudo crm configure colocation col-NW2_nfs_on_drbd inf: \ g-NW2_nfs ms-drbd_NW2_nfs:Master
Die
crossmnt
-Option in denexportfs
-Clusterressourcen ist in unserer Dokumentation für die Abwärtskompatibilität mit älteren SLES-Versionen enthalten.[1] Deaktivieren Sie den Wartungsmodus.
sudo crm configure property maintenance-mode=false
Nächste Schritte
- Installieren der SAP ASCS-Instanz und der SAP-Datenbank
- Azure Virtual Machines – Planung und Implementierung für SAP
- Azure Virtual Machines – Bereitstellung für SAP
- Azure Virtual Machines – DBMS-Bereitstellung für SAP
- Informationen zur Erzielung von Hochverfügbarkeit und zur Planung der Notfallwiederherstellung für SAP HANA auf Azure-VMs finden Sie unter Hochverfügbarkeit für SAP HANA auf Azure Virtual Machines (VMs).