SQL Server-Failover-Cluster-Instanzen konfigurieren

Wenn Sie hohe Verfügbarkeit und Redundanz für Microsoft SQL Server in Compute Engine benötigen, können Sie permanent aktive (Always On) Failover-Clusterinstanzen (FCI) mit Storage Spaces Direct (S2D) konfigurieren.

Always On FCI stellt eine einzelne Microsoft SQL Server-Instanz bereit, die auf Windows Server Failover-Cluster-Knoten (WSFC) installiert ist. Nur ein Knoten im WSFC hostet die SQL-Instanz aktiv. Bei einem Failover überträgt der WSFC-Dienst die Inhaberschaft der auf der Instanz gespeicherten Ressourcen an einen bestimmten Failover-Knoten.

S2D stellt ein softwarebasiertes virtuelles SAN bereit, das Compute Engine VM-Datenlaufwerke zum Speichern der SQL-Datenbank verwenden kann.

Dieses Tutorial enthält ein Beispiel für die Einrichtung. Am Ende des Tutorials haben Sie eine Always On SQL Server-FCI mit S2D in Compute Engine erstellt.

Lernziele

  • Ein VPC-Netzwerk mit einem Windows Domain Controller einrichten
  • Zwei Windows SQL Server-VM-Instanzen als Clusterknoten erstellen
  • Failover-Cluster einschließlich Clusterspeicher einrichten
  • Internes Lastenausgleichsmodul einrichten, um den Traffic zu dem aktiven Knoten zu leiten
  • Failover-Vorgang testen, um zu überprüfen, ob der Cluster ordnungsgemäß ausgeführt wird

Kosten

In dieser Anleitung werden Compute Engine-Images verwendet, die Windows Server-Lizenzen enthalten. Das bedeutet, dass die Kosten für die Durcharbeitung dieser Anleitung sehr hoch sein können, wenn Sie die VMs weiter ausführen. Es empfiehlt sich, die VMs zu beenden, wenn Sie sie nicht verwenden.

Eine Schätzung der Kosten für die Durcharbeitung dieser Anleitung finden Sie im Preisrechner.

Vorbereitung

  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  2. Wählen Sie in der Cloud Console auf der Seite für die Projektauswahl ein Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Aktivieren Sie die Compute Engine API.

    Aktivieren Sie die API

  5. Starten Sie eine Instanz von Cloud Shell, in der Sie alle für diese Anleitung benötigten gcloud-Befehle ausführen können.
    Cloud Shell öffnen
  6. Aktivieren Sie zum Aktivieren von Systemdiagnosen den Agent wie in dieser Anleitung beschrieben.
  7. Überprüfen Sie Ihr Kontingent für nichtflüchtigen SSD-Speicher und fordern Sie bei Bedarf eine Erhöhung an. Sie benötigen 500 GB für dieses Tutorial.

Übersicht

Diese Beispieleinrichtung enthält die folgenden Komponenten und IP-Adressen:

  • Benutzerdefiniertes VPC-Netzwerk: 10.0.0.0/24
  • Active Directory Domain Controller: 10.0.0.3
  • Zwei WSFC-Knoten mit angeschlossenem S2D-Speicher
    • node-1: 10.0.0.4
    • node-2: 10.0.0.5
  • Windows Server-Failover-Cluster (für die Clusterverwaltung): 10.0.0.201
  • Interner Load-Balancer und SQL FCI-Listener (für SQL-Verbindungen): 10.0.0.200

Der Load-Balancer wartet auf Anfragen. Anhand von Systemdiagnosen erkennt es, welcher SQL Server-Knoten aktiv ist, und leitet den Traffic dorthin. Schlägt die Weiterleitung zum aktiven Knoten fehl, wird der FCI-Failover-Knoten aktiviert. Die Systemdiagnose empfängt das Signal des intakten Knotens und das Lastenausgleichsmodul leitet den Traffic um. Die auf S2D-Volumes gespeicherte Datenbank bleibt verfügbar.

Architekturdiagramm mit zwei Compute Engine-VMs in einem Failovercluster

VPC-Netzwerk einrichten

Sie können zwar für dieses Tutorial ein vorhandenes Netzwerk verwenden, es empfiehlt sich jedoch, Systeme in verschiedenen Netzwerken und Subnetzen mit Firewallregeln zu isolieren, die den Traffic beschränken.

  1. Erstellen Sie ein VPC-Netzwerk im benutzerdefinierten Modus, das Ihnen vollständige Kontrolle über die Subnetze und IP-Bereiche gibt.

    gcloud compute networks create wsfcnet --subnet-mode custom
    
  2. Fügen Sie das Subnetz wsfc-subnet1 hinzu, das alle VMs aus dieser Anleitung enthält.

    gcloud compute networks subnets create wsfc-subnet1 \
        --network wsfcnet \
        --region us-central1 \
        --range 10.0.0.0/24
    
  3. Erstellen Sie eine Firewallregel, um Traffic zwischen den VMs in diesem Netzwerk zu erlauben.

    gcloud compute firewall-rules create allow-internal-ports \
        --network wsfcnet \
        --allow tcp:1-65535,udp:1-65535,icmp \
        --source-ranges 10.0.0.0/24
    
  4. Erstellen Sie eine Firewallregel, um eingehenden Traffic für RDP auf Port 3389 zuzulassen. Beachten Sie, dass Sie tcp:3389 für alle IP-Adressen (0.0.0.0/0) öffnen. In einer Produktionsumgebung würden Sie den Zugriff auf genehmigte IP-Adressen beschränken.

    gcloud compute firewall-rules create allow-rdp \
        --network wsfcnet \
        --allow tcp:3389 \
        --source-ranges 0.0.0.0/0
    

Windows Domain Controller erstellen und konfigurieren

Eine Active Directory Domain wird für Domain Name Services sowie für die Funktionen von Windows Failover Clustering und Storage Spaces Direct verwendet, die Sie für dieses Tutorial benötigen. Die Verwendung des AD Domain Controllers innerhalb derselben VPC ist nicht zwingend erforderlich und dient hier lediglich der Vereinfachung.

In dieser Anleitung ist die Domain gontoso.com. Der Name der Domain Controller-VM lautet dc-windows (und der Name des Windows-Computers entspricht standardmäßig dem VM-Namen dc-windows). Die VM wird in unserem Subnetz bei 10.0.0.3 erstellt.

  1. Erstellen Sie eine VM, die als Domain Controller verwendet werden soll. Sie können einen beliebigen Maschinentyp und die von Ihnen benötigte Windows Server-Version festlegen. Verwenden Sie für dieses Beispiel jedoch folgende Parameter:

    gcloud compute instances create "dc-windows" \
        --zone "us-central1-a" \
        --machine-type "n1-standard-2" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.3" \
        --can-ip-forward \
        --image-family "windows-2016" \
        --image-project "windows-cloud" \
        --boot-disk-size "200" \
        --boot-disk-type "pd-standard" \
        --boot-disk-device-name "dc-windows"
    
  2. Legen Sie ein Passwort fest, damit Sie über ein lokales Konto eine Verbindung zur Domaincontroller-VM herstellen können. Notieren Sie Nutzernamen und Passwort.

  3. Stellen Sie über RDP mit dem Nutzernamen und dem Passwort Ihres lokalen Kontos eine Verbindung zur Domaincontroller-VM her.

  4. Führen Sie auf der VM PowerShell als Administrator aus, um eine erweiterte PowerShell-Eingabeaufforderung zu öffnen.

  5. Richten Sie einen Nutzer mit Administratorrechten ein.

    1. Führen Sie den folgenden Befehl aus und geben Sie ein Passwort ein, das Sie mit dem Administratorkonto verwenden werden.

      PS C:\> $Password = Read-Host -AsSecureString
      

      Notieren Sie sich das eingegebene Passwort. Sie werden dieses Passwort für das Administratorkonto verwenden.

    2. Legen Sie das Passwort für das Administratorkonto fest.

      PS C:\> Set-LocalUser -Name Administrator -Password $Password
      
    3. Aktivieren Sie das Administratorkonto.

      PS C:\> Enable-LocalUser -Name Administrator
      
  6. Richten Sie ein SQL Server-Dienstkonto ein, das Sie als SQL Agent- und als SQL Admin-Konto verwenden.

    1. Geben Sie ein sicheres Passwort für die Verwendung mit dem SQL Server-Dienstkonto ein.

      PS C:\> $Password = Read-Host -AsSecureString
      

      Notieren Sie sich das eingegebene Passwort. Sie werden es für das SQL Server-Dienstkonto verwenden.

    2. Erstellen Sie das SQL Server-Dienstkonto und legen Sie dessen Passwort fest.

      PS C:\> New-LocalUser -Name "service_account" -Description "SQL Agent and SQL Admin account."  -Password $Password
      
  7. Melden Sie sich ab und stellen Sie die Verbindung zur Domain Controller-VM über RDP mit dem Administratorkonto und dem Passwort neu her.

  8. Legen Sie in einer PowerShell mit erweiterten Rechten die folgenden Variablen fest, die zum Konfigurieren der Active Directory-Gesamtstruktur verwendet werden.

    PS C:\> $DomainName = "gontoso.com";
    PS C:\> $DomainMode = "Win2012R2";
    PS C:\> $ForestMode = "Win2012R2";
    PS C:\> $DatabasePath = "C:\Windows\NTDS";
    PS C:\> $LogPath = "C:\Windows\NTDS";
    PS C:\> $SysvolPath = "C:\Windows\SYSVOL";
    
  9. Installieren Sie Active Directory-Dienste und -Tools.

    PS C:\> Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
    
    Success Restart Needed Exit Code      Feature Result
    ------- -------------- ---------      --------------
    True    No             Success        {Active Directory Domain Services, Group P...
    
    
  10. Installieren und konfigurieren Sie die Active Directory-Gesamtstruktur. Mit dem folgenden Befehl werden Sie aufgefordert, Anmeldedaten einzugeben. Verwenden Sie den Nutzernamen Administrator und das Passwort, die Sie im vorherigen Schritt erstellt haben.

    PS C:\> Install-ADDSForest -CreateDnsDelegation:$false -DatabasePath $DatabasePath -LogPath $LogPath -SysvolPath $SysvolPath -DomainName $DomainName -DomainMode $DomainMode -ForestMode $ForestMode -InstallDNS:$true -NoRebootOnCompletion:$false -SafeModeAdministratorPassword ((Get-Credential).Password) -Force:$true;
    
    cmdlet Get-Credential at command pipeline position 1
    Supply values for the following parameters:
    Credential
    ...
    
    

    Die VM wird neu gestartet.

  11. Nachdem die VM neu gestartet wurde, stellen Sie sie noch einmal eine Verbindung über RDP her. Verwenden Sie dazu die ursprünglichen Anmeldedaten Ihres lokalen Kontos.

Cluster-VMs und Datenlaufwerke erstellen

Erstellen Sie zwei SQL Server-VMs mit zusätzlichen Datenlaufwerken. Eine VM dient als aktiver FCI-Knoten, die andere als Failover-Knoten. Die zusätzlichen Laufwerke dienen als S2D-Volumes.

Jede SQL Server-VM muss die folgenden Anforderungen erfüllen:

  • Sie wurde im Subnetz wsfc-subnet1 erstellt, das Sie zuvor definiert haben.
  • Sie hat eine private IP-Adresse im Subnetzbereich 10.0.0.0/24.
  • Die Windows Server-Failover-Cluster-Funktion ist installiert.
  • Der Compute Engine-WSFC-Agent, der den aktiven Knoten im Failovercluster überwachen kann, ist aktiviert.
  1. Erstellen Sie in der Cloud Shell zwei SQL Server-VMs mit zusätzlichen Datenlaufwerken. Die Laufwerke werden als S2D- und Cache-Volumes verwendet.

    gcloud compute instances create "node-1" \
        --zone "us-central1-f" \
        --machine-type "n1-highmem-4" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.4" \
        --can-ip-forward \
        --image-family "sql-ent-2016-win-2016" \
        --image-project "windows-sql-cloud" \
        --boot-disk-size "50" \
        --boot-disk-type "pd-ssd" \
        --boot-disk-device-name "node-1" \
        --create-disk=name=node-1-datadisk-1,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-2,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-3,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-4,size=50,type=pd-ssd,auto-delete=no \
        --metadata enable-wsfc=true,sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"
    
    gcloud compute instances create "node-2" \
        --zone "us-central1-a" \
        --machine-type "n1-highmem-4" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.5" \
        --can-ip-forward \
        --image-family "sql-ent-2016-win-2016" \
        --image-project "windows-sql-cloud" \
        --boot-disk-size "50" \
        --boot-disk-type "pd-ssd" \
        --boot-disk-device-name "node-2" \
        --create-disk=name=node-2-datadisk-1,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-2,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-3,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-4,size=50,type=pd-ssd,auto-delete=no \
        --metadata enable-wsfc=true,sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"
      
  2. Stellen Sie optional über RDP eine Verbindung zu jedem Knoten her und überprüfen Sie in einer erweiterten PowerShell, ob die Failover-Cluster-Funktion aktiviert ist.

    PS C:> Get-WindowsFeature Failover-Clustering
    Display Name                                            Name                       Install State
    ------------                                            ----                       -------------
    [X] Failover Clustering                                 Failover-Clustering            Installed

Netzwerk der Cluster-VMs konfigurieren

  1. Konfigurieren Sie den ersten Knoten.

    1. Erstellen Sie ein Passwort für node-1. Notieren Sie Nutzernamen und Passwort.

    2. Stellen Sie über RDP eine Verbindung zu node-1 her.

    3. Öffnen Sie eine PowerShell mit erweiterten Rechten.

    4. Fügen Sie eine Firewallregel hinzu, um einen Port für den Systemdiagnosedienst zu öffnen. In dieser Anleitung wird tcp:59997 verwendet. Sie können einen anderen Port auswählen, der jedoch mit dem Port der Systemdiagnose übereinstimmen muss, den Sie später festlegen. Der Systemdiagnoseprozess sendet regelmäßig Pings an die Agents auf jedem Clusterknoten, um ihre Verfügbarkeit zu ermitteln.

      PS C:\> netsh advfirewall firewall add rule name="Open port for Health Check" dir=in action=allow protocol=TCP localport=59997
      
    5. Fügen Sie eine Firewallregel hinzu, mit der ein Port für die SQL Server-Instanz geöffnet wird, die in der Regel über tcp:1433 ausgeführt wird.

      PS C:\> netsh advfirewall firewall add rule name="Open SQL Server port" dir=in action=allow protocol=TCP localport=1433
      
    6. Legen Sie das DNS auf den Domain Controller fest.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    7. Aktualisieren Sie den Knoten so, dass er eine statische IP-Adresse verwendet, und legen Sie die Netzmaske fest.

      PS C:\> netsh interface ip set address name=Ethernet static 10.0.0.4 255.255.0.0 10.0.0.1 1
      

      Sie werden von der VM getrennt. Bauen Sie mit Ihrem lokalen Nutzernamen und Passwort über RDP die Verbindung neu auf.

    8. Fügen Sie den Knoten zu der Active Directory Domain hinzu, die Sie zuvor erstellt haben.

      PS C:\> Add-Computer -DomainName gontoso.com -Restart -Force -Credential gontoso.com\Administrator
      

      Sie werden aufgefordert, Anmeldedaten einzugeben. Verwenden Sie den zuvor beim Konfigurieren der Domain Controller-VM festgelegten Nutzernamen und das Passwort des Administrators.

      Der Computer wird neu gestartet.

  2. Konfigurieren Sie den zweiten Knoten.

    1. Erstellen Sie ein Passwort für node-2. Notieren Sie Nutzernamen und Passwort.

    2. Stellen Sie über RDP eine Verbindung zu node-2 her.

    3. Öffnen Sie eine PowerShell mit erweiterten Rechten.

    4. Fügen Sie eine Firewallregel hinzu, um einen Port für die Systemdiagnose zu öffnen. Dieser Port muss mit dem Port der Systemdiagnose übereinstimmen, den Sie später festlegen.

      PS C:\> netsh advfirewall firewall add rule name="Open port for Health Check" dir=in action=allow protocol=TCP localport=59997
      
    5. Fügen Sie eine Firewallregel hinzu, mit der ein Port für die SQL Server-Instanz geöffnet wird, die in der Regel über tcp:1433 ausgeführt wird.

      PS C:\> netsh advfirewall firewall add rule name="Open SQL Server port" dir=in action=allow protocol=TCP localport=1433
      
    6. Legen Sie das DNS auf den Domain Controller fest.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    7. Aktualisieren Sie den Knoten so, dass er eine statische IP-Adresse verwendet, und legen Sie die Netzmaske fest.

      PS C:\> netsh interface ip set address name=Ethernet static 10.0.0.5 255.255.0.0 10.0.0.1 1
      

      Sie werden von der VM getrennt. Bauen Sie mit Ihrem lokalen Nutzernamen und Passwort über RDP die Verbindung neu auf.

    8. Fügen Sie den Knoten zu der Active Directory Domain hinzu, die Sie zuvor erstellt haben.

      PS C:\> Add-Computer -DomainName gontoso.com -Restart -Force -Credential gontoso.com\Administrator
      

      Sie werden aufgefordert, Anmeldedaten einzugeben. Verwenden Sie den zuvor beim Konfigurieren der Domain Controller-VM festgelegten Nutzernamen und das Passwort des Administrators.

      Der Computer wird neu gestartet.

Dateifreigabenzeuge erstellen

Wenn Sie für das Failover-Szenario eine ausschlaggebende Priorität bereitstellen und ein Quorum erreichen möchten, können Sie einen Dateifreigabenzeugen hinzufügen. Für diese Anleitung erstellen Sie den Dateifreigabenzeugen in der Domain Controller-VM. In einer Produktionsumgebung würden Sie den Zeugen an einer anderen Stelle erstellen.

  1. Stellen Sie mit dem Administratorkonto über RDP eine Verbindung zur Domain-Controller-VM dc-windows her.

  2. Öffnen Sie eine PowerShell mit erweiterten Rechten.

  3. Erstellen Sie für den Dateifreigabenzeugen ein Verzeichnis.

    PS C:\> New-Item "C:\QWitness" –type directory
    
  4. Geben Sie das Verzeichnis frei.

    PS C:\> New-SmbShare -Name "QWitness" -Path "C:\QWitness" -Description "SQL File Share Witness" -FullAccess "gontoso.com\Administrator", "gontoso.com\node-1$", "gontoso.com\node-2$"
    
  5. Stellen Sie optional über RDP als gontoso.com\Administrator eine Verbindung zu einem der Knoten her und prüfen Sie, ob Sie auf das freigegebene Verzeichnis zugreifen können.

    PS C:\> dir \\dc-windows\QWitness
    

Internes Load-Balancing-Modul erstellen

Ein internes Lastenausgleichsmodul stellt für den SQL Server eine einzelne IP-Adresse bereit. Das Lastenausgleichsmodul überwacht Anfragen und leitet den Netzwerk-Traffic an den aktiven Clusterknoten weiter. Es erkennt, welcher der aktive Knoten ist, da an allen Knoten die Systemdiagnose ausgeführt wird. Nur der aktive Knoten antwortet und wird somit als intakt erkannt. Bei Ausfall des aktiven Knotens wird der SQL FCI-Failover-Knoten aktiviert. Die Systemdiagnose empfängt das Signal und der Traffic wird dorthin umgeleitet.

  1. Erstellen Sie zwei Instanzgruppen und fügen Sie jeder Gruppe jeweils einen SQL Server-Knoten hinzu. Diese Instanzgruppen arbeiten als Back-Ends, zu denen das Load-Balancing-Modul den Traffic leiten kann.

    gcloud compute instance-groups unmanaged create wsfc-group-f --zone us-central1-f
    gcloud compute instance-groups unmanaged add-instances wsfc-group-f --instances node-1 --zone us-central1-f
    
    gcloud compute instance-groups unmanaged create wsfc-group-a --zone us-central1-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-a --instances node-2 --zone us-central1-a
    
  2. Erstellen Sie eine Systemdiagnose, damit der Load-Balancer den aktiven Knoten ermitteln kann.

    gcloud compute health-checks create tcp sql-healthcheck \
        --check-interval="2s" \
        --healthy-threshold=1 \
        --unhealthy-threshold=2 \
        --port=59997 \
        --request=10.0.0.200 \
        --timeout="1s"
    
  3. Fügen Sie eine Firewallregel hinzu, mit der die Systemdiagnose zugelassen wird.

    gcloud compute firewall-rules create allow-health-check \
        --network wsfcnet \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --allow tcp
    
  4. Erstellen Sie einen Back-End-Dienst und fügen Sie die beiden Back-End-Instanzgruppen hinzu.

    gcloud compute backend-services create wsfcbackend \
        --load-balancing-scheme internal \
        --region us-central1 \
        --health-checks sql-healthcheck \
        --protocol tcp
    
    gcloud compute backend-services add-backend wsfcbackend \
        --instance-group wsfc-group-a \
        --instance-group-zone us-central1-a \
        --region us-central1
    
    gcloud compute backend-services add-backend wsfcbackend \
        --instance-group wsfc-group-f \
        --instance-group-zone us-central1-f \
        --region us-central1
    
  5. Erstellen Sie einen internen Load-Balancer, der Anfragen an den aktiven Knoten der SQL-FCI weiterleitet. Die FCI wird später erstellt und so konfiguriert, dass sie Port 10.0.0.200 überwacht.

    gcloud compute forwarding-rules create wsfc-forwarding-rule \
        --load-balancing-scheme internal \
        --ports 1433 \
        --network wsfcnet \
        --subnet wsfc-subnet1 \
        --region us-central1 \
        --backend-service wsfcbackend \
        --address 10.0.0.200
    

Windows-Failover-Cluster erstellen

  1. Verbinden Sie sich über RDP noch einmal als gontoso.com\Administrator mit node-1. Möglicherweise müssen Sie vorherige Zertifikate löschen, um die Verbindung wiederherzustellen.

  2. Öffnen Sie eine PowerShell mit erweiterten Rechten.

  3. Erstellen Sie den Cluster.

    PS C:\> New-Cluster -Name windows-fci -Node node-1, node-2 -StaticAddress 10.0.0.201 -NoStorage
    
    PS C:\> Set-ClusterQuorum -FileShareWitness \\dc-windows\QWitness
    
  4. Testen Sie den Cluster. Sie werden einige Warnungen sehen, die ignoriert werden können.

    PS C:\> Test-Cluster
    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).
    Test report file path: C:\Users\Administrator\AppData\Local\Temp\Validation Report 2018.05.01 At 19.25.01.htm
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    -a----         5/1/2018   7:26 PM         747166 Validation Report 2018.05.01 At 19.25.01.htm
    
    

    Sie können auch die Cluster Admin-GUI starten und cluadmin.msc ausführen, um den Zustand des Clusters zu prüfen.

Storage Spaces Direct aktivieren

  1. Stellen Sie über RDP eine Verbindung zu node-1 oder node-2 her und öffnen Sie eine PowerShell mit erweiterten Rechten.

  2. Aktivieren Sie Storage Spaces Direct.

    PS C:\> Enable-ClusterS2D
    
    Confirm
    Are you sure you want to perform this action?
    Performing operation 'Enable Cluster Storage Spaces Direct' on Target 'windows-fci'.
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
    WARNING: 2018/05/01-19:36:41.315 Node node-1: No disks found to be used for cache
    WARNING: 2018/05/01-19:36:41.330 Node node-2: No disks found to be used for cache
    WARNING: 2018/05/01-19:36:41.362 C:\Windows\Cluster\Reports\Enable-ClusterS2D on 2018.05.01-19.36.41.362.htm
    
    

    Übernehmen Sie den Standardwert, wenn Sie zur Bestätigung aufgefordert werden. Sie sehen dann einige Warnungen, die Sie ignorieren können.

    • Optional: Wenn Sie eine bessere Laufwerksleistung wünschen, können Sie den VMs Ihres Clusters zusätzlich zu den nichtflüchtigen SSD-Standardspeichern 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 den folgenden Befehl aus, um S2D mit Caching zu aktivieren:

      PS C:\> Enable-ClusterS2D -CacheDeviceModel "EphemeralDisk"
      
    • Für einen besseren Lesedurchsatz können Sie im Speichercache auch Cluster Shared Volume (CSV) aktivieren:

      PS C:\> (Get-Cluster).BlockCacheSize = 2048
      
  3. Da S2D für die Verwaltung 2 GB pro Volume benötigt und pro Knoten 4 Volumes mit jeweils 50 GB vorhanden sind, definieren Sie den Speicherpool und legen Sie die Größe auf 192 GB fest.

    PS C:\> New-Volume -StoragePoolFriendlyName S2D* -FriendlyName VDisk01 -FileSystem CSVFS_REFS -Size 192GB
    
  4. Achten Sie darauf, dass für das Speicher-Volume Lese-/Schreibmodus eingestellt ist.

    PS C:\> dir C:\ClusterStorage\Volume1\ | Get-ACL
    
    Directory: C:\ClusterStorage\Volume1
    
    Path                Owner                  Access
    ----                -----                  ------
    MSSQL13.MSSQLSERVER BUILTIN\Administrators BUILTIN\Administrators Allow  FullControl...
    
    

Mit FCI hohe Verfügbarkeit für den SQL Server konfigurieren

  1. Entfernen Sie die SQL Server-Standardinstanz vom ersten Knoten. Sie werden sie später durch eine neue FCI-Konfiguration ersetzen.

    1. Verbinden Sie sich über RDP als gontoso.com\Administrator mit node-1.

    2. Öffnen Sie eine PowerShell mit erweiterten Rechten.

    3. Entfernen Sie die SQL Server-Standardinstanz.

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. Starten Sie die VM neu.

      PS C:\> shutdown /r
      
  2. Entfernen Sie die SQL Server-Standardinstanz vom zweiten Knoten. Sie werden sie später durch eine neue FCI-Konfiguration ersetzen.

    1. Melden Sie sich über RDP als gontoso.com\Administrator bei node-2 an.

    2. Öffnen Sie eine PowerShell mit erweiterten Rechten.

    3. Entfernen Sie die SQL Server-Standardinstanz.

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. Starten Sie die VM neu.

      PS C:\> shutdown /r
      
  3. Installieren Sie SQL Server mit FCI auf dem ersten Knoten neu.

    1. Melden Sie sich über RDP als gontoso\Administrator bei node-1 an.

    2. Öffnen Sie einen Texteditor, z. B. Notepad.

    3. Kopieren Sie den Inhalt der Konfigurationsdatei fci_install_master_node.ini in den Texteditor auf node-1. Zeilenumbrüche werden möglicherweise nicht beibehalten, aber die Konfiguration funktioniert trotzdem.

    4. Aktualisieren Sie die Konfigurationsdatei mit Ihrem Passwort gontoso.com\service_account. Das Passwort muss an zwei Stellen aktualisiert werden: AGTSVCPASSWORD und SQLSVCPASSWORD. Suchen Sie changeme und ersetzen Sie es durch das von Ihnen definierte Passwort. Speichern Sie die Datei als Nur-Text-Datei mit dem Dateinamen C:\fci_install_master_node.ini.

    5. Öffnen Sie eine PowerShell mit erweiterten Rechten und installieren Sie den SQL Server mithilfe der Konfigurationsdatei.

      PS C:\> C:\sql_server_install\Setup.exe /CONFIGURATIONFILE=C:\fci_install_master_node.ini
      
  4. Installieren Sie SQL Server mit FCI auf dem zweiten Knoten neu.

    1. Melden Sie sich über RDP als gontoso\Administrator bei node-2 an.

    2. Öffnen Sie einen Texteditor, z. B. Notepad.

    3. Kopieren Sie den Inhalt der Konfigurationsdatei fci_add_node.ini in den Texteditor auf node-1.

    4. Aktualisieren Sie die Konfigurationsdatei mit Ihrem Passwort gontoso.com\service_account. Das Passwort muss an zwei Stellen aktualisiert werden: AGTSVCPASSWORD und SQLSVCPASSWORD. Suchen Sie changeme und ersetzen Sie es durch das von Ihnen definierte Passwort. Speichern Sie die Datei als Nur-Text-Datei mit dem Dateinamen C:\fci_add_node.ini.

    5. Öffnen Sie eine PowerShell mit erweiterten Rechten und installieren Sie den SQL Server.

      PS C:\> C:\sql_server_install\Setup.exe /CONFIGURATIONFILE=C:\fci_add_node.ini
      

Cluster für die Systemdiagnose konfigurieren

  1. Verbinden Sie sich über RDP noch einmal als gontoso.com\Administrator mit node-1.

  2. Führen Sie das folgende PowerShell-Skript in einer PowerShell mit erweiterten Rechten aus, damit der Windows-Failovercluster auf den Systemdiagnosedienst reagiert:

    $cluster_network_name = 'Cluster Network 1'
    $ip_resource_name = 'SQL IP Address 1 (SQL2016FCI)'
    $load_balancer_ip = '10.0.0.200'
    [int]$health_check_port = 59997
    Get-ClusterResource $ip_resource_name |
      Set-ClusterParameter -Multiple @{ 'Address'=$load_balancer_ip;
                                        'ProbePort'=$health_check_port;
                                        'SubnetMask'='255.255.255.255';
                                        'Network'=$cluster_network_name;
                                        'EnableDhcp'=0; }
    
  3. Starten Sie die Clusterressource neu:

    Stop-ClusterResource $ip_resource_name;
    Start-ClusterResource $ip_resource_name
    
  4. Starten Sie die Clustergruppe neu:

    Stop-ClusterGroup "SQL Server (MSSQLSERVER)";
    Start-ClusterGroup "SQL Server (MSSQLSERVER)";
    

Failover-Szenario testen

Client vorbereiten

  1. Erstellen Sie in Cloud Shell eine neue VM, die als SQL-Client dient.

    gcloud compute instances create "sqlclient-1" \
    --zone "us-central1-a" \
    --machine-type "n1-standard-2" \
    --subnet "wsfc-subnet1" \
    --private-network-ip "10.0.0.10" \
    --can-ip-forward \
    --image-family "sql-ent-2016-win-2016" \
    --image-project "windows-sql-cloud" \
    --boot-disk-size "200" \
    --boot-disk-type "pd-standard" \
    --boot-disk-device-name "sqlclient-1"
    
  2. Verbinden Sie sich über RDP mit sqlclient-1.

  3. Öffnen Sie eine PowerShell mit erweiterten Rechten.

  4. Konfigurieren Sie den Client.

    1. Legen Sie das DNS auf den Domain Controller fest.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    2. Fügen Sie den Knoten zu der Active Directory Domain hinzu, die Sie zuvor erstellt haben.

      PS C:\> Add-Computer -DomainName gontoso.com -Restart -Force -Credential gontoso.com\Administrator
      

      Sie werden aufgefordert, Anmeldedaten einzugeben. Verwenden Sie den zuvor beim Konfigurieren der Domain Controller-VM festgelegten Nutzernamen und das Passwort des Administrators.

      Der Computer wird neu gestartet.

    3. Stellen Sie mit dem Administratorkonto über RDP eine neue Verbindung her.

    4. Fügen Sie der lokalen Administratorgruppe gontoso.com\service_account hinzu.

      PS C:\> Add-LocalGroupMember -Group "Administrators" -Member "gontoso.com\service_account"
      
    5. Melden Sie sich ab.

      PS C:\> logoff
      

Testen

  1. Melden Sie sich über RDP mit dem Nutzernamen gontoso.com\service_account und dem Passwort noch einmal bei sqlclient-1 an.

  2. Führen Sie in einer PowerShell eine Testabfrage an der Tabelle dm_os_cluster_nodes des Systems aus.

    PS C:\> & "c:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S 10.0.0.200 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    
    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.

  3. Fahren Sie in Cloud Shell die VM node-1 herunter, um das Failover-Szenario zu testen.

    gcloud compute instances stop node-1 --zone us-central1-f
    
  4. Führen Sie auf der VM sqlclient-1 die Testabfrage noch einmal aus.

    PS C:\> & "c:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S 10.0.0.200 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    
    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.

Einschränkungen

  • Storage Spaces Direct (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

So vermeiden Sie, dass Ihrem Google Cloud Platform-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:

Nachdem Sie die Anleitung für SQL Server-FCI abgeschlossen haben, können Sie die in der Google Cloud erstellten Ressourcen bereinigen, damit sie keine kostenpflichtigen Kontingente verbrauchen. 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 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 Beenden, um das Projekt zu löschen.

Instanzen löschen

So löschen Sie eine Compute Engine-Instanz:

  1. Öffnen Sie in der Cloud Console die Seite VM-Instanzen.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf das Kästchen für die Instanz, die Sie löschen möchten.
  3. Klicken Sie auf Löschen , um die Instanz zu löschen.

Nichtflüchtige Speicher löschen

So löschen Sie nichtflüchtige Speicher:

  1. Rufen Sie in der Cloud Console die Seite "Laufwerke" auf.

    Zur Seite "Laufwerke"

  2. Wählen Sie das Kästchen neben dem zu löschenden Laufwerk aus.

  3. Klicken Sie oben auf der Seite auf Löschen.