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
Eine SQL Server-Failoverclusterinstanz mit zwei Knoten und gemeinsam genutztem Datenträger bietet Redundanz auf Serverebene zur Gewährleistung hoher Verfügbarkeit. 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
- Die Hostdatei konfigurieren
- 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 entweder die eine oder die andere der folgenden Verteilungen:
- RHEL mit einer gültigen Subskription für das HA-Add-on
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-serverNote
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 seine Identität nicht über Knoten hinweg geteilt. 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 dieser Anmeldung die Berechtigung,
sp_server_diagnosticsauszuführen. Pacemaker verwendet dieses Konto, um zu überprüfen, auf welchem Knoten 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>];Caution
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.
Alternativ können Sie die Berechtigungen detaillierter festlegen. Die Pacemaker-Anmeldung erfordert
VIEW SERVER STATE, um mithilfe vonsp_server_diagnosticsden Integritätszustand abzufragen, sowie setupadmin und ALTER ANY LINKED SERVER, um den Namen der Failoverclusterinstanz durch Ausführen vonsp_dropserverundsp_addservermit dem Ressourcennamen zu aktualisieren.Beenden und deaktivieren Sie SQL Server auf dem primären Knoten.
Die Hostdatei konfigurieren
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 für Linux (Konfigurieren einer Failoverclusterinstanz (iSCSI): SQL Server für Linux)
- Configure failover cluster instance - NFS - SQL Server für 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 Reihenfolge, in der sie gestartet werden sollten, lautet:
- 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 Volume-Gruppe. -
<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. Es sollte den Namen des Knotens zurückgeben, auf dem die FCI ausgeführt wird.Führen Sie ein manuelles Failover der FCI auf den/die anderen Knoten durch. Weitere Informationen finden Sie in den Anweisungen unter Operate failover cluster instance - SQL Server für Linux (Betreiben einer Failoverclusterinstanz: SQL Server für Linux).
Verschieben Sie schließlich das FCI zurück auf den ursprünglichen Knoten und entfernen Sie die Kolokationsbeschränkung.
Zusammenfassung
In diesem Tutorial haben Sie die folgenden Aufgaben abgeschlossen.
- Einrichten und Konfigurieren von Linux
- Installieren und Konfigurieren von SQL Server
- Die Hostdatei konfigurieren
- Konfigurieren von freigegebenem Speicher und Verschieben der Datenbankdateien
- Installieren und Konfigurieren von Pacemaker auf jedem Clusterknoten
- Konfigurieren der Failoverclusterinstanz