Anmerkung
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
Eine SQL Server-Failoverclusterinstanz mit zwei Knoten auf einem freigegebenen Datenträger bietet Redundanz für Hochverfügbarkeit auf Serverebene. In diesem Tutorial lernen Sie, wie Sie eine Failoverclusterinstanz von SQL Server für Linux mit zwei Knoten erstellen. Sie führen dabei die folgenden Schritte durch:
- Einrichten und Konfigurieren von Linux
- Installieren und Konfigurieren von SQL Server
- Konfigurieren der Datei „hosts“
- Konfigurieren von freigegebenem Speicher und Verschieben der Datenbankdateien
- Installieren und Konfigurieren von Pacemaker auf jedem Clusterknoten
- Konfigurieren der Failoverclusterinstanz
In diesem Artikel wird beschrieben, wie Sie für SQL Server eine Failoverclusterinstanz mit zwei Knoten auf einem freigegebenen Datenträger erstellen. Der Artikel enthält Anweisungen und Skriptbeispiele für Red Hat Enterprise Linux (RHEL). Ubuntu-Verteilungen ähneln RHEL, sodass die Skriptbeispiele normalerweise auch unter Ubuntu funktionieren.
Konzeptionelle Informationen finden Sie unter Failoverclusterinstanzen – SQL Server für Linux.
Voraussetzungen
Für das folgende End-to-End-Szenario benötigen Sie zwei Computer, um den Cluster mit zwei Knoten und einen weiteren Server zum Speichern bereitzustellen. Die folgenden Schritte beschreiben, wie diese Server konfiguriert werden.
Einrichten und Konfigurieren von Linux
Der erste Schritt besteht darin, das Betriebssystem auf den Clusterknoten zu konfigurieren. Konfigurieren Sie auf jedem Knoten im Cluster eine Linux-Verteilung. Verwenden Sie auf beiden Knoten die gleiche Verteilung und Version. Verwenden Sie eine der folgenden Verteilungen:
- RHEL mit einem gültigen Abonnement für das Add-On für Hochverfügbarkeit
Installieren und Konfigurieren von SQL Server
Installieren Sie SQL Server auf beiden Knoten, und richten Sie ihn ein. Ausführliche Anweisungen finden Sie unter Leitfaden für die Installation von SQL Server unter Linux.
Legen Sie für die Konfiguration einen Knoten als primär und den anderen als sekundär fest. Verwenden Sie diese Begriffe für den weiteren Verlauf dieses Leitfadens.
Beenden und deaktivieren Sie SQL Server auf dem sekundären Knoten. Im folgenden Beispiel wird SQL Server beendet und deaktiviert:
sudo systemctl stop mssql-server sudo systemctl disable mssql-serverHinweis
Zum Zeitpunkt der Einrichtung wird ein Serverhauptschlüssel für die SQL Server-Instanz generiert und unter
var/opt/mssql/secrets/machine-keyplatziert. Unter Linux wird SQL Server immer als lokales Konto mit dem Namenmssqlausgeführt. Da es sich um ein lokales Konto handelt, wird dessen Identität nicht knotenübergreifend freigegeben. Daher müssen Sie den Verschlüsselungsschlüssel vom primären Knoten auf jeden sekundären Knoten kopieren, damit jedes lokalemssql-Konto darauf zugreifen kann, um den Serverhauptschlüssel zu entschlüsseln.Erstellen Sie auf dem primären Knoten eine SQL Server-Anmeldung für Pacemaker, und erteilen Sie dem Anmeldenamen die Berechtigung zum Ausführen von
sp_server_diagnostics. Pacemaker verwendet dieses Konto, um zu überprüfen, welcher Knoten auf SQL Server ausgeführt wird.sudo systemctl start mssql-serverStellen Sie mithilfe des
master-Kontos eine Verbindung mit dersa-Datenbank von SQL Server her, und führen Sie Folgendes aus:USE [master]; GO CREATE LOGIN [<loginName>] WITH PASSWORD = N'<password>'; ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>];Achtung
Ihr Kennwort sollte der standardmäßigen Kennwortrichtlinie von SQL Server folgen. Ein Standardkennwort enthält mindestens acht Zeichen, die aus drei der folgenden vier Kategorien stammen müssen: Großbuchstaben, Kleinbuchstaben, Grundzahlen (0–9) und Symbole. Kennwörter können bis zu 128 Zeichen lang sein. Verwenden Sie möglichst lange und komplexe Kennwörter.
Alternativ können Sie die Berechtigungen detaillierter festlegen. Der Pacemaker-Anmeldename benötigt
VIEW SERVER STATE, um mithilfe vonsp_server_diagnosticsden Integritätsstatus abzufragen, sowie setupadmin, und ALTER ANY LINKED SERVER, um den Namen der Failoverclusterinstanz mit dem Ressourcennamen zu aktualisieren, indemsp_dropserverundsp_addserverausgeführt werden.Beenden und deaktivieren Sie SQL Server auf dem primären Knoten.
Konfigurieren der Datei „hosts“
Konfigurieren Sie auf jedem Clusterknoten die Hostdatei. Die Hostdatei muss die IP-Adresse und den Namen jedes Clusterknotens enthalten.
Überprüfen Sie die IP-Adresse jedes Knotens. Das folgende Skript zeigt die IP-Adresse des aktuellen Knotens an.
sudo ip addr showLegen Sie den Computernamen auf jedem Knoten fest. Geben Sie jedem Knoten einen eindeutigen Namen, der höchstens 15 Zeichen lang ist. 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 zwei Knoten mit den Namensqlfcivm1undsqlfcivm2.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2
Konfigurieren von Speicher und Verschieben von Datenbankdateien
Sie müssen einen Speicher bereitstellen, auf den beide Knoten zugreifen können. Sie können iSCSI, NFS oder SMB verwenden. Konfigurieren Sie den Speicher, stellen Sie ihn für die Clusterknoten bereit, und verschieben Sie die Datenbankdateien dann in den neuen Speicher. In den folgenden Artikeln werden die Schritte für jeden Speichertyp erläutert:
- Configure failover cluster instance - iSCSI - SQL Server on Linux (Konfigurieren einer Failoverclusterinstanz (iSCSI): SQL Server für Linux)
- Configure failover cluster instance - NFS - SQL Server on Linux (Konfigurieren einer Failoverclusterinstanz (NFS): SQL Server für Linux)
- Konfigurieren eines SMB-Speichers für eine Failoverclusterinstanz: SQL Server für Linux
Installieren und Konfigurieren von Pacemaker auf jedem Clusterknoten
Erstellen Sie auf beiden Clusterknoten 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 sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd sudo echo '<loginPassword>' >> /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdÖffnen Sie auf beiden Clusterknoten 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, in die keine Konfiguration mit Hochverfügbarkeit integriert ist, müssen die folgenden Ports geöffnet werden, damit Pacemaker mit anderen Knoten im Cluster kommunizieren kann:
- TCP: Ports 2224, 3121, 21064
- UDP: Port 5405
Installieren Sie Pacemaker-Pakete auf jedem 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 auf beiden Knoten dasselbe Kennwort.
sudo passwd haclusterAktivieren und starten Sie den
pcsd-Dienst und Pacemaker. So können Knoten dem Cluster nach dem Neustart erneut beitreten. Führen Sie den folgenden Befehl auf beiden 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 die folgenden Befehle auf beiden Knoten aus.
sudo yum install mssql-server-ha
Konfigurieren der Failoverclusterinstanz
Die FCI wird in einer Ressourcengruppe erstellt. Dies ist ein bisschen einfacher, da durch die Ressourcengruppe weniger Einschränkungen nötig sind. Fügen Sie die Ressourcen der Ressourcengruppe jedoch in der Reihenfolge hinzu, in der sie gestartet werden sollen. Die Startreihenfolge sieht wie folgt aus:
- Speicherressource
- Netzwerkressource
- Anwendungsressource
In diesem Beispiel wird eine FCI in der Gruppe NewLinFCIGrp erstellt. Der Name der Ressourcengruppe muss für jede Ressource eindeutig sein, die in Pacemaker erstellt wurde.
Erstellen Sie die Datenträgerressource. Wenn kein Problem vorliegt, wird keine Antwort zurückgegeben. Die Art und Weise der Erstellung der Datenträgerressource hängt vom Speichertyp ab. Der folgende Abschnitt enthält Beispiele für jeden Speichertyp (iSCSI, NFS und SMB). Verwenden Sie das Beispiel, das für den Speichertyp für Ihren Clusterspeicher gilt.
sudo pcs resource create <iSCSIDiskResourceName> Filesystem device="/dev/<VolumeGroupName>/<LogicalVolumeName>" directory="<FolderToMountiSCSIDisk>" fstype="<FileSystemType>" --group RGName-
<iSCSIDIskResourceName>ist der Name der Ressource, die dem iSCSI-Datenträger zugeordnet ist. -
<VolumeGroupName>ist der Name der Volumegruppe. -
<LogicalVolumeName>ist der Name des erstellten logischen Volumes. -
<FolderToMountiSCSIDIsk>ist der Ordner für die Einbindung des Datenträgers (bei Systemdatenbanken und dem Standardspeicherort wäre das/var/opt/mssql/data) -
<FileSystemType>wäre ext4 oder XFS, je nachdem, wie die Elemente formatiert wurden und was die Verteilung unterstützt.
-
Erstellen Sie die IP-Adresse, die von der FCI verwendet wird. Wenn kein Problem vorliegt, wird keine Antwort zurückgegeben.
sudo pcs resource create <IPResourceName> ocf:heartbeat:IPaddr2 ip=<IPAddress> nic=<NetworkCard> cidr_netmask=<NetMask> --group <RGName>-
<IPResourceName>ist der Name der Ressource, die der IP-Adresse zugeordnet ist. -
<IPAddress>ist die IP-Adresse für die FCI. -
<NetworkCard>ist die Netzwerkkarte, die dem Subnetz zugeordnet ist (d. h. eth0) -
<NetMask>ist die Netzmaske des Subnetzes (d. h. 24) -
<RGName>ist der Name der Ressourcengruppe.
-
Erstellen Sie die FCI-Ressource. Wenn kein Problem vorliegt, wird keine Antwort zurückgegeben.
sudo pcs resource create FCIResourceName ocf:mssql:fci op defaults timeout=60s --group RGName-
<FCIResourceName>ist nicht nur der Name der Ressource, sondern auch der Anzeigename, der der FCI zugeordnet ist. Damit stellen Benutzer und Anwendungen eine Verbindung her. -
<RGName>ist der Name der Ressourcengruppe.
-
Führen Sie den Befehl
sudo pcs resourceaus. Die FCI muss online sein.Stellen Sie mithilfe des DNS-/Ressourcennamens der FCI eine Verbindung mit SSMS oder sqlcmd her.
Geben Sie die Anweisung
SELECT @@SERVERNAMEaus. Sie sollte den Namen der FCI zurückgeben.Geben Sie die Anweisung
SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS')aus. Sie sollte den Namen des Knotens zurückgeben, auf dem die FCI ausgeführt wird.Führen Sie ein manuelles Failover der FCI auf den oder die anderen Knoten durch. Weitere Informationen finden Sie in den Anweisungen unter Operate failover cluster instance - SQL Server on Linux (Betreiben einer Failoverclusterinstanz: SQL Server für Linux).
Führen Sie schließlich ein Failback auf den ursprünglichen Knoten durch, und entfernen Sie die Verbindungseinschränkung.
Zusammenfassung
In diesem Tutorial haben Sie die folgenden Aufgaben abgeschlossen.
- Einrichten und Konfigurieren von Linux
- Installieren und Konfigurieren von SQL Server
- Konfigurieren der Datei „hosts“
- Konfigurieren von freigegebenem Speicher und Verschieben der Datenbankdateien
- Installieren und Konfigurieren von Pacemaker auf jedem Clusterknoten
- Konfigurieren der Failoverclusterinstanz