Eine SQL Server-Failovercluster-Instanz konfigurieren, die nichtflüchtige Speicher im Modus für mehrere Autoren verwendet


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 2022 Failover-Clusterinstanz bereitstellen und nichtflüchtige Speicher im Modus für mehrere Autoren als gemeinsam genutzten Speicher verwenden.

In einer lokalen Umgebung können Sie WSFC ARP-Ankündigungen ausführen lassen, wenn ein Failover auftritt, um Netzwerkgeräte über eine IP-Adressänderung zu benachrichtigen. Google Cloud ignoriert jedoch ARP-Ankündigungen. Daher müssen Sie eine der beiden folgenden Optionen implementieren:

Architektur

Architektur

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.
  • Konfigurieren Sie einen Load Balancer oder einen verteilten Netzwerknamen (Distributed Network Name, DNN), um Traffic mit SQL Server an Ihre Verfügbarkeitsgruppe weiterzuleiten.
  • 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.

Hinweis

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.

Überprüfen Sie die aktuellen Einschränkungen von nichtflüchtigen Speichern im Modus für mehrere Autoren und wählen Sie eine Zone aus, in der nichtflüchtige Speicher im Modus für mehrere Autoren verfügbar sind.

Sie benötigen außerdem ein Google Cloud-Projekt, um die Anleitung abzuschließen.

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

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:

  1. Öffnen Sie Cloud Shell in der Google Cloud Console. Klicken Sie hierzu auf die Schaltfläche Cloud Shell aktivieren Aktivieren Sie Cloud Shell..

    Weiter zur Google Cloud Console

  2. Initialisieren Sie die folgenden Variablen:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Wobei:

    • VPC_NAME: Der Name Ihrer VPC
    • SUBNET_NAME: Der Name Ihres Subnetzes
  3. 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.

  4. Legen Sie Ihre Standardzone fest:

    gcloud config set compute/zone ZONE
    

    Ersetzen Sie ZONE durch die ID der Zone, 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:

  1. Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
  2. 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
    
  3. Erstellen Sie eine Firewallregel, die Systemdiagnosen aus den IP-Bereichen der Google Cloud-Prober zulässt: (nicht bei einer DNN-Konfiguration erforderlich)

    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:

  • sich in derselben Zone befinden, damit sie auf dieselben nichtflüchtigen Speicher zugreifen können.
  • Windows Server Failover Clustering und SQL Server installiert haben.
  • Compute Engine-WSFC-Unterstützung aktiviert haben.

Sie verwenden ein SQL Server-Premium-Image, auf dem SQL Server 2022 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.

  1. Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
  2. Erstellen Sie eine Richtlinie für gestreute Platzierung, die die WSFC-Knoten über die zugrunde liegende Infrastruktur des Rechenzentrums verteilt, sodass sie nicht denselben Host oder dasselbe Betriebssystem verwenden:

    ZONE=$(gcloud config get-value compute/zone)
    gcloud compute resource-policies create group-placement spread-placement \
      --availability-domain-count 2 \
      --region ${ZONE::-2}
    
  3. 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
    
  4. Erstellen Sie die VM-Instanzen und aktivieren Sie den Windows Server Failover Clustering-Agent auf den WSFC-Knoten. Dazu setzen Sie den Metadatenschlüssel enable-wsfc auf true:

    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --resource-policies spread-placement \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-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" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create node-2 \
      --resource-policies spread-placement \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-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" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create "witness" \
      --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"
    
  5. Führen Sie für jede der drei VM-Instanzen folgende Schritte aus, um sie jeweils mit Active Directory zu verknüpfen:

    1. Ü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 etwa drei Minuten, bis die Ausgabe Instance setup finished angezeigt wird, und drücken Sie dann STRG + C. Jetzt kann die VM-Instanz verwendet werden.

    2. Erstellen Sie einen Nutzernamen und ein Passwort für die VM-Instanz.

    3. 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.

    4. Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).

    5. Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.

    6. 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.

Nichtflüchtige Speicher im Modus für mehrere Autoren erstellen

Sie erstellen jetzt drei nichtflüchtige Speicher im Modus für mehrere Autoren und hängen diese jeweils an beide WSFC-Knoten an.

  1. Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
  2. Erstellen Sie drei freigegebene nichtflüchtige Speicher:

    PD_SIZE=50
    
    gcloud beta compute disks create datadisk-1 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    gcloud beta compute disks create datadisk-2 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    gcloud beta compute disks create datadisk-3 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    
  3. Hängen Sie die Laufwerke an node-1 an:

    gcloud compute instances attach-disk node-1 --disk datadisk-1
    gcloud compute instances attach-disk node-1 --disk datadisk-2
    gcloud compute instances attach-disk node-1 --disk datadisk-3
    
  4. Hängen Sie die Laufwerke an node-2 an:

    gcloud compute instances attach-disk node-2 --disk datadisk-1
    gcloud compute instances attach-disk node-2 --disk datadisk-2
    gcloud compute instances attach-disk node-2 --disk datadisk-3
    

Cluster-IP-Adressen reservieren

Jetzt reservieren Sie zwei statische IP-Adressen auf Ihrer VPC. Eine IP-Adresse wird als WSFC-Cluster-IP-Adresse verwendet, die andere nutzt der interne Load-Balancer.

  1. 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 \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --subnet $SUBNET_NAME
    
    LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --format=value\(address\)) && \
    echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
    

    Notieren Sie sich die IP-Adresse. Sie benötigen sie später.

  2. Reservieren Sie eine weitere statische IP-Adresse, die Sie als Cluster-IP-Adresse verwenden: (nicht bei einer DNN-Konfiguration erforderlich)

    gcloud compute addresses create wsfc-cluster \
      --subnet $SUBNET_NAME \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) && \
    CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --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:

  1. Stellen Sie mithilfe von Remote Desktop eine Verbindung zu witness her. Melden Sie sich mit Ihrem Domainnutzerkonto an.
  2. Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
  3. Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
  4. 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:

  1. Stellen Sie mithilfe von Remote Desktop eine Verbindung zu node-1 her. Melden Sie sich mit Ihrem Domainnutzerkonto an.
  2. Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
  3. Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
  4. Erstellen Sie einen neuen Cluster:

    • Für Load Balancer-Konfiguration
    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -StaticAddress CLUSTER_ADDRESS
    

    Ersetzen Sie CLUSTER_ADDRESS durch die zuvor erstellte Cluster-IP-Adresse.

    • Für DNN-Konfiguration
    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -ManagementPointNetworkType Distributed
    
  5. Kehren Sie zur PowerShell-Sitzung auf witness zurück und gewähren Sie dem virtuellen Computerobjekt des Clusters die Berechtigung für den Zugriff auf die Dateifreigabe:

    icacls C:\QWitness\ /grant 'sql-cluster$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'sql-cluster$' `
      -AccessRight Full `
      -Force
    
  6. Kehren Sie zur PowerShell-Sitzung auf node-1 zurück und konfigurieren Sie den Cluster so, dass die Dateifreigabe auf witness als Clusterquorum verwendet wird:

    Set-ClusterQuorum -FileShareWitness \\witness\QWitness
    
  7. 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.

  8. 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:

    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members sql-cluster$
    

Speicherpool erstellen

Sie erstellen nun einen Speicherpool, der die drei zuvor erstellten nichtflüchtigen Speicher kombiniert und nutzen den Speicherpool, um ein gemeinsam genutztes Volume zu erstellt:

  1. Kehren Sie zur PowerShell-Sitzung auf node-1 zurück.
  2. Erstellen Sie einen neuen Speicherpool, der die drei nichtflüchtigen Speicher verwendet:

    $NodeName = [System.Net.Dns]::GetHostName()
    
    $ClusterDisks = Get-PhysicalDisk -CanPool $True |
      Where-Object { ($_ |
        Get-PhysicalDiskStorageNodeView |
        Select-Object -Property StorageNodeObjectId) -like ('*' + $NodeName + '*') }
    
    $Pool = New-StoragePool `
      -StorageSubsystemFriendlyName 'Clustered*' `
      -FriendlyName FciPool `
      -PhysicalDisks $ClusterDisks `
      -ResiliencySettingNameDefault Simple `
      -Verbose
    
  3. Erstellen Sie im Speicherpool ein neues Volume, das die für Cluster bereitgestellten Volume-Versionen von ReFS nutzt und eine Clustergröße von 64 KB verwendet:

    $Pool | New-Volume `
      -FriendlyName FciVolume `
      -FileSystem CSVFS_ReFS `
      -Size 100GB `
      -AllocationUnitSize 65536
    

    Das Volume wird automatisch auf node-2 angezeigt, da die zugrunde liegenden nichtflüchtigen Speicher an beide VM-Instanzen angehängt sind.

  4. Öffnen Sie das Failovercluster-Manager-MMC-Snap-in:

    cluadmin.msc
    
  5. Gehen Sie im linken Fensterbereich zu Failovercluster-Manager > sql-cluster > Speicher > Laufwerke.

  6. Klicken Sie mit der rechten Maustaste auf Virtuelles Cluster-Laufwerk (FciVolume) und wählen Sie Aus den freigegebenen Cluster-Volumes entfernen aus.

  7. Wählen Sie Virtuelles Cluster-Laufwerk (FciVolume) aus.

  8. Klicken Sie unten im Tab Volumes mit der rechten Maustaste auf die Lautstärke und wählen Sie Laufwerksbuchstaben ändern aus.

  9. Wählen Sie den Laufwerksbuchstaben D aus und klicken Sie auf OK.

Failover für Speicherpool testen

Optional können Sie jetzt testen, ob der Failover des Speicherpools ordnungsgemäß funktioniert:

  1. Stellen Sie mithilfe von Remote Desktop eine Verbindung zu node-2 her. Melden Sie sich mit Ihrem Domainnutzerkonto an.
  2. Klicken Sie mit der rechten Maustaste auf die Schaltfläche Start (oder drücken Sie Win + X) und wählen Sie Ausführen.
  3. Geben Sie cluadmin.msc ein und wählen Sie OK aus.
  4. Gehen Sie im linken Fensterbereich zu Failovercluster-Manager > sql-cluster > Speicher > Pools.

    Es sollte ein Pool namens Cluster Pool 1 angezeigt werden, dessen Inhaberknoten node-1 ist.

  5. 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
    
  6. Kehren Sie zum Failovercluster-Manager auf node-2 zurück.

  7. Ü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:

  1. Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
  2. Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
  3. Entfernen Sie die SQL Server-Standardinstanz:

    C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
    
  4. Entfernen Sie den Microsoft OLE-Treiber:

    Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
    
  5. Entfernen Sie Microsoft ODBC-Treiber:

    Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
    
  6. Starten Sie den Computer neu:

    Restart-Computer
    
  7. 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:

  1. Stellen Sie mithilfe von Remote Desktop eine neue Verbindung zu node-1 her und melden Sie sich mit Ihrem Domainnutzer an.
  2. Klicken Sie mit der rechten Maustaste auf die Schaltfläche Start (oder drücken Sie Win + X) und wählen Sie Ausführen.
  3. Geben Sie cluadmin.msc ein und wählen Sie OK aus.
  4. Gehen Sie im linken Fensterbereich zu Failovercluster-Manager > sql-cluster.

    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 sql-cluster, wählen Sie Weitere Aktionen > Hauptclusterressourcen verschieben > Knoten auswählen > node-1 aus und klicken Sie auf OK.

  5. Gehen Sie im linken Fensterbereich zu Failovercluster-Manager > sql-cluster > 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:

  1. Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
  2. Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
  3. Erstellen Sie ein Domainnutzerkonto für SQL Server und den SQL-Agent und weisen Sie ein Passwort zu:

    $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
    
  4. Starten Sie die SQL Server-Einrichtung:

    & c:\sql_server_install\setup.exe
    
  5. Wählen Sie im Menü auf der linken Seite Installation aus.

  6. Wählen Sie Neue SQL Server-Failovercluster-Installation aus.

  7. Klicken Sie auf der Seite Edition auf das Kästchen Ich habe nur eine SQL Server-Lizenz und wählen Sie Weiter aus.

  8. Lesen Sie sich die Bedingungen auf der Seite Lizenzbedingungen durch und klicken Sie auf Weiter, falls Sie zustimmen.

  9. Wählen Sie auf der Seite Microsoft Update Weiter aus, um die Installation zu starten.

  10. 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.

  11. Wählen Sie auf der Seite Feature-Auswahl die Option Datenbankmodul-Dienste und dann Weiter aus.

  12. Geben Sie auf der Seite Instanzkonfiguration sql als Netzwerknamen ein und wählen Sie Weiter aus.

  13. Behalten Sie auf der Seite Cluster-Ressourcengruppe die Standardeinstellungen bei und wählen Sie Weiter aus.

  14. Wählen Sie auf der Seite Cluster-Laufwerk auswählen die Option Virtuelles Cluster-Laufwerk (FciVolume) und dann Weiter aus.

  15. 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.
  16. Konfigurieren Sie auf der Seite Serverkonfiguration folgende Einstellungen für SQL Server-Agent und SQL Server-Datenbank-Engine:

    • Kontoname: DOMAIN\sql_server, wobei DOMAIN der NetBIOS-Name Ihrer Active Directory-Domain ist
    • Passwort: Geben Sie das zuvor erstellte Passwort ein
  17. Klicken Sie auf den Tab Sortierung und wählen Sie die Sortierung aus, die Sie verwenden möchten. Klicken Sie anschließend auf Weiter.

  18. 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.

  19. Prüfen Sie auf der Seite Bereit zum Installieren die Einstellungen und wählen Sie Installieren aus.

  20. Wählen Sie nach Abschluss der Installation Schließen aus.

Fügen Sie jetzt node-2 dem SQL Server-Failover-Cluster hinzu:

  1. Stellen Sie mithilfe von Remote Desktop eine Verbindung zu node-2 her und melden Sie sich mit Ihrem Domainnutzer an.
  2. Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
  3. Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
  4. Starten Sie die SQL Server-Einrichtung:

    & c:\sql_server_install\setup.exe
    
  5. Wählen Sie im Menü auf der linken Seite Installation aus.

  6. Wählen Sie Knoten zu einem SQL Server-Failovercluster hinzufügen aus.

  7. Folgen Sie der Anleitung des Installationsassistenten und bestätigen Sie die Standardeinstellungen, bis die Seite Dienstkonten angezeigt wird.

  8. 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.

  9. Prüfen Sie auf der Seite Bereit zum Installieren die Einstellungen und wählen Sie Installieren aus.

  10. 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:

  1. Kehren Sie zur PowerShell-Sitzung auf node-2 zurück.
  2. Initialisieren Sie eine Variable mit der IP-Adresse des Load-Balancers.

    $LoadBalancerIP = 'IP_ADDRESS'
    

    Ersetzen Sie IP_ADDRESS durch die IP-Adresse der zuvor reservierten wsfc-Adresse.

  3. 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; }
    
  4. Starten Sie die Clusterressource neu:

    $SqlIpAddress | Stop-ClusterResource
    $SqlIpAddress | Start-ClusterResource
    
  5. 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.

  1. Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
  2. Erstellen Sie eine nicht verwaltete Instanzgruppe und fügen Sie der Gruppe die beiden Knoten hinzu:

    gcloud compute instance-groups unmanaged create wsfc-group
    gcloud compute instance-groups unmanaged add-instances wsfc-group --instances node-1,node-2
    
  3. 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 als ProbePort für die IP-Adresse des WSFC-Clusters konfiguriert haben.

  4. Erstellen Sie einen Back-End-Dienst und fügen Sie die Instanzgruppe hinzu:

    gcloud compute backend-services create wsfc-backend \
      --load-balancing-scheme internal \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --health-checks wsfc-healthcheck \
      --protocol tcp
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group \
      --instance-group-zone $(gcloud config get-value compute/zone) \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev)
    
  5. 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 $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --backend-service wsfc-backend
    

DNN-Ressource und DNN-DNS-Namen konfigurieren

Ähnlich wie der interne Load Balancer fungiert die DNN-Ressource als einzelnes Gateway für SQL Server-Clients. Bei Failovers leitet der Cluster den Traffic nahtlos zum aktiven SQL Server-FCI-Knoten weiter. Clients stellen über den DNS-Namen eine Verbindung zur SQL Server-FCI her.

  1. Kehren Sie zur PowerShell-Sitzung auf node-1 zurück.
  2. Skript zum Erstellen einer DNN-Ressource ausführen

      $DNNResourceName='fci-dnn'
      $DNN_DNSName='fcidnn'
    
      # create the DNN resource
      Add-ClusterResource -Name $DNNResourceName -ResourceType 'Distributed Network Name' -Group 'SQL Server (MSSQLSERVER)'
    
      # set the DNS name of the DNN resource
      Get-ClusterResource -Name $DNNResourceName | Set-ClusterParameter -Name DnsName -Value $DNN_DNSName
    
      # start the DNN resource
      Start-ClusterResource -Name $DNNResourceName
    
  3. Starten Sie node-1 und node-2 neu.

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:

  1. Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
  2. Erstellen Sie eine neue VM-Instanz:

    gcloud compute instances create sqlclient \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-win-2022 \
      --image-project windows-sql-cloud \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd
    
  3. Ü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 etwa drei Minuten, bis die Einrichtung der Ausgabeinstanz abgeschlossen ist, und drücken Sie dann STRG + C. Jetzt kann die VM-Instanz verwendet werden.

  4. Erstellen Sie einen Nutzernamen und ein Passwort für die VM-Instanz.

  5. 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.

  6. Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).

  7. Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.

  8. Verbinden Sie den Computer mit Ihrer Active Directory-Domain:

    Add-Computer -Domain DOMAIN
    

    Ersetzen Sie DOMAIN durch den DNS-Namen Ihrer Active Directory-Domain.

  9. 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:

  1. Stellen Sie mithilfe von Remote Desktop eine Verbindung zu sqlclient her und melden Sie sich mit Ihrem Domainnutzer an.
  2. Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell.
  3. Stellen Sie mit dem Netzwerknamen sql eine Verbindung zum SQL Server-Cluster her und fragen Sie die Tabelle dm_os_cluster_nodes ab:

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S SQL_SERVER_NAME -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    Ersetzen Sie SQL_SERVER_NAME durch den sql für die Load Balancer-Konfiguration oder fcidnn für die DNN-Konfiguration.

    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.

  4. 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
    
  5. Wiederholen Sie die Abfrage:

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S SQL_SERVER_NAME -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    Ersetzen Sie SQL_SERVER_NAME durch den sql für die Load Balancer-Konfiguration oder fcidnn für die DNN-Konfiguration.

    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, dass node-2 jetzt der aktuelle Eigentümer des Failover-Clusters ist.

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:

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte