Mit Always On-Failover-Clusterinstanzen (FCIs) von Microsoft SQL Server können Sie eine einzelne SQL Server-Instanz auf mehreren Windows Server-Failover-Clusterknoten (WSFCs) ausführen. Die SQL-Instanz wird immer auf nur einer der SQL-Instanzen aktiv gehostet. Im Falle eines Fehlers überträgt der WSFC die Inhaberschaft der Instanzressourcen automatisch auf einen anderen Knoten.
SQL Server-FCI erfordert, dass sich die relevanten Daten auf einem freigegebenen Speicher befinden, damit der Zugriff über alle WSFC-Knoten möglich ist. In diesem Leitfaden wird beschrieben, wie Sie eine SQL Server 2019 Failover-Clusterinstanz bereitstellen, die Storage Spaces Direct (S2D) für freigegebenen Speicher verwendet. S2D stellt ein softwarebasiertes virtuelles SAN bereit, das Compute Engine VM-Datenlaufwerke zum Speichern der SQL-Datenbank verwenden kann.
Das folgende Diagramm veranschaulicht die Bereitstellung:
Bei der Implementierung einer hyperkonvergenten Architektur dienen die VM-Instanzen node-1
und node-2
als WSFC-Knoten und hosten auch den freigegebenen Speicher. Die dritte VM-Instanz witness
wird verwendet, um ein Quorum in einem Failover-Szenario zu erreichen. Die drei VM-Instanzen werden auf drei Zonen verteilt und teilen sich ein gemeinsames Subnetz.
Clients kommunizieren mit der SQL Server-Instanz über einen internen TCP-Load-Balancer. Dieser Load-Balancer verwendet eine benutzerdefinierte Systemdiagnose, um festzustellen, welcher WSFC-Knoten derzeit die SQL-Instanz hostet und Traffic an diese Instanz weiterleitet.
In diesem Artikel wird davon ausgegangen, dass Sie Active Directory bereits in Google Cloud bereitgestellt haben und Grundkenntnisse in Sachen SQL Server, Active Directory und Compute Engine haben.
Ziele
- Stellen Sie eine WSFC bereit, die aus zwei SQL Server-VM-Instanzen und einer dritten VM-Instanz besteht, die als Dateifreigabenzeuge dient.
- SQL Server-FCI auf dem WSFC bereitstellen.
- Um zu prüfen, ob der Cluster funktioniert, simulieren Sie ein Failover.
Kosten
In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:
Sie können mithilfe des Preisrechners eine Kostenschätzung für Ihre voraussichtliche Nutzung erstellen.
Vorbereitung
Zum Durcharbeiten dieser Anleitung benötigen Sie Folgendes:
- Eine Active Directory-Domain mit mindestens einem Domain-Controller. Mit Managed Microsoft AD können Sie Active Directory-Domains erstellen. Alternativ können Sie eine benutzerdefinierte Active Directory-Umgebung in Compute Engine bereitstellen und eine private DNS-Weiterleitungszone einrichten, die DNS-Abfragen an Ihre Domain-Controller weiterleitet.
- Einen Active Directory-Nutzer, der berechtigt ist, Computern der Domain beizutreten und sich über RDP anzumelden. Wenn Sie Managed Microsoft AD verwenden, können Sie den
setupadmin
-Nutzer verwenden. - Ein Google Cloud-Projekt und eine VPC mit Verbindung zu Ihren Active Directory-Domain-Controller.
- Ein Subnetz, das für die WSFC-VM-Instanzen verwendet werden soll.
Sie benötigen außerdem ein Google Cloud-Projekt, um die Anleitung abzuschließen.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
Nach Abschluss dieser Anleitung können Sie weitere Kosten durch Löschen von erstellten Ressourcen vermeiden. Weitere Informationen finden Sie unter Bereinigen.
Projekt und Netzwerk vorbereiten
So bereiten Sie Ihr Google Cloud-Projekt und Ihre VPC für die Bereitstellung von SQL Server FCI vor:
Öffnen Sie Cloud Shell in der Google Cloud Console. Klicken Sie hierzu auf die Schaltfläche Cloud Shell aktivieren .
Initialisieren Sie die folgenden Variablen:
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Dabei gilt:
VPC_NAME
: Der Name Ihrer VPCSUBNET_NAME
: Der Name Ihres Subnetzes
Legen Sie Ihre standardmäßige Projekt-ID fest:
gcloud config set project
PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch die ID Ihres Google Cloud-Projekts.Legen Sie Ihre Standardregion fest:
gcloud config set compute/region
REGION
Ersetzen Sie
REGION
durch die ID der Region, in der die Bereitstellung erfolgen soll.
Firewallregeln erstellen
Damit Clients eine Verbindung zu SQL Server herstellen können, müssen Sie die Kommunikation zwischen den WSFC-Knoten zulassen. Damit der Load-Balancer Systemdiagnosen durchführt, müssen Sie verschiedene Firewallregeln erstellen. Verwenden Sie Netzwerk-Tags, um die Erstellung dieser Firewallregeln zu vereinfachen:
- Die beiden WSFC-Knoten werden mit dem Tag
wsfc-node
gekennzeichnet. - Alle Server, einschließlich des Zeugen, werden mit dem Tag
wsfc
gekennzeichnet.
Erstellen Sie Firewallregeln, die diese Netzwerk-Tags verwenden:
- Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
Erstellen Sie Firewallregeln für die WSFC-Knoten:
SUBNET_CIDR=$(gcloud compute networks subnets describe $SUBNET_NAME --format=value\('ipCidrRange'\)) gcloud compute firewall-rules create allow-all-between-wsfc-nodes \ --direction=INGRESS \ --action=allow \ --rules=tcp,udp,icmp \ --enable-logging \ --source-tags=wsfc \ --target-tags=wsfc \ --network=$VPC_NAME \ --priority 10000 gcloud compute firewall-rules create allow-sql-to-wsfc-nodes \ --direction=INGRESS \ --action=allow \ --rules=tcp:1433 \ --enable-logging \ --source-ranges=$SUBNET_CIDR \ --target-tags=wsfc-node \ --network=$VPC_NAME \ --priority 10000
Erstellen Sie eine Firewallregel, die Systemdiagnosen aus den IP-Bereichen der Google Cloud-Prober zulässt:
gcloud compute firewall-rules create allow-health-check-to-wsfc-nodes \ --direction=INGRESS \ --action=allow \ --rules=tcp \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=wsfc-node \ --network=$VPC_NAME \ --priority 10000
VM-Instanzen erstellen
Sie stellen jetzt zwei VM-Instanzen für den Failover-Cluster bereit. Es kann immer nur eine dieser VMs als aktiver FCI-Knoten dienen, während der andere Knoten als Failover-Knoten dient. Die beiden VM-Instanzen müssen die folgenden Anforderungen erfüllen:
- Sie befinden sich in derselben Region, damit ein interner TCP-Load-Balancer auf sie zugreifen kann.
- Der Gast-Agent ist für die Verwendung des WSFC-Modus konfiguriert. In diesem Modus ignoriert der Gastagent die IP-Adressen interner Load Balancer, wenn er die lokale Netzwerkschnittstelle konfiguriert. Dieses Verhalten ist erforderlich, um IP-Adresskonflikte bei WSFC-Failover-Ereignissen zu vermeiden.
Sie verwenden ein SQL Server-Premium-Image, auf dem SQL Server 2019 vorinstalliert ist.
Für eine Tiebreak-Abstimmung und zur Erfüllung eines Quorums für das Failover-Szenario stellen Sie eine dritte VM bereit, die als Dateifreigabezeuge verwendet wird.
- Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
Erstellen Sie ein Spezialisierungsskript für die WSFC-Knoten. Das Skript installiert das erforderliche Windows-Feature und erstellt Firewallregeln für WSFC und SQL Server:
cat << "EOF" > specialize-node.ps1 $ErrorActionPreference = "stop" # Install required Windows features Install-WindowsFeature Failover-Clustering -IncludeManagementTools Install-WindowsFeature RSAT-AD-PowerShell # Open firewall for WSFC netsh advfirewall firewall add rule name="Allow SQL Server health check" dir=in action=allow protocol=TCP localport=59997 # Open firewall for SQL Server netsh advfirewall firewall add rule name="Allow SQL Server" dir=in action=allow protocol=TCP localport=1433 EOF
Erstellen Sie die VM-Instanzen. Fügen Sie auf den beiden VMs, die als S2D- und WSFC-Knoten dienen, zusätzliche Datenlaufwerke hinzu und aktivieren Sie den WSFC-Modus. Setzen Sie dazu den Metadatenschlüssel
enable-wsfc
auftrue
:REGION=$(gcloud config get-value compute/region) PD_SIZE=50 MACHINE_TYPE=n2-standard-8 gcloud compute instances create node-1 \ --zone $REGION-a \ --machine-type $MACHINE_TYPE \ --subnet $SUBNET_NAME \ --image-family sql-ent-2019-win-2022 \ --image-project windows-sql-cloud \ --tags wsfc,wsfc-node \ --boot-disk-size 50 \ --boot-disk-type pd-ssd \ --boot-disk-device-name "node-1" \ --create-disk=name=node-1-datadisk-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-1-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-1-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-1-datadisk-4,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --metadata enable-wsfc=true \ --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1 gcloud compute instances create node-2 \ --zone $REGION-b \ --machine-type $MACHINE_TYPE \ --subnet $SUBNET_NAME \ --image-family sql-ent-2019-win-2022 \ --image-project windows-sql-cloud \ --tags wsfc,wsfc-node \ --boot-disk-size 50 \ --boot-disk-type pd-ssd \ --boot-disk-device-name "node-2" \ --create-disk=name=node-2-datadisk-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-2-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-2-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-2-datadisk-4,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --metadata enable-wsfc=true \ --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1 gcloud compute instances create "witness" \ --zone $REGION-c \ --machine-type n2-standard-2 \ --subnet $SUBNET_NAME \ --image-family=windows-2022 \ --image-project=windows-cloud \ --tags wsfc \ --boot-disk-size 50 \ --boot-disk-type pd-ssd \ --metadata sysprep-specialize-script-ps1="add-windowsfeature FS-FileServer"
Führen Sie für jede der drei VM-Instanzen folgende Schritte aus, um sie jeweils mit Active Directory zu verknüpfen:
Überwachen Sie den Initialisierungsprozess der VM. Rufen Sie dazu die Ausgabe des seriellen Ports auf:
gcloud compute instances tail-serial-port-output
NAME
Ersetzen Sie
NAME
durch den Namen der VM-Instanz.Warten Sie einige Minuten, bis die Ausgabe
Instance setup finished
angezeigt wird, und drücken Sie dann STRG+C. Jetzt kann die VM-Instanz verwendet werden.Erstellen Sie einen Nutzernamen und ein Passwort für die VM-Instanz.
Stellen Sie mithilfe von Remote Desktop eine Verbindung zur VM her und melden Sie sich mit dem Nutzernamen und dem Passwort an, den bzw. das Sie im vorherigen Schritt erstellt haben.
Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Verbinden Sie den Computer mit Ihrer Active Directory-Domain und starten Sie ihn neu:
Add-Computer -Domain
DOMAIN -Restart
Ersetzen Sie
DOMAIN
durch den DNS-Namen Ihrer Active Directory-Domain.Warten Sie etwa eine Minute, bis der Neustart abgeschlossen ist.
Cluster-IP-Adressen reservieren
Jetzt reservieren Sie zwei statische IP-Adressen in Ihrem VPC-Netzwerk. Die beiden Adressen dienen unterschiedlichen Zwecken:
- Load Balancer-IP-Adresse: Diese IP-Adresse wird von Clients verwendet, um eine Verbindung zum SQL Server herzustellen.
- Cluster-IP: Diese IP-Adresse wird nur intern von WSFC verwendet.
So reservieren Sie die statischen IP-Adressen:
Reservieren Sie eine statische IP-Adresse für den internen Load-Balancer und erfassen Sie die Adresse in einer neuen Umgebungsvariablen namens
LOADBALANCER_ADDRESS
:gcloud compute addresses create wsfc \ --subnet $SUBNET_NAME \ --region $(gcloud config get-value compute/region) LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \ --region $(gcloud config get-value compute/region) \ --format=value\(address\)) && \ echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
Notieren Sie sich die IP-Adresse. Sie benötigen sie später.
Reservieren Sie eine weitere statische IP-Adresse, die Sie als Cluster-IP-Adresse verwenden:
gcloud compute addresses create wsfc-cluster \ --subnet $SUBNET_NAME \ --region $(gcloud config get-value compute/region) && \ CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \ --region $(gcloud config get-value compute/region) \ --format=value\(address\)) && \ echo "Cluster IP: $CLUSTER_ADDRESS"
Notieren Sie sich die IP-Adresse. Sie benötigen sie später.
Ihr Projekt und Ihre VPC sind jetzt für die Bereitstellung von WSFC und SQL Server bereit.
Dateifreigabe eines Zeugen erstellen
Wenn Sie witness
als Dateifreigabenzeugen vorbereiten möchten, erstellen Sie eine Dateifreigabe und gewähren sich selbst sowie den beiden WSFC-Knoten Zugriff auf die Dateifreigabe:
- Stellen Sie mithilfe von Remote Desktop eine Verbindung zu
witness
her. Melden Sie sich mit Ihrem Domainnutzerkonto an. - Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
- Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Erstellen Sie für den Ordner des Zeugens und geben Sie ihn frei:
New-Item "C:\QWitness" -Type directory icacls C:\QWitness\ /grant 'node-1$:(OI)(CI)(M)' icacls C:\QWitness\ /grant 'node-2$:(OI)(CI)(M)' New-SmbShare ` -Name QWitness ` -Path "C:\QWitness" ` -Description "SQL File Share Witness" ` -FullAccess $env:username,node-1$,node-2$
Failovercluster bereitstellen
Sie stellen jetzt mit den VM-Instanzen ein WSFC und SQL Server bereit.
WSFC bereitstellen
Sie können nun den Failovercluster erstellen:
- Stellen Sie mithilfe von Remote Desktop eine Verbindung zu
node-1
her. Melden Sie sich mit Ihrem Domainnutzerkonto an. - Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
- Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Erstellen Sie einen neuen Cluster:
New-Cluster ` -Name windows-fci ` -Node node-1,node-2 ` -NoStorage ` -StaticAddress
CLUSTER_ADDRESS
Ersetzen Sie
CLUSTER_ADDRESS
durch die zuvor erstellte Cluster-IP-Adresse.Mit dem Befehl wird ein Computerkonto
windows-fci
in Ihrer Active Directory-Domain erstellt.Kehren Sie zur PowerShell-Sitzung auf
witness
zurück und gewähren Sie dem Computerkontowindows-fci
die Berechtigung für den Zugriff auf die Dateifreigabe:icacls C:\QWitness\ /grant 'windows-fci$:(OI)(CI)(M)' Grant-SmbShareAccess ` -Name QWitness ` -AccountName 'windows-fci$' ` -AccessRight Full ` -Force
Kehren Sie zur PowerShell-Sitzung auf
node-1
zurück und konfigurieren Sie den Cluster so, dass die Dateifreigabe aufwitness
als Clusterquorum verwendet wird:Set-ClusterQuorum -FileShareWitness \\witness\QWitness
Prüfen Sie, ob der Cluster erfolgreich erstellt wurde:
Test-Cluster
Möglicherweise werden einige Warnungen angezeigt, die ignoriert werden können:
WARNING: System Configuration - Validate All Drivers Signed: The test reported some warnings.. WARNING: Network - Validate Network Communication: The test reported some warnings.. WARNING: Test Result: HadUnselectedTests, ClusterConditionallyApproved Testing has completed for the tests you selected. You should review the warnings in the Report. A cluster solution is supported by Microsoft only if you run all cluster validation tests, and all tests succeed (with or without warnings).
Sie können auch das Failovercluster-Manager-MMC-Snap-In starten, um den Zustand des Clusters zu prüfen. Führen Sie dazu
cluadmin.msc
aus.Wenn Sie Managed AD verwenden, fügen Sie das von WSFC verwendete Computerkonto der Gruppe Cloud Service Domain Join-Konten hinzu, damit der Computer sich mit der Domain verknüpfen kann:
Install-WindowsFeature RSAT-ADDS Add-ADGroupMember ` -Identity "Cloud Service Domain Join Accounts" ` -Members windows-fci$
Storage Spaces Direct aktivieren
Aktivieren Sie jetzt S2D und erstellen Sie ein freigegebenes Volume, das die drei zuvor erstellten nichtflüchtigen Speicher kombiniert:
- Kehren Sie zur PowerShell-Sitzung auf
node-1
zurück. Aktivieren Sie S2D:
Enable-ClusterStorageSpacesDirect
Optional: Wenn Sie eine bessere Laufwerksleistung wünschen, können Sie zusätzlich zu nichtflüchtigem SSD-Speicher Ihren S2d-Knoten lokale SCSI-SSDs hinzufügen. Die lokalen SSDs können als S2D-Caching-Ebene dienen. Die Anzahl der Kapazitätslaufwerke (in diesem Fall nichtflüchtige SSD-Speicher) sollte ein Vielfaches der Anzahl der lokalen SSDs sein. Führen Sie stattdessen folgenden Befehl aus, um S2D mit Caching zu aktivieren:
Enable-ClusterStorageSpacesDirect -CacheDeviceModel "EphemeralDisk"
Übernehmen Sie den Standardwert, wenn Sie zur Bestätigung aufgefordert werden. Möglicherweise werden einige Warnungen angezeigt, die ignoriert werden können:
WARNING: 2021/04/08-13:12:26.159 Node node-1: No disks found to be used for cache WARNING: 2021/04/08-13:12:26.159 Node node-2: No disks found to be used for cache
Optional können Sie den speicherinternen CSV-Cache (Cluster Shared Volume) auf 2048 MB setzen, um den Lesedurchsatz zu verbessern:
(Get-Cluster).BlockCacheSize = 2048
Erstellen Sie ein neues Volume, das die freigegebenen Cluster-Volume-Versionen von ReFS und die Clustergröße 64 KB verwendet:
New-Volume ` -StoragePoolFriendlyName S2D* ` -FriendlyName FciVolume ` -FileSystem CSVFS_ReFS ` -UseMaximumSize ` -AllocationUnitSize 65536
Failover für Speicherpool testen
Optional können Sie jetzt testen, ob der Failover des Speicherpools ordnungsgemäß funktioniert:
- Stellen Sie mithilfe von Remote Desktop eine Verbindung zu
node-2
her. Melden Sie sich mit Ihrem Domainnutzerkonto an. - Klicken Sie mit der rechten Maustaste auf die Schaltfläche Start (oder drücken Sie Win + X) und wählen Sie Ausführen.
- Geben Sie
cluadmin.msc
ein und wählen Sie OK aus. Gehen Sie im linken Fensterbereich zu Failovercluster-Manager > windows-fci > Speicher > Pools.
Es sollte ein Pool namens Cluster Pool 1 angezeigt werden, dessen Inhaberknoten
node-1
ist.Kehren Sie zu Cloud Shell zurück und setzen Sie die VM
node-1
zurück, um einen Failover zu simulieren:gcloud compute instances reset node-1 --zone $REGION-a
Kehren Sie zum Failovercluster-Manager auf
node-2
zurück.Überwachen Sie den Status des Speicherpools, indem Sie wiederholt F5 drücken, um die Ansicht zu aktualisieren.
Nach etwa 30 Sekunden sollte der Inhaberknoten automatisch zu
node-2
wechseln.
Standard-SQL Server-Installation entfernen
Sie entfernen jetzt die standardmäßige SQL Server-Installation von den beiden Knoten und ersetzen sie durch eine neue FCI-Konfiguration.
Führen Sie für jeden der WSFC-Knoten node-1
und node-2
folgende Schritte aus:
- Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
- Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Entfernen Sie die SQL Server-Standardinstanz:
C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
Microsoft OLE-Treiber entfernen:
Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
Microsoft ODBC-Treiber entfernen:
Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
Starten Sie den Computer neu:
Restart-Computer
Warten Sie etwa eine Minute, bis der Neustart abgeschlossen ist.
SQL Server-FCI installieren
Prüfen Sie vor der Installation der neuen FCI-Konfiguration, ob node-1
der aktive Knoten im Cluster ist:
- Stellen Sie mithilfe von Remote Desktop eine neue Verbindung zu
node-1
her und melden Sie sich mit Ihrem Domainnutzer an. - Klicken Sie mit der rechten Maustaste auf die Schaltfläche Start (oder drücken Sie Win + X) und wählen Sie Ausführen.
- Geben Sie
cluadmin.msc
ein und wählen Sie OK aus. Gehen Sie im linken Fensterbereich zu Failovercluster-Manager > windows-fci.
Prüfen Sie, ob der aktuelle Hostserver auf
node-1
eingestellt ist.Wenn der aktuelle Hostserver auf
node-2
eingestellt ist, klicken Sie im linken Fensterbereich mit der rechten Maustaste auf windows-fci, wählen Weitere Aktionen > Core Cluster-Ressourcen verschieben > Knoten wählen > node-1 und klicken auf OK.Gehen Sie im linken Fensterbereich zu Failovercluster-Manager > windows-fci > Speicher > Pools.
Prüfen Sie, ob der Inhaberknoten von Clusterpool 1 auf
node-1
eingestellt ist.Ist der Inhaberknoten auf
node-2
gesetzt, klicken Sie mit der rechten Maustaste auf den Pool, wählen Sie Verschieben > Knoten auswählen > node-1 aus und klicken Sie auf OK.
Sie erstellen jetzt eine neue SQL Server-Failovercluster-Installation in node-1
:
- Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
- Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Erstellen Sie ein Domainnutzerkonto für SQL Server und den SQL-Agent und weisen Sie ein Passwort zu:
Active Directory
$Credential = Get-Credential -UserName sql_server -Message 'Enter password' New-ADUser ` -Name "sql_server" ` -Description "SQL Agent and SQL Admin account." ` -AccountPassword $Credential.Password ` -Enabled $true -PasswordNeverExpires $true
Verwaltetes Microsoft Active Directory
$Credential = Get-Credential -UserName sql_server -Message 'Enter password' New-ADUser ` -Name "sql_server" ` -Description "SQL Agent and SQL Admin account." ` -AccountPassword $Credential.Password ` -Enabled $true -PasswordNeverExpires $true ` -Path "OU=Cloud,DOMAIN"
Ersetzen Sie
DOMAIN
durch den eindeutigen Namen Ihrer Domain, z. B.DC=example,DC=org
.Starten Sie die SQL Server-Einrichtung:
& c:\sql_server_install\setup.exe
Wählen Sie im Menü auf der linken Seite Installation aus.
Wählen Sie Neue SQL Server-Failovercluster-Installation aus.
Wählen Sie auf der Seite Microsoft Update Weiter aus, um die Installation zu starten.
Auf der Seite Failover-Clusterregeln installieren werden die Warnungen MSCS-Clusterverifizierung und Windows-Firewall angezeigt. Sie können diese Warnungen ignorieren und Weiter auswählen.
Behalten Sie auf der Seite Produktschlüssel die Standardeinstellungen bei und wählen Sie Weiter aus.
Lesen Sie sich die Bedingungen auf der Seite Lizenzbedingungen durch und klicken Sie auf Weiter, falls Sie zustimmen.
Wählen Sie auf der Seite Feature-Auswahl die Option Datenbankmodul-Dienste und dann Weiter aus.
Geben Sie auf der Seite Instanzkonfiguration
sql
für den Netzwerknamen und die benannte Instanz ein und wählen Sie Weiter aus.Behalten Sie auf der Seite Cluster-Ressourcengruppe die Standardeinstellungen bei und wählen Sie Weiter aus.
Aktivieren Sie auf der Seite Cluster-Laufwerk-Auswahl die Option Virtuelles Cluster-Laufwerk (FciVolume) und deaktivieren Sie alle anderen Laufwerke. Wählen Sie Weiter.
Konfigurieren Sie auf der Seite Cluster-Netzwerkkonfiguration folgende Einstellungen und wählen Sie Weiter aus:
- DHCP: löschen
- IP-Adresse: Geben Sie die IP-Adresse des internen Load-Balancers ein.
Konfigurieren Sie auf der Seite Serverkonfiguration folgende Einstellungen für SQL Server-Agent und SQL Server-Datenbank-Engine:
- Kontoname:
DOMAIN\sql_server
, wobeiDOMAIN
der NetBIOS-Name Ihrer Active Directory-Domain ist - Passwort: Geben Sie das zuvor erstellte Passwort ein
- Kontoname:
Klicken Sie auf den Tab Sortierung und wählen Sie die Sortierung aus, die Sie verwenden möchten. Klicken Sie anschließend auf Weiter.
Wählen Sie auf der Seite Datenbank-Engine-Konfiguration die Option Aktuellen Nutzer hinzufügen aus, um den aktuellen Nutzer als SQL Server-Administrator zu kennzeichnen. Klicken Sie dann auf Weiter.
Prüfen Sie auf der Seite Bereit zum Installieren die Einstellungen und wählen Sie Installieren aus.
Wählen Sie nach Abschluss der Installation Schließen aus.
Ihre Active Directory-Domain enthält jetzt ein Computerkonto sql
, das die SQL Server-Instanz darstellt, und einen entsprechenden DNS-Eintrag, der auf die IP-Adresse des internen Load Balancers verweist.
Fügen Sie jetzt node-2
dem SQL Server-Failover-Cluster hinzu:
- Stellen Sie mithilfe von Remote Desktop eine Verbindung zu
node-2
her und melden Sie sich mit Ihrem Domainnutzer an. - Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
- Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Starten Sie die SQL Server-Einrichtung:
& c:\sql_server_install\setup.exe
Wählen Sie im Menü auf der linken Seite Installation aus.
Wählen Sie Knoten zu einem SQL Server-Failovercluster hinzufügen aus.
Folgen Sie der Anleitung des Installationsassistenten und bestätigen Sie die Standardeinstellungen, bis die Seite Dienstkonten angezeigt wird.
Geben Sie auf der Seite Dienstkonten das Passwort ein, das Sie zuvor für den SQL Server-Agent und die SQL Server-Datenbank-Engine erstellt haben. Klicken Sie dann auf Weiter.
Prüfen Sie auf der Seite Bereit zum Installieren die Einstellungen und wählen Sie Installieren aus.
Wählen Sie nach Abschluss der Installation Schließen aus.
Systemdiagnosen konfigurieren
Als letzten Schritt konfigurieren Sie den Cluster so, dass ein Endpunkt für Systemdiagnosen zur Verfügung steht, der von einem internen Load-Balancer verwendet werden kann:
- Kehren Sie zur PowerShell-Sitzung auf
node-2
zurück. Initialisieren Sie eine Variable mit der IP-Adresse des Load-Balancers.
$LoadBalancerIP = '
IP_ADDRESS
'Ersetzen Sie
IP_ADDRESS
durch die IP-Adresse der zuvor reserviertenwsfc
-Adresse.Konfigurieren Sie den Failovercluster, der auf den Systemdiagnosedienst reagieren soll:
$SqlGroup = Get-ClusterGroup | Where-Object {$_.Name.StartsWith("SQL Server")} $SqlIpAddress = Get-ClusterResource | Where-Object {$_.Name.StartsWith("SQL IP Address")} $SqlIpAddress | Set-ClusterParameter -Multiple @{ 'Address'=$LoadBalancerIP; 'ProbePort'= 59997; 'SubnetMask'='255.255.255.255'; 'Network'= (Get-ClusterNetwork).Name; 'EnableDhcp'=0; }
Starten Sie die Clusterressource neu:
$SqlIpAddress | Stop-ClusterResource $SqlIpAddress | Start-ClusterResource
Starten Sie die Clustergruppe neu:
$SqlGroup | Stop-ClusterGroup $SqlGroup | Start-ClusterGroup
Internen Load-Balancer erstellen
Um einen einzelnen Endpunkt für SQL Server-Clients bereitzustellen, stellen Sie jetzt einen internen Load-Balancer bereit, der eine Systemdiagnose nutzt und dafür sorgt, dass der Traffic an den aktiven Knoten des WSFC weitergeleitet wird.
- Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
Erstellen Sie zwei nicht verwaltete Instanzgruppen, eine pro Zone, und fügen Sie den beiden Knoten den folgenden Gruppen hinzu:
gcloud compute instance-groups unmanaged create wsfc-group-1 --zone $REGION-a gcloud compute instance-groups unmanaged add-instances wsfc-group-1 --zone $REGION-a \ --instances node-1 gcloud compute instance-groups unmanaged create wsfc-group-2 --zone $REGION-b gcloud compute instance-groups unmanaged add-instances wsfc-group-2 --zone $REGION-b \ --instances node-2
Erstellen Sie eine Systemdiagnose, damit der Load-Balancer den aktiven Knoten ermitteln kann.
gcloud compute health-checks create tcp wsfc-healthcheck \ --check-interval="2s" \ --healthy-threshold=1 \ --unhealthy-threshold=2 \ --port=59997 \ --timeout="1s"
Die Systemdiagnose prüft den Port
59997
. Dies ist der Port, den Sie zuvor alsProbePort
für die SQL Server-IP-Adressenressource konfiguriert haben.Erstellen Sie einen Back-End-Dienst und fügen Sie die beiden Instanzgruppen hinzu:
gcloud compute backend-services create wsfc-backend \ --load-balancing-scheme internal \ --region $(gcloud config get-value compute/region) \ --health-checks wsfc-healthcheck \ --protocol tcp gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group-1 \ --instance-group-zone $REGION-a \ --region $REGION gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group-2 \ --instance-group-zone $REGION-b \ --region $REGION
Internen Load-Balancer erstellen:
gcloud compute forwarding-rules create wsfc-sql \ --load-balancing-scheme internal \ --address $LOADBALANCER_ADDRESS \ --ports 1433 \ --network $VPC_NAME \ --subnet $SUBNET_NAME \ --region $REGION \ --backend-service wsfc-backend
Failovercluster testen
Sie haben die Installation des Failoverclusters abgeschlossen, müssen aber noch testen, ob er ordnungsgemäß funktioniert.
Client vorbereiten
Erstellen Sie eine neue VM-Instanz, mit der Sie eine Verbindung zum Failover-Cluster herstellen können:
- Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
Erstellen Sie eine neue VM-Instanz:
gcloud compute instances create sqlclient \ --zone $REGION-a \ --machine-type n2-standard-2 \ --subnet $SUBNET_NAME \ --image-family sql-ent-2019-win-2022 \ --image-project windows-sql-cloud \ --boot-disk-size 50 \ --boot-disk-type pd-ssd
Überwachen Sie den Initialisierungsprozess der VM. Rufen Sie dazu die Ausgabe des seriellen Ports auf:
gcloud compute instances tail-serial-port-output sqlclient
Warten Sie einige Minuten, bis die Ausgabe
Instance setup finished
angezeigt wird, und drücken Sie dann STRG+C. Jetzt kann die VM-Instanz verwendet werden.Erstellen Sie einen Nutzernamen und ein Passwort für die VM-Instanz.
Stellen Sie mithilfe von Remote Desktop eine Verbindung zur VM her und melden Sie sich mit dem Nutzernamen und dem Passwort an, den bzw. das Sie im vorherigen Schritt erstellt haben.
Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Verbinden Sie den Computer mit Ihrer Active Directory-Domain:
Add-Computer -Domain
DOMAIN
Ersetzen Sie
DOMAIN
durch den DNS-Namen Ihrer Active Directory-Domain.Starten Sie den Computer neu:
Restart-Computer
Warten Sie etwa eine Minute, bis der Neustart abgeschlossen ist.
Test durchführen
Testen Sie mit der sqlclient
-VM, ob Sie eine Verbindung zum Failovercluster herstellen können, und prüfen Sie, ob das Failover ordnungsgemäß funktioniert:
- Stellen Sie mithilfe von Remote Desktop eine Verbindung zu
sqlclient
her und melden Sie sich mit Ihrem Domainnutzer an. - Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell.
Stellen Sie mit TCP/IP und dem DNS-Namen
sql
eine Verbindung zum SQL Server-Cluster her und fragen Sie die Tabelledm_os_cluster_nodes
ab:& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
Die Ausgabe sollte in etwa so aussehen:
NodeName status status_description is_current_owner ------------------------------ ----------- ------------------ ---------------- NODE-1 0 up 1 NODE-2 0 up 0 (2 rows affected)
Beachten Sie, dass
node-1
der aktuelle Eigentümer der SQL Server-Failover-Clusterressource ist.Kehren Sie zu Cloud Shell zurück und fahren Sie die node-1-VM herunter, um das Failover-Szenario zu testen.
gcloud compute instances stop node-1 --zone $REGION-a
Wiederholen Sie die Abfrage:
& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
Die Ausgabe sollte jetzt so aussehen:
NodeName status status_description is_current_owner ------------------------------ ----------- ------------------ ---------------- NODE-1 1 down 0 NODE-2 0 up 1 (2 rows affected)
Trotz des Verlusts von
node-1
ist die Abfrage erfolgreich und zeigt, dassnode-2
jetzt der aktuelle Eigentümer des Failover-Clusters ist.
Beschränkungen
- S2D wird nur für Windows Server 2016 und höher unterstützt.
- Bei S2D enthält jedes Laufwerk nur eine teilweise Ansicht der Gesamtdaten. Daher reicht es zum Sichern Ihrer Daten nicht aus, einen Snapshot eines nichtflüchtigen Speichers zu erstellen. Verwenden Sie stattdessen eine native SQL-Sicherung.
Bereinigen
Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr nutzen und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
So löschen Sie das Projekt:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.