Grundlagen zur SQL Server-Verfügbarkeit für Linux-Bereitstellungen

Gilt für:SQL Server – Linux

Ab SQL Server 2017 (14.x) wird SQL Server sowohl unter Linux als auch Windows unterstützt. Ebenso wie bei Windows-basierten SQL Server-Bereitstellungen müssen auch SQL Server-Datenbanken und -Instanzen unter Linux hochverfügbar sein. In diesem Artikel werden die technischen Aspekte der Planung und Bereitstellung von hochverfügbaren Linux-basierten SQL Server-Datenbanken und -Instanzen sowie einige Unterschiede zu Windows-basierten Installationen beschrieben. Da Linux-Experten möglicherweise noch nicht mit SQL Server vertraut sind und sich SQL Server-Experten unter Umständen noch nie mit Linux befasst haben, werden in diesem Artikel an einigen Stellen Konzepte vorgestellt, die für die ein oder andere Zielgruppe neu sind.

SQL Server-Verfügbarkeitsoptionen für Linux-Bereitstellungen

Neben der Sicherung und Wiederherstellung sind die folgenden drei Features sowohl für Linux als auch für Windows-basierte Bereitstellungen verfügbar:

Unter Windows ist für Failoverclusterinstanzen immer ein Windows Server-Failovercluster (WSFC) erforderlich. Abhängig vom Bereitstellungsszenario ist für eine Verfügbarkeitsgruppe in der Regel ein WSFC notwendig. Eine Ausnahme bildet die neue Variante „None“ (Keine) in SQL Server 2017 (14.x). Unter Linux gibt es keinen WSFC. Die Clusteringimplementierung in Linux wird unter Pacemaker für Verfügbarkeitsgruppen und Failoverclusterinstanzen unter Linux erläutert.

Linux-Grundlagen

Für die meisten Linux-Installationen wird keine Benutzeroberfläche verwendet. Auf der Betriebssystemebene wird also für fast alle Aufgaben die Befehlszeile genutzt. Diese wird unter Linux in der Regel als Bash bezeichnet.

Unter Windows Server müssen viele Vorgänge als Administrator ausgeführt werden. Analog dazu sind unter Linux für viele Befehle erhöhte Rechte erforderlich. Üblicherweise nutzen Sie eine der folgenden Möglichkeiten, Befehle mit erhöhten Rechten auszuführen:

  1. Sie wechseln zu einem Benutzer mit den notwendigen Berechtigungen und führen anschließend den Befehl aus. Mit dem Befehl su können Sie zu einem anderen Benutzer wechseln. Wenn Sie su ohne einen Benutzernamen ausführen und anschließend das Kennwort eingeben, haben Sie in der Shell Rootberechtigungen.

  2. Üblicher und sicherer ist es aber, zuerst sudo auszuführen. In vielen Beispielen in diesem Artikel wird sudo verwendet.

In der folgenden Liste sind einige gängige Befehle aufgeführt. Für diese sind jeweils unterschiedliche Optionen und Parameter verfügbar, die Sie online recherchieren können:

  • cd: Verzeichnis ändern.
  • chmod: Berechtigungen einer Datei oder eines Verzeichnisses ändern.
  • chown: Anderen Besitzer für eine Datei oder für ein Verzeichnis festlegen.
  • ls: Inhalt eines Verzeichnisses anzeigen.
  • mkdir: Ordner (Verzeichnis) auf einem Laufwerk erstellen.
  • mv: Datei von einem Speicherort zu einem anderen verschieben.
  • ps: Alle Arbeitsprozesse anzeigen.
  • rm: Datei lokal auf einem Server löschen.
  • rmdir: Ordner (Verzeichnis) löschen.
  • systemctl: Dienste starten, stoppen oder aktivieren.
  • Text-Editor-Befehle. Unter Linux gibt es verschiedene Text-Editoren, z. B. vi und emacs.

Übliche Aufgaben bei Verfügbarkeitskonfigurationen von SQL Server unter Linux

In diesem Abschnitt werden Aufgaben beschrieben, die für alle Linux-basierten SQL Server-Bereitstellungen üblicherweise anfallen.

Sicherstellen, dass Dateien kopiert werden können

Jeder SQL Server-Benutzer unter Linux sollte in der Lage sein, Dateien eines Servers auf einen anderen Server zu kopieren. Diese Aufgabe ist für die Konfiguration von Verfügbarkeitsgruppen sehr wichtig.

Unter Linux und bei Windows-basierten Installationen können beispielsweise Probleme mit Berechtigungen auftreten. Wenn Windows-Benutzer Dateien von einem Server auf den anderen kopieren können, bedeutet das jedoch nicht, dass sie diese Aufgabe auch unter Linux durchführen können. Oft wird das Befehlszeilen-Hilfsprogramm scp (Secure Copy, sicheres Kopieren) verwendet. Im Hintergrund verwendet scp OpenSSH (Secure Shell). Abhängig von der Linux-Distribution ist OpenSSH möglicherweise nicht installiert. In diesem Fall muss OpenSSH zuerst installiert werden. Weitere Informationen zum Konfigurieren von OpenSSH finden Sie unter den folgenden Links für verschiedene Distributionen:

Wenn Sie scp verwenden, müssen Sie die Anmeldeinformationen des Servers angeben, wenn es sich nicht um die Quelle oder das Ziel handelt. Beispiel:

scp MyAGCert.cer username@servername:/folder/subfolder

Mit diesem Befehl wird die Datei „MyAGCert.cer“ in den angegebenen Ordner kopiert, der sich auf einem anderen Server befindet. Sie müssen über die notwendigen Berechtigungen verfügen und möglicherweise Besitzer der Datei sein, um sie zu kopieren. Unter Umständen müssen Sie deswegen zuerst chown ausführen. Auch auf dem Zielserver muss der richtige Benutzer auf die Datei zugreifen können, um sie zu ändern. Wenn der mssql-Benutzer beispielsweise die Zertifikatdatei wiederherstellen möchte, muss er auf sie zugreifen können.

Auch mit Samba, der Linux-Variante von Server Message Block (SMB), können Freigaben erstellt werden, auf die über UNC-Pfade wie \\SERVERNAME\SHARE zugegriffen werden kann. Weitere Informationen zum Konfigurieren von Samba finden Sie unter den folgenden Links für verschiedene Distributionen:

Sie können auch SMB-Freigaben verwenden, die auf Windows statt Linux basieren. Die Voraussetzungen dafür sind, dass der Samba-Client auf dem Linux-Server richtig konfiguriert ist, der SQL Server hostet, und dass die Freigabe über die richtigen Zugriffsberechtigungen verfügt. In einer Umgebung mit mehreren Betriebssystemen kann so beispielsweise eine vorhandene Infrastruktur für Linux-basierte SQL Server-Bereitstellungen verwendet werden.

Wichtig ist, dass die bereitgestellte Samba-Version mit SMB 3.0 kompatibel sein sollte. Seit der Einführung der SMB-Unterstützung in SQL Server 2012 (11.x) müssen alle Freigaben SMB 3.0 unterstützen. Wenn Sie für die Freigabe Samba statt Windows Server verwenden, sollte die Samba-basierte Freigabe mindestens Samba 4.0 verwenden. Idealerweise sollte jedoch die Version 4.3 oder höher eingesetzt werden, da diese SMB 3.1.1 unterstützt. Viele hilfreiche Informationen zu SMB und Linux finden Sie unter SMB3 in Samba (SMB 3.0 für Samba).

Eine weitere Option ist eine NFS-Freigabe (Network File System). Diese kann allerdings nur für Linux-basierte, nicht aber für Windows-basierte Bereitstellungen von SQL Server verwendet werden.

Konfigurieren der Firewall

Linux-Distributionen verfügen ähnlich wie Windows über eine integrierte Firewall. Wenn Ihr Unternehmen eine externe Firewall für Server verwendet, ist es möglicherweise akzeptabel, die Linux-Firewall zu deaktivieren. Unabhängig davon, welche Firewall wo aktiviert wird, müssen bestimmte Ports geöffnet werden. In der folgenden Tabelle werden die Ports aufgeführt, die üblicherweise für hochverfügbare SQL Server-Bereitstellungen unter Linux erforderlich sind.

Portnummer type BESCHREIBUNG
111 TCP/UDP NFS: rpcbind/sunrpc
135 TCP Samba (falls verwendet): Endpunktzuordnung
137 UDP Samba (falls verwendet): NetBIOS-Namensdienst
138 UDP Samba (falls verwendet): NetBIOS-Datagramm
139 TCP Samba (falls verwendet): NetBIOS-Sitzung
445 TCP Samba (falls verwendet): SMB über TCP
1433 TCP SQL Server: Standardport; kann bei Bedarf mit mssql-conf set network.tcpport <portnumber> geändert werden
2049 TCP, UDP NFS (falls verwendet)
2224 TCP Pacemaker: wird von pcsd verwendet
3121 TCP Pacemaker: erforderlich, wenn Pacemaker Remote-Knoten vorhanden sind
3260 TCP iSCSI-Initiator (falls verwendet): kann in /etc/iscsi/iscsid.config geändert werden (RHEL); der Port sollte jedoch mit dem des iSCSI-Ziels übereinstimmen
5022 TCP SQL Server: Standardport für den Endpunkt einer Verfügbarkeitsgruppe; kann bei der Erstellung des Endpunkts geändert werden
5403 TCP Pacemaker
5404 UDP Pacemaker: für Corosync erforderlich, wenn Multicast-UDP verwendet wird
5405 UDP Pacemaker: für Corosync erforderlich
21064 TCP Pacemaker: für Ressourcen erforderlich, die DLM verwenden
Variable TCP Endpunktport der Verfügbarkeitsgruppe; der Standardport ist 5022
Variable TCP NFS: Port für LOCKD_TCPPORT (befindet sich unter RHEL in /etc/sysconfig/nfs)
Variable UDP NFS: Port für LOCKD_UDPPORT (befindet sich unter RHEL in /etc/sysconfig/nfs)
Variable TCP/UDP NFS: Port für MOUNTD_PORT (befindet sich unter RHEL in /etc/sysconfig/nfs)
Variable TCP/UDP NFS: Port für STATD_PORT (befindet sich unter RHEL in /etc/sysconfig/nfs)

Weitere Ports, die von Samba genutzt werden können, finden Sie unter Samba Port Usage (Verwendung von Samba-Ports).

Umgekehrt kann unter Linux anstelle des Ports auch der Name des Diensts als Ausnahme hinzugefügt werden (beispielsweise high-availability für Pacemaker). Wenn Sie diese Möglichkeit nutzen möchten, müssen Sie die Dienstnamen Ihrer Distribution verwenden. Unter RHEL können Sie beispielsweise mit dem folgenden Befehl eine Ausnahme in Pacemaker hinzufügen:

sudo firewall-cmd --permanent --add-service=high-availability

Firewalldokumentation

Installieren von SQL Server-Verfügbarkeitspaketen

Bei einer einfachen Windows-basierten Installation von SQL Server werden neben der Engine noch einige zusätzliche Komponenten installiert. Unter Linux wird hingegen nur die SQL Server-Engine installiert. Weitere Komponenten sind optional. Für hochverfügbare SQL Server-Instanzen unter Linux sollten zwei Pakete mit SQL Server installiert werden:

  • SQL Server-Agent (mssql-server-agent)
  • Hochverfügbarkeitspaket (mssql-server-ha)

Der SQL Server-Agent ist prinzipiell optional. Da er jedoch der SQL Server-Auftragsplaner ist und für den Protokollversand benötigt wird, sollte er installiert werden.

Ab SQL Server 2017 (14.x) mit CU 4 und höheren Versionen ist der SQL Server-Agent im Datenbank-Engine-Paket enthalten, Sie müssen es aber dennoch aktivieren. Bei Windows-basierten Installationen ist der SQL Server-Agent nicht optional.

Hinweis

SQL Server-Benutzer ohne Vorwissen sollten den SQL Server-Agent kennen, da er der integrierte Auftragsplaner von SQL Server ist. Datenbankadministratoren führen mit ihm häufig Sicherungen und andere SQL Server-Wartungsaufgaben durch. Während bei einer Windows-basierten Installation von SQL Server der SQL Server-Agent ein eigener Dienst ist, wird der SQL Server-Agent unter Linux im Kontext von SQL Server selbst ausgeführt.

Wenn eine Windows-basierte Konfiguration für Verfügbarkeitsgruppen oder Failoverclusterinstanzen verwendet wird, sind diese clusterfähig. Das bedeutet, dass SQL Server über bestimmte Ressourcen-DLLs verfügt, die einem WSFC bekannt sind (sqagtres.dll und sqsrvres.dll für Failoverclusterinstanzen, hadrres.dll für Verfügbarkeitsgruppen) und von diesem verwendet werden, um die Clusterfunktionen von SQL Server fehlerfrei auszuführen. Da das Clustering sowohl außerhalb von SQL Server als auch von Linux selbst stattfindet, musste Microsoft das Äquivalent einer Ressourcen-DLL für Linux-basierte Bereitstellungen von Verfügbarkeitsgruppen und Failoverclusterinstanzen programmieren. Das Ergebnis ist das mssql-server-ha-Paket, das auch als SQL Server-Ressourcen-Agent für Pacemaker bekannt ist. Informationen zum Installieren des Pakets mssql-server-ha finden Sie unter Bereitstellen eines Pacemaker-Clusters für SQL Server für Linux.

Die anderen optionalen Pakete für SQL Server für Linux, für die SQL Server-Volltextsuche (mssql-server-fts) und für die SQL Server-Integration Services (mssql-server-is) sind nicht für Hochverfügbarkeit erforderlich, und zwar weder für Failoverclusterinstanzen noch für Verfügbarkeitsgruppen.

SQL Server: Partner für Hochverfügbarkeit und Notfallwiederherstellung

Es gibt eine große Auswahl an branchenführenden Tools, die die Komponenten „Hochverfügbarkeit“ und „Notfallwiederherstellung“ für Ihre SQL Server-Dienste bereitstellen. In diesem Abschnitt werden Partnerunternehmen von Microsoft aufgelistet, die Hochverfügbarkeits- und Notfallwiederherstellungslösungen für SQL Server anbieten.

Partner BESCHREIBUNG
DH2i DxEnterprise ist eine Smart Availability-Software für Windows, Linux und Docker, mit der Ihre geplanten und ungeplanten Ausfallzeiten nahezu bei null liegen und die Sie außerdem dabei unterstützt, hohe Kosteneinsparungen zu erzielen, die Verwaltung zu vereinfachen und Ihre physischen und logischen Komponenten zu konsolidieren.

- Bereitstellen einer Verfügbarkeitsgruppe mit DH2i für SQL Server-Container in AKS
- Tutorial: Einrichten einer Always On-Verfügbarkeitsgruppe mit drei Knoten mit DH2i DxEnterprise
HPE Serviceguard HPE SGLX A.12.20.00 und höher bietet kontextabhängige Überwachungs- und Wiederherstellungsoptionen für Failoverclusterinstanzen sowie Always On-Verfügbarkeitsgruppen. Maximieren Sie die Betriebszeit mit HPE SGLX, ohne die Datenintegrität und Leistung zu beeinträchtigen.

- Tutorial: Einrichten einer Always On-Verfügbarkeitsgruppe mit drei Knoten mit HPE Serviceguard für Linux
Pacemaker Pacemaker ist ein Open Source-Ressourcen-Manager für Hochverfügbarkeitscluster. Mit Corosync, einem Open Source-System für die Gruppenkommunikation, kann Pacemaker Komponentenfehler erkennen und die erforderlichen Failoverprozeduren orchestrieren, um Unterbrechungen bei Anwendungen zu minimieren.

- Pacemaker für Verfügbarkeitsgruppen und Failoverclusterinstanzen unter Linux
- Bereitstellen eines Pacemaker-Clusters für SQL Server für Linux