Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server unter Linux
In diesem Artikel wird erläutert, wie Sie eine SQL Server-Failoverclusterinstanz (FCI) unter Linux ausführen. Zum Erstellen einer SQL Server-FCI unter Linux lesen Sie Failoverclusterinstanz unter Linux (RHEL) konfigurieren.
Beschreibung der Architektur
Die Clustering-Schicht basiert auf dem Red Hat Enterprise Linux (RHEL) HA-Add-on, das auf Pacemaker basiert. Corosync und Pacemaker koordinieren die Clusterkommunikation und die Ressourcenverwaltung. Die SQL Server-Instanz ist jeweils auf einem Knoten aktiv.
Das folgende Diagramm veranschaulicht die Komponenten in einem Linux-Cluster mit SQL Server.
Für weitere Informationen zur Clusterkonfiguration, Ressourcenagentenoptionen und Verwaltung besuchen Sie die RHEL-Referenzdokumentation.
Failover
Failover für FCIs ähnelt einem Windows Server-Failovercluster (WSFC). Tritt auf dem Clusterknoten, der als Host für die FCI fungiert, ein Fehler auf, sollte die FCI automatisch einen Failover zu einem anderen Knoten ausführen. Anders als bei einem WSFC gibt es keine Möglichkeit, bevorzugte Besitzer festzulegen. Daher wählt Pacemaker den Knoten aus, der als neuer Host für die FCI fungieren soll.
Manchmal möchten Sie möglicherweise ein manuelles Failover der FCI auf einen anderen Knoten durchführen. Der Prozess ist nicht derselbe wie bei FCIs in einem WSFC. In einem WSFC führen Sie ein Failover für Ressourcen auf Rollenebene aus. Im Pacemaker wählt man eine Ressource aus, die man bewegt, und wenn alle Einschränkungen stimmen, bewegt sich auch alles andere.
Die Vorgehensweise für das Failover hängt von der Linux-Distribution ab. Befolge die Anweisungen für deine Linux-Distribution.
Manuelles Failover (RHEL oder Ubuntu)
Führen Sie für ein manuelles Failover auf einem RHEL- (Red Hat Enterprise Linux) oder Ubuntu-Server die folgenden Schritte aus.
Führen Sie den folgenden Befehl aus:
sudo pcs resource move <FCIResourceName> <NewHostNode><FCIResourceName>ist der Name der Pacemaker-Ressource für das SQL Server FCI und<NewHostNode>der Name des Cluster-Knotens, den Sie als FCI hosten möchten.Während eines manuellen Failovers erstellt Pacemaker eine Speicherorteinschränkung für die Ressource, die zur manuellen Verschiebung ausgewählt wurde. Führen Sie
sudo pcs constraintaus, um diese Einschränkung anzuzeigen.Nach Abschluss des Failovers entfernen Sie die Einschränkung:
sudo pcs resource clear <FCIResourceName>
Manuelles Failover (SLES)
Note
Ab SQL Server 2025 (17.x) wird SUSE Linux Enterprise Server (SLES) nicht unterstützt. Für SQL Server 2022 (16.x) und frühere Versionen wird nur SLES 15 unterstützt.
Verwenden Sie in SUSE Linux Enterprise Server (SLES) den migrate-Befehl, um ein manuelles Failover für eine SQL Server-FCI durchzuführen. Beispiel:
crm resource migrate <FCIResourceName> <NewHostNode>
<FCIResourceName> ist der Ressourcenname für die Failover-Cluster-Instanz und <NewHostNode> der Name des neuen Zielhosts.
Überwachen Sie einen Failover-Cluster
Anzeigen des aktuellen Clusterstatus:
sudo pcs status
Sehen Sie sich den Live-Status des Clusters und der Ressourcen an:
sudo crm_mon
Sehen Sie sich die Resource Agent-Logs unter /var/log/cluster/corosync.log.
Hinzufügen eines Knotens zu einem Cluster
Überprüfen Sie die IP-Adresse jedes Knotens. Das folgende Skript zeigt die IP-Adresse des aktuellen Knotens an.
ip addr showDer neue Knoten benötigt einen einzigartigen Namen, der 15 Zeichen oder weniger umfasst. Legen Sie den Computernamen fest, indem Sie diesen zu
/etc/hostshinzufügen. Mithilfe des folgenden Skripts können Sie/etc/hostsmitvibearbeiten.sudo vi /etc/hostsDas folgende Beispiel zeigt
/etc/hostsmit Ergänzungen für drei Knoten mit den Namensqlfcivm1,sqlfcivm2undsqlfcivm3.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2 10.128.14.26 sqlfcivm3Die Datei sollte auf jedem Knoten dieselbe sein.
Beenden Sie den SQL Server-Dienst auf dem neuen Knoten.
Befolgen Sie die Anweisungen, um das Datenbankverzeichnis an den gemeinsamen Speicherort einzubinden.
Vom NFS-Server aus installieren Sie
nfs-utils:sudo yum -y install nfs-utilsÖffnen Sie die Firewall auf Clients und NFS-Server:
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reloadBearbeiten Sie die Datei
/etc/fstabso, dass sie den Einbindungsbefehl enthält:<IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intrFühren Sie
mount -aaus, damit die Änderungen wirksam werden.Erstellen Sie auf dem neuen Knoten eine Datei zum Speichern von Benutzername und Kennwort für SQL Server für die Pacemaker-Anmeldung. Der folgende Code erstellt und füllt diese Tabelle:
sudo touch /var/opt/mssql/secrets/passwd echo "<loginName>" | sudo tee -a /var/opt/mssql/secrets/passwd echo "<password>" | sudo tee -a /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdCaution
Ihr Kennwort sollte der standardmäßigen Kennwortrichtlinie von SQL Server folgen. Standardmäßig muss das Kennwort mindestens acht Zeichen lang sein und Zeichen aus drei der folgenden vier Sätze enthalten: Großbuchstaben, Kleinbuchstaben, Basis-10 Ziffern und Symbole. Kennwörter können bis zu 128 Zeichen lang sein. Verwenden Sie möglichst lange und komplexe Kennwörter.
Öffnen Sie auf dem neuen Knoten die Pacemaker-Firewallports. Führen Sie zum Öffnen dieser Ports mit
firewalldfolgenden Befehl aus:sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reloadWenn Sie eine andere Firewall verwenden, die keine integrierte High-Availability-Konfiguration hat, öffnen Sie die folgenden Ports, damit Pacemaker mit anderen Knoten im Cluster kommunizieren kann:
- TCP: Ports 2224, 3121, 21064
- UDP: Port 5405
Installieren Sie Pacemaker-Pakete auf dem neuen Knoten.
sudo yum install pacemaker pcs fence-agents-all resource-agentsLegen Sie das Kennwort für den Standardbenutzer fest, der beim Installieren von Pacemaker und Corosync-Paketen erstellt wird. Verwenden Sie dasselbe Kennwort wie bei den vorhandenen Knoten.
sudo passwd haclusterAktivieren und starten Sie den
pcsd-Dienst und Pacemaker. Der neue Knoten kann nach einem Neustart wieder dem Cluster beitreten. Führen Sie den folgenden Befehl auf dem neuen Knoten aus.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemakerInstallieren Sie den FCI-Ressourcenagent für SQL Server. Führen Sie den folgenden Befehl auf dem neuen Knoten aus.
sudo yum install mssql-server-haAuf einem bestehenden Knoten im Cluster authentifizieren Sie den neuen Knoten und fügen Sie ihn dem Cluster hinzu:
sudo pcs cluster auth <nodeName3> -u hacluster sudo pcs cluster node add <nodeName3>
Entfernen von Knoten aus einem Cluster
Führen Sie den folgenden Befehl aus, um einen Knoten aus einem Cluster zu entfernen:
sudo pcs cluster node remove <nodeName>
Ändern Sie die Frequenz der Ressourcenüberwachung
sudo pcs resource op monitor interval=<interval>s <sqlResourceName>
Das folgende Beispiel setzt das Überwachungsintervall für die Ressource mssqlha auf 2 Sekunden:
sudo pcs resource op monitor interval=2s mssqlha
Problembehandlung
Bei der Fehlersuche im Cluster ist es hilfreich zu verstehen, wie die drei Daemons bei der Verwaltung der Clusterressourcen zusammenarbeiten.
| Daemon | Description |
|---|---|
| Corosync | Stellt die Quorum-Mitgliedschaft und die Nachrichtenübermittlung zwischen Clusterknoten bereit. |
| Pacemaker | Baut auf Corosync auf und bietet Zustandsautomaten für Ressourcen |
| PCSD | Verwaltet Pacemaker und Corosync über die pcs-Tools. |
PCSD muss ausgeführt werden, damit die pcs-Tools verwendet werden können.
Aktueller Clusterstatus
sudo pcs status gibt grundlegende Informationen zu Cluster, Quorum, Knoten, Ressourcen und Daemonstatus für jeden Knoten zurück.
Das folgende Beispiel zeigt eine fehlerfreie Pacemaker-Quorum-Ausgabe:
Cluster name: MyAppSQL
Last updated: Wed Oct 31 12:00:00 2024 Last change: Wed Oct 31 11:00:00 2024 by root via crm_resource on sqlvmnode1
Stack: corosync
Current DC: sqlvmnode1 (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
3 nodes and 1 resource configured
Online: [ sqlvmnode1 sqlvmnode2 sqlvmnode3 ]
Full list of resources:
mssqlha (ocf::sql:fci): Started sqlvmnode1
PCSD Status:
sqlvmnode1: Online
sqlvmnode2: Online
sqlvmnode3: Online
Daemon Status:
corosync: active/disabled
pacemaker: active/enabled
In diesem Beispiel bedeutet das, partition with quorum dass die Mehrheit der Knoten online ist. Wenn der Cluster die Quorumsmehrheit der Knoten verliert, gibt pcs statuspartition WITHOUT quorum zurück, und alle Ressourcen werden gestoppt.
Online: [sqlvmnode1 sqlvmnode2 sqlvmnode3] gibt die Namen aller Knoten zurück, die aktuell am Cluster beteiligt sind. Wenn ein oder mehrere Knoten nicht beteiligt sind, gibt pcs statusOFFLINE: [<nodename>] zurück.
PCSD Status zeigt den Clusterstatus für jeden Knoten an.
Gründe, warum ein Knoten offline sein kann
Überprüfen Sie Folgendes, wenn ein Knoten offline ist:
Firewall
Öffnen Sie die folgenden Ports an allen Knoten, damit der Pacemaker kommunizieren kann:
- TCP: Ports 2224, 3121, 21064
- UDP: Port 5405
Pacemaker- oder Corosync-Dienste laufen
Knotenkommunikation
Zuordnungen von Knotennamen