SQL Server mit dem Cloud Volumes-Dienst auf der Google Cloud Platform konfigurieren


Diese Anleitung bietet einen Überblick über die Konfiguration einer hochresistenten Google Cloud-Umgebung für SQL Server, die auf dem Server Message Block (SMB) Fileshare-Speicher mit NetApp Cloud Volumes Service (CVS) für Google Cloud installiert ist.

Mit Always On-Verfügbarkeitsgruppen (AGs) von Microsoft SQL Server können Sie Datenbanken über mehrere SQL Server Enterprise-Instanzen hinweg replizieren. Bei herkömmlichen SQL Server-Always On-Instanzen muss jeder Knoten in der Regel eine Kopie der Daten pflegen, was schnell zu teuer werden kann, wenn die Datenbanken wachsen. Wenn die Datenbanken beispielsweise in einer herkömmlichen SQL Server-Always On-Bereitstellung 10 TB groß sind, muss jedes Replikat mindestens 10 TB Speicher bereitstellen. Einer der Vorteile der Bereitstellung eines Windows Server Failover-Clusters (WSFC) für SQL Server ist, dass Sie nur eine Kopie der Daten haben müssen, die von den Knoten des Clusters gemeinsam genutzt wird. Wenn Sie SQL Server Always On in einer Failover-Clusterinstanz (FCI) auf einem WSFC ausführen, können daher durch die Reduzierung des erforderlichen Speichers sofort Kosten eingespart werden.

NetApp Cloud Volumes-Dienst ist eine Cloud-Speicherlösung, mit der Sie leistungsstarke SQL Server-Arbeitslasten in Kombination mit Compute Engine-Instanzen ausführen können. Die SQL Server-Datenbank über SMB im Cloud Volumes-Dienst bietet eine sehr hohe Ausfallsicherheit zwischen den Google Cloud-Instanzen und dem Speicherdienst. Das transparente SMB-Failover ermöglicht Wartungsvorgänge im Cloud Volumes-Dienst, ohne die Konnektivität zu Serveranwendungen zu unterbrechen, die Daten auf SMB-Volumes speichern und darauf zugreifen. Zur Unterstützung des transparenten Failovers von SMB unterstützt der Cloud Volumes-Dienst die Option der Continuous Availability (CA)-Freigaben von SMB zur Verwendung mit SQL Server-Arbeitslasten. Dies bietet Leistungsverbesserungen, Skalierbarkeit und Kostenvorteile für einzelne Instanzen, Always On-Failover-Clusterinstanzen (AOFC) und Bereitstellungen von Always On-Verfügbarkeitsgruppen.

Diese Seite richtet sich an Administratoren des NetApp Cloud Volumes-Dienstes und von SQL Server-Datenbanken, die für die Bereitstellung von Microsoft SQL Server in Google Cloud verantwortlich sind. Dabei wird Folgendes vorausgesetzt:

  • Sie sind mit den verschiedenen Komponenten der Lösung vertraut.
  • Sie haben Active Directory bereits in Google Cloud bereitgestellt

Ziele

Mit dieser Anleitung können Sie die folgenden Ziele erreichen:

  • Volumes für den Cloud Volumes-Dienst für SQL Server erstellen
  • Always On-Failover-Cluster über SMB im Cloud Volumes-Dienst bereitstellen

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

Für diese Anleitung benötigen Sie ein Google Cloud-Projekt. Sie können ein neues Projekt erstellen oder ein vorhandenes Projekt auswählen:

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. 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.
  4. 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.
  5. Ein Google Cloud-Projekt und eine VPC mit Verbindung zu Ihren Active Directory-Domain-Controller.
  6. Achten Sie darauf, dass die NetApp Cloud Volumes API für Ihr Google Cloud-Projekt aktiviert ist.
  7. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

Projekt und Netzwerk vorbereiten

So bereiten Sie Ihr Google Cloud-Projekt und Virtual Private Cloud (VPC) für die Bereitstellung von SQL Server Always On-Verfügbarkeitsgruppen 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
    

    Ersetzen Sie dabei Folgendes:

    • 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 Standardregion fest:

    gcloud config set compute/region REGION
    

    Ersetzen Sie REGION durch die ID der Region, in der die Bereitstellung erfolgen soll.

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

SMB im Cloud Volumes-Dienst für SQL Server erstellen

Zum Erstellen eines Cloud Volumes-Dienst-Volumes müssen Sie eine Active Directory-Richtlinie, den Zugriff auf private Dienste, einen Speicherpool und ein Speicher-Volume erstellen.

  1. So erstellen Sie einen neuen privaten Dienstzugriff:

    1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

      Zum VPC-Netzwerk

    2. Klicken Sie auf den Namen des VPC-Netzwerks, das Sie verwenden möchten.

    3. Klicken Sie auf privaten Dienstzugriff und dann auf IP-Bereich zuweisen.

      1. Geben Sie einen Namen für den internen IP-Bereich ein.
      2. Wählen Sie „Automatisch“ aus und geben Sie für Präfixlänge den Wert 24 ein.
      3. Klicken Sie auf die Schaltfläche Zuweisen.
    4. Klicken Sie auf den Tab Private Verbindungen zu Diensten und gehen Sie so vor:

      1. Klicken Sie auf Verbindung erstellen.
      2. Wählen Sie den zuvor zugewiesenen IP-Bereich für das Drop-down-Menü „Zugewiesene Bereiche“ aus.
      3. Klicken Sie auf Verbinden.
  2. So erstellen Sie eine neue Active Directory-Richtlinie:

    1. Rufen Sie in der Google Cloud Console die Seite NetApp Volumes auf.

      Zu NetApp Volumes

    2. Klicken Sie im Navigationsbereich im Abschnitt Richtlinien auf Active Directory-Richtlinien.

    3. Klicken Sie auf die Schaltfläche Erstellen.

    4. Geben Sie einen Namen für die Active Directory-Richtlinie an.

    5. Wählen Sie unter Region die verfügbare Region aus, die der am nächsten ist, in der die SQL Server-Instanzen gehostet werden.

    6. Geben Sie im Abschnitt Active Directory-Verbindungsdetails die folgenden Informationen an:

      1. Name der Domain
      2. Active Directory-DNS-Serveradressen
      3. Active Directory-Websitename
      4. Name der Organisationseinheit
      5. NetBIOS-Namenspräfix
    7. Geben Sie im Abschnitt Active Directory-Anmeldedaten die Anmeldedaten für einen Nutzer ein, der Computer zur angegebenen Domain hinzufügen darf.

    8. Geben Sie im Abschnitt SMB-Einstellungen die Sicherungsoperatoren und Nutzer von Sicherheitsberechtigungen an, falls zutreffend.

    9. Klicken Sie auf Erstellen, um die Erstellung einer neuen Active Directory-Richtlinie abzuschließen.

  3. So erstellen Sie einen neuen Speicherpool:

    1. Klicken Sie im Navigationsbereich im Abschnitt Speicher auf Speicherpools.
    2. Klicken Sie auf die Schaltfläche Erstellen.
    3. Geben Sie einen Namen für den Speicherpool ein.
    4. Wählen Sie unter Standort die verfügbare Region aus, die der am nächsten ist, in der die SQL Server-Instanzen gehostet werden.
    5. Wählen Sie ein Service Level aus, das die erwartete Speicherleistung erfüllen würde.
    6. Geben Sie die Kapazität für den Speicherpool ein. Die Speicherpoolkapazität definiert die Gesamtspeicherkapazität, die für alle Volumes im Pool zugewiesen werden kann.
    7. Wählen Sie in der Liste Netzwerk die VPC aus, in der die SQL Server-Instanzen gehostet werden:
      1. Klicken Sie auf Verbindung einrichten.
      2. Wählen Sie den in den vorherigen Schritten reservierten IP-Adressbereich aus und klicken Sie auf Weiter.
      3. Klicken Sie auf Verbindung erstellen.
    8. Wählen Sie im Abschnitt Active Directory-Richtlinie die Option Active Directory-Richtlinie dem Speicherpool zuweisen und dann die im vorherigen Schritt erstellte Active Directory-Richtlinie aus.
    9. Klicken Sie auf die Schaltfläche Erstellen, um das Erstellen eines neuen Speicherpools abzuschließen.
  4. So erstellen Sie ein neues Speicher-Volume:

    1. Klicken Sie im Navigationsbereich im Abschnitt Speicher auf Volumes.
    2. Klicken Sie auf die Schaltfläche Erstellen.
    3. Geben Sie einen Namen für das Speicher-Volume an.
    4. Klicken Sie unter Speicherpooldetails auf Speicherpool auswählen, um den im vorherigen Schritt erstellten Speicherpool auszuwählen.
    5. Geben Sie im Abschnitt Volume-Details die folgenden Informationen an:
      1. Freigabename
      2. Volume-Kapazität
    6. Wählen Sie im Abschnitt Konfiguration für große Kapazität die Option SMB-Protokoll aus.
    7. Wählen Sie im Abschnitt Konfiguration für ausgewählte Protokolle die Option Unterstützung der CA-Freigabe für SQL Server, FSLogix aktivieren aus.
    8. Klicken Sie auf die Schaltfläche Erstellen, um die Erstellung eines neuen Speicher-Volumes abzuschließen.

Firewallregeln erstellen

Damit Clients eine Verbindung zu SQL Server herstellen können, müssen Sie die Kommunikation zwischen den Windows Server Failover Cluster-Knoten (WSFC) zulassen und um dem Load-Balancer die Ausführung von Systemdiagnosen zu erlauben, müssen Sie mehrere Firewallregeln erstellen. Verwenden Sie Netzwerk-Tags, um die Erstellung dieser Firewallregeln zu vereinfachen:

  • Der von Ihnen verwendete WSFC wird mit dem Tag wsfc-node gekennzeichnet.
  • Alle Server, einschließlich des Zeugen, werden mit dem Tag wsfc gekennzeichnet.

Führen Sie die folgenden Schritte aus, um Firewallregeln zu erstellen, 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:

    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 drei VM-Instanzen für den Failover-Cluster bereit.

Node-1 hostet das primäre Replikat der SQL Server-Datenbank und node-2 das sekundäre Replikat. Die beiden VM-Instanzen müssen:

  • Sich in derselben Region befinden, damit sie von einem internen Passthrough-Netzwerk-Load-Balancer aufgerufen werden können.
  • WSFC und SQL Server 2022 mit SQL Server-Premium-Image installiert haben.

  • Compute Engine-WSFC-Unterstützung aktiviert haben.

Für eine Tiebreak-Abstimmung und zur Erfüllung eines Quorums für das Failover-Szenario stellen Sie eine dritte VM-Instanz node-3 bereit, die als Dateifreigabezeuge verwendet wird.

  1. Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
  2. Erstellen Sie ein skript 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
    
    # Open firewall for SQL Server replication
    netsh advfirewall firewall add rule name="Allow SQL Server replication" dir=in action=allow protocol=TCP localport=5022
    
    EOF
    
  3. Erstellen Sie die VM-Instanzen. Fügen Sie auf den beiden VMs, die als WSFC-Knoten dienen, ein zusätzliches Datenlaufwerk hinzu und aktivieren Sie das Windows Server Failover Clustering. Setzen Sie dazu den Metadatenschlüssel enable-wsfc auf true:

    REGION=$(gcloud config get-value compute/region)
    PD_SIZE=200
    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-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 \
      --zone $REGION-b \
      --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" \
      --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"
    
  4. 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 einige 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 die VM-Instanz mit Ihrer Active Directory-Domain und starten Sie sie neu:

      Add-Computer -Domain DOMAIN -Restart
      

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

      Warten Sie, bis die VM-Instanz neu gestartet wurde.

Speicherberechtigungen zuweisen

Führen Sie die folgenden Schritte aus, um dem Cloud Volume-Speicher Berechtigungen zuzuweisen:

  1. Wählen Sie in der Google Cloud Console „Cloud Volumes“ und dann das soeben erstellte Volume aus.

    Cloud-Volume

  2. Stellen Sie mithilfe von Remote Desktop eine Verbindung zu node-1 her. Melden Sie sich mit Ihrem Domainnutzerkonto an.

  3. Öffnen Sie den Windows Explorer und klicken Sie mit der rechten Maustaste auf Dieser PC.

  4. Wählen Sie Netzwerklaufwerk zuordnen aus.

  5. Fügen Sie den kopierten SMB-Pfad in den Ordner ein.

    Cloud-Volume

  6. Deaktivieren Sie bei der Anmeldung die Option "Neu verbinden".

  7. Klicken Sie auf Beenden.

  8. Klicken Sie mit der rechten Maustaste auf das zugeordnete Netzlaufwerk und wählen Sie Eigenschaften aus.

    Cloud-Volume

  9. Klicken Sie auf dem Tab Sicherheit auf Bearbeiten.

  10. Entfernen Sie alle und fügen Sie das SQL Server-Installationsprogramm und die SQL Server-Dienstkonten mit uneingeschränkten Steuerungsberechtigungen hinzu.

    Cloud-Volume

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

Cluster-IP-Adressen reservieren

Reservieren Sie in Ihrer VPC zwei statische IP-Adressen, eine für die IP-Adresse des WSFC-Clusters und eine für den internen 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:

    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:

    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.

  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 'windows-fci$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'windows-fci$' `
      -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 VM-Instanzen sich mit der Domain verknüpfen kann:

    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members windows-fci$
    

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 den Microsoft ODBC-Treiber:

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

    Restart-Computer
    
  7. Warten Sie, bis die VM-Instanz neu gestartet wurde.

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 > windows-fci und gehen Sie so vor:

    1. Prüfen Sie, ob der aktuelle Hostserver auf node-1 eingestellt ist.

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

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

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

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

  6. Geben Sie auf der Seite Edition den Produktschlüssel ein, wählen Sie den Softwarelizenztyp aus und klicken Sie auf Next (Weiter).

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

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

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

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

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

  12. Auf der Seite Cluster-Ressourcengruppe können Sie die Qualifikationswarnungen ignorieren und auf Weiter klicken.

  13. Klicken Sie auf der Seite Cluster-Laufwerk auswählen auf Weiter.

  14. 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.
  15. 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 Passwort des Nutzers sql_server ein.
  16. Klicken Sie auf den Tab Sortierung und wählen Sie die Sortierung aus, die Sie verwenden möchten. Klicken Sie anschließend auf Weiter.

  17. Wählen Sie auf der Seite Datenbankmodul-Konfiguration die Option Aktuellen Nutzer hinzufügen aus, um den aktuellen Nutzer als SQL Server-Administrator zu kennzeichnen. Geben Sie auf dem Tab Datenverzeichnisse den SMB-Pfad in das Feld Datenstammverzeichnis ein und wählen Sie Weiter aus. Es wird ein Nachrichtenfenster angezeigt, in dem Sie aufgefordert werden, zu prüfen, ob das SQL Server-Dienstkonto die vollständige Berechtigung zur Freigabesteuerung hat. Wählen Sie zum Fortfahren Yes aus.

    Cloud-Volume

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

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

    REGION=$(gcloud config get-value compute/region)
    
    gcloud compute instance-groups unmanaged create wsfc-group-a \
      --zone $REGION-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-a \ 
      --zone $REGION-a --instances node-1
    
    gcloud compute instance-groups unmanaged create wsfc-group-b \
      --zone $REGION-b
    gcloud compute instance-groups unmanaged add-instances wsfc-group-b \ 
    --zone $REGION-b --instances 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 $REGION \
      --health-checks wsfc-healthcheck \
      --protocol tcp
    
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-a \
      --instance-group-zone $REGION-a \
      --region $REGION
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-b \
      --instance-group-zone $REGION-b \
      --region $REGION
    
  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 $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:

  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 einige 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 die VM-Instanz mit Ihrer Active Directory-Domain:

    Add-Computer -Domain DOMAIN
    

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

  9. Starten Sie die VM-Instanz neu.

    Restart-Computer
    

    Warten Sie, bis die VM-Instanz neu gestartet wurde.

Test machen

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

  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 -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, 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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.