SQL Server AlwaysOn-Verfügbarkeitsgruppen konfigurieren

Wenn Sie mehrere SQL Server Enterprise-Instanzen auf der Compute Engine ausführen, können Sie diese Instanzen so konfigurieren, dass Windows Server Failover Clustering und SQL Server AlwaysOn Availability Groups verwendet werden, um eine hohe Verfügbarkeit und eine Notfallwiederherstellung zu ermöglichen.

Diese Anleitung zeigt Ihnen, wie Sie ein Cluster von Instanzen mit SQL Server Enterprise mit den notwendigen Netzwerkeinstellungen erstellen und diese Instanzen so konfigurieren können, dass Windows Server Failover Clustering und SQL Server AlwaysOn Availability Groups verwendet werden. Sie können SQL Server Enterprise-Instanzen verwenden, die entweder mit öffentlichen SQL Server-Images oder mit Microsoft License Mobility erstellt wurden.

Voraussetzungen

In dieser Anleitung wird davon ausgegangen, dass Sie mit Folgendem vertraut sind:

VPC-Netzwerk einrichten

Erstellen Sie ein benutzerdefiniertes VPC-Netzwerk mit drei Subnetzen. Legen Sie dann die Firewallregeln fest, um den Datenverkehr zwischen internen virtuellen Maschinen zu ermöglichen. Sie können für diese Aufgabe bei Bedarf ein vorhandenes Netzwerk verwenden, aber es ist Best Prac­tice, die Systeme in verschiedene Netzwerke und Subnetze zu trennen. In dieser Anleitung wird davon ausgegangen, dass Sie die folgende VPC-Netzwerk- und Subnetzkonfiguration erstellen.

  1. Erstellen Sie ein VPC-Netzwerk im benutzerdefinierten Modus.

    gcloud compute networks create wsfcnet --subnet-mode custom
    
  2. Fügen Sie dem VPC-Netzwerk drei Subnetze hinzu:

    gcloud compute networks subnets create wsfcsubnet1 --network wsfcnet \
    --region us-central1 --range 10.0.0.0/24
    
    gcloud compute networks subnets create wsfcsubnet2 --network wsfcnet \
    --region us-central1 --range 10.1.0.0/24
    
    gcloud compute networks subnets create wsfcsubnet3 --network wsfcnet \
    --region us-central1 --range 10.2.0.0/24
    
  3. Erstellen Sie eine Firewallregel, die Traffic zwischen den Instanzen über interne IP-Adressen im neuen VPC-Netzwerk zulässt:

    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,10.1.0.0/24,10.2.0.0/24
    
  4. Erstellen Sie eine Firewallregel, die RDP-Verbindungen auf Port 3389 im VPC-Netzwerk zulässt:

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

Windows-Domänencontroller einrichten

Erstellen Sie einen Windows-Domänencontroller (Domaincontroller). In unserer Anleitung ist die Domain dbeng.com und der Name des Domain Controllers dc-windows unter der IP-Adresse 10.2.0.100. Der Domain Controller verwendet das Subnetz wsfcsubnet3.

  1. Erstellen Sie eine Instanz, die als Domaincontroller verwendet soll. Geben Sie für diese Anleitung einen kleinen n1-standard-2-Maschinentyp und das neueste Image aus der Image-Familie windows-2016 an.

    gcloud compute instances create dc-windows --machine-type n1-standard-2 \
    --boot-disk-type pd-ssd --image-project windows-cloud \
    --image-family windows-2016 --boot-disk-size 200GB \
    --zone us-central1-f --subnet wsfcsubnet3 --private-network-ip=10.2.0.100
    
  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 Instanz PowerShell als Administrator aus, um das PowerShell-Terminal 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. Legen Sie die folgenden Variablen fest:

    PS C:\> $DomainName = "dbeng.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";
    
  7. Installieren Sie die folgenden Active Directory-Tools:

    PS C:\> Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
    
    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
    
  8. Wenn die Instanz nach dem Erstellen der Domain nicht automatisch neu startet, starten Sie die Instanz manuell.

  9. Stellen Sie nach dem Neustart der Instanz über das Administrator-Konto die Verbindung zum neu erstellten Domainnamen wieder her. In dieser Anleitung ist es "dbeng.com".

  10. Erstellen Sie ein Domainkonto mit dem Namen sql_service. Dieses wird zum Ausführen von SQL Server verwendet:

    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 "sql_service" -Description "SQL Agent and SQL Admin account."  -Password $Password
      

Der Domaincontroller ist konfiguriert und Sie können die Verbindung zur Instanz dc-windows trennen. Als nächstes erstellen Sie die Instanzen für die Verfügbarkeitsgruppe.

Instanzen für Ihre Verfügbarkeitsgruppe einrichten

Erstellen Sie SQL Server-Instanzen für eine Verfügbarkeitsgruppe. Diese Instanzen verwenden die folgenden IP-Adresskonfigurationen mit Alias-IPs:

  • Instanzname: cluster-sql1
    • Interne IP-Adresse: 10.0.0.4
    • Windows Failoverclustername: cluster-ag
    • Failovercluster-IP-Adresse: 10.0.0.5 (Alias-IP)
    • Name der Verfügbarkeitsgruppe: cluster-listener
    • Listeneradresse der Verfügbarkeitsgruppe: 10.0.0.6 (Alias-IP)
  • Instanzname: cluster-sql2
    • Interne IP-Adresse: 10.1.0.4
    • Windows Failoverclustername: cluster-ag
    • Failovercluster-IP-Adresse: 10.1.0.5 (Alias-IP)
    • Name der Verfügbarkeitsgruppe: cluster-listener
    • Listeneradresse der Verfügbarkeitsgruppe: 10.1.0.6 (Alias-IP)

Erstellen Sie die SQL Server-Instanzen mithilfe von einer der folgenden Methoden:

Öffentliche SQL Server-Images

Erstellen Sie zwei Instanzen von öffentlichen SQL Server-Images. In diesem Beispiel nehmen wir die Instanznamen cluster-sql1 und cluster-sql2. Legen Sie für die Größe des Bootlaufwerks 200GB und den Maschinentyp n1-highmem-4 fest. SQL Server-Instanzen erfordern in der Regel mehr Computerressourcen als die Domain Controller-Instanz. Falls Sie später zusätzliche Computerressourcen benötigen, können Sie eine Änderung des Maschinentyps für diese Instanzen vornehmen. Wenn zusätzlicher Speicherplatz erforderlich ist, fügen Sie ein Laufwerk hinzu oder ändern die Größe des nichtflüchtigen Bootlaufwerks. In größeren Verfügbarkeitsgruppen können Sie mehrere Instanzen erstellen.

Fügen Sie außerdem das Flag --metadata sysprep-specialize-script-ps1 ein, um während des Erstellens einer Instanz einen PowerShell-Befehl auszuführen, der die Funktion Failover-Clustering installiert.

Erstellen Sie für dieses Beispiel zwei Instanzen mithilfe der folgenden Befehle:

gcloud compute instances create cluster-sql1 --machine-type n1-highmem-4 \
--boot-disk-type pd-ssd --boot-disk-size 200GB \
--image-project windows-sql-cloud --image-family sql-ent-2016-win-2016 \
--zone us-central1-f \
--network-interface "subnet=wsfcsubnet1,private-network-ip=10.0.0.4,aliases=10.0.0.5;10.0.0.6" \
--can-ip-forward --metadata sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"
gcloud compute instances create cluster-sql2 --machine-type n1-highmem-4 \
--boot-disk-type pd-ssd --boot-disk-size 200GB \
--image-project windows-sql-cloud --image-family sql-ent-2016-win-2016 \
--zone us-central1-f \
--network-interface "subnet=wsfcsubnet2,private-network-ip=10.1.0.4,aliases=10.1.0.5;10.1.0.6" \
--can-ip-forward --metadata sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"

Für größere Verfügbarkeitsgruppen können Sie zusätzliche Instanzen mit den entsprechenden IP-Adressen erstellen.

Bestehende Lizenzen

Wenn Sie eigene Lizenzen für SQL Server Enterprise basierend auf Microsoft License Mobility über Software Assurance verwenden möchten, erstellen Sie ein Windows-Image, bei dem --guestOSFeatures aktiviert ist. Installieren Sie SQL Server Enterprise dann später manuell.

  1. Erstellen Sie eine Windows Serverinstanz.
  2. Aktualisieren Sie auf dieser Instanz alle Komponenten auf die neuesten Versionen.
  3. Setzen Sie den Status der automatischen Löschfunktion für das Bootlaufwerk dieser Instanz auf false.
  4. Löschen Sie die Instanz.
  5. Erstellen Sie ein temporäres Laufwerk mit einem Windows Server-Standard-Image.

    gcloud compute disks create windows-2012-disk-new --size 200 \
    --zone us-central1-f --type pd-ssd --image-family windows-2012-r2 \
    --image-project windows-cloud
    
  6. Erstellen Sie vom neuen Laufwerk ein benutzerdefiniertes Windows Server-Image und aktivieren Sie dabei MULTI_IP_SUBNET im Parameter guestOSFeatures.

    gcloud beta compute images create windows-server-2012-r2-dc-new \
    --source-disk windows-2012-disk-new --source-disk-zone us-central1-f \
    --guest-os-features MULTI_IP_SUBNET
    
  7. Nachdem das Image erstellt wurde, löschen Sie das temporäre Laufwerk:

    gcloud compute disks delete windows-2012-disk-new --zone us-central1-f
    
  8. Verwenden Sie das benutzerdefinierte Image für das Erstellen der neuen SQL Server-Instanzen für Ihre Verfügbarkeitsgruppe. SQL Server-Instanzen benötigen in der Regel mehr Computing-Ressourcen als die Domänencontrollerinstanz. Legen Sie deshalb mindestens einen n1-highmem-4-Maschinentyp fest. Wenn Sie später zusätzliche Computing-Ressourcen benötigen, können Sie eine Änderung des Maschinentyps für diese Instanzen vornehmen. Wenn zusätzlicher Speicherplatz erforderlich ist, fügen Sie ein Laufwerk hinzu oder ändern die Größe des nichtflüchtigen Bootlaufwerks. In größeren Verfügbarkeitsgruppen können Sie mehrere Instanzen erstellen. Für dieses Beispiel legen Sie zwei Instanzen an:

    gcloud compute instances create cluster-sql1 --machine-type n1-highmem-4 \
    --boot-disk-type pd-ssd --boot-disk-size 200GB \
    --image windows-server-2012-r2-dc-new --zone us-central1-f \
    --subnet wsfcsubnet1 --private-network-ip=10.0.0.4 --can-ip-forward \
    --metadata sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"
    
    gcloud compute instances create cluster-sql2 --machine-type n1-highmem-4 \
    --boot-disk-type pd-ssd --boot-disk-size 200GB \
    --image windows-server-2012-r2-dc-new --zone us-central1-f \
    --subnet wsfcsubnet2 --private-network-ip=10.1.0.4 --can-ip-forward \
    --metadata sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"
    
  9. Installieren Sie auf jeder Instanz manuell SQL Server Enterprise.

Nachdem Sie die Instanzen erstellt haben, konfigurieren Sie sie so, dass sie als eine Verfügbarkeitsgruppe fungieren können.

  1. Verbinden Sie beide Instanzen mithilfe von RDP-Verbindungen.
  2. Legen Sie für beide Instanzen die Verwendung statischer IP-Adressen fest und geben Sie für die Netzmaske den Wert 255.255.0.0 an. Öffnen Sie ein PowerShell-Terminal als Administrator und setzen Sie die statischen IP-Adressen auf "Statisch". Diese Befehle können Ihre Remotedesktopverbindung beenden:

    • Instanz 1:

      PS C:\> netsh interface ip set address name=Ethernet static 10.0.0.4 255.255.0.0 10.0.0.1 1
      
      PS C:\> netsh interface ip set dns Ethernet static 10.2.0.100
      
      PS C:\> netsh advfirewall firewall add rule name="Open Port 5022 for Availability Groups" dir=in action=allow protocol=TCP localport=5022
      
      PS C:\> netsh advfirewall firewall add rule name="Open Port 1433 for SQL Server" dir=in action=allow protocol=TCP localport=1433
      
    • Instanz 2:

      PS C:\> netsh interface ip set address name=Ethernet static 10.1.0.4 255.255.0.0 10.1.0.1 1
      
      PS C:\> netsh interface ip set dns Ethernet static 10.2.0.100
      
      PS C:\> netsh advfirewall firewall add rule name="Open Port 5022 for Availability Groups" dir=in action=allow protocol=TCP localport=5022
      
      PS C:\> netsh advfirewall firewall add rule name="Open Port 1433 for SQL Server" dir=in action=allow protocol=TCP localport=1433
      
  3. Fügen Sie der Windows-Domain beide Instanzen hinzu. Öffnen Sie PowerShell als Administrator und führen Sie den folgenden Add-Computer-Befehl auf beiden Instanzen aus:

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

    Dieser Befehl fordert Sie auf, Ihre Anmeldedaten einzugeben. Wenn der Befehl ausgeführt wurde, startet die Instanz erneut.

  4. Stellen Sie die Verbindung zu den Instanzen mithilfe von RDP wieder her, um die SQL Server-Dienstkonten einzurichten:

    1. Öffnen Sie den SQL Server-Konfigurations-Manager.
    2. Wählen Sie den Tab mit den SQL Server-Diensten aus, klicken Sie mit der rechten Maustaste auf "SQL Server" und klicken Sie dann auf "Eigenschaften".
    3. Richten Sie das Konto sql_service ein und legen ein Passwort fest.

Die Instanzen werden nun für die Verfügbarkeitsgruppe erstellt. Als Nächstes konfigurieren Sie den Failovercluster-Manager.

Failovercluster-Manager konfigurieren

Aktivieren Sie das Failover-Clustering auf den Instanzen in der Verfügbarkeitsgruppe und konfigurieren Sie eine Instanz so, dass sie als Failovercluster-Manager fungiert. Aktivieren Sie "Hohe Verfügbarkeit mit AlwaysOn" für alle Instanzen der Gruppe.

  1. Verbinden Sie Ihre Instanzen noch einmal über RDP. Verwenden Sie dazu aber die Anmeldedaten des Domänenadministrators (Domainadministrator). In diesem Beispiel lautet die Domain dbeng und das Administratorkonto Administrator. Wenn Sie Chrome RDP für Google Cloud Platform verwenden, löschen Sie die vorhandenen RDP-Zertifikate für diese Adressen in der Liste "Zertifikate" im Menü "Optionen".

  2. Wählen Sie eine Instanz aus und konfigurieren Sie sie für eine Ausführung als Failovercluster-Manager.

    1. Öffnen Sie PowerShell als Administrator und legen Sie Variablen gemäß Ihrer Clusterumgebung fest. Geben Sie für dieses Beispiel die folgenden Variablen an:

      PS C:\> $node1 = "cluster-sql1"
      
      PS C:\> $node2 = "cluster-sql2"
      
      PS C:\> $nameWSFC = "cluster-dbclus" #Name of cluster
      
      PS C:\> $ipWSFC1 = "10.0.0.5" #IP address of cluster in subnet 1
      
      PS C:\> $ipWSFC2 = "10.1.0.5" #IP address of cluster in subnet 2
      
    2. Erstellen Sie den Failover-Cluster:

      PS C:\> New-Cluster -Name $nameWSFC -Node $node1, $node2 -NoStorage -StaticAddress $ipWSFC1, $ipWSFC2
      
    3. Aktivieren Sie AlwaysOn High Availability für beide Knoten im Cluster:

      PS C:\> Enable-SqlAlwaysOn -ServerInstance $node1 -Force
      
      PS C:\> Enable-SqlAlwaysOn -ServerInstance $node2 -Force
      
  3. Erstellen Sie in der sekundären Instanz, in der kein Cluster-Manager vorhanden ist, einen Sicherungsordner unter C:\SQLBackup. Geben Sie für das Konto sql_service den Ordner dann als \\cluster-sql2\SQLBackup mit Lese- und Schreibzugriff frei.

  4. Erstellen Sie auf beiden Instanzen die zwei Ordner C:\SQLData und C:\SQLLog. Verwenden Sie diese Ordner für die Datenbankdaten und Protokolldateien.

Der Failover Cluster-Manager ist fertig. Als nächstes erstellen Sie die Verfügbarkeitsgruppe.

Die Verfügbarkeitsgruppe erstellen

Erstellen Sie eine Testdatenbank und konfigurieren Sie sie so, dass sie mit einer neuen Verfügbarkeitsgruppe arbeitet. Alternativ können Sie stattdessen eine vorhandene Datenbank für die Verfügbarkeitsgruppe festlegen.

  1. Erstellen Sie, wenn Sie noch keine Datenbank konfiguriert haben, eine Testdatenbank. Führen Sie auf der Cluster-Manager-Instanz SQL Server Management Studio aus und erstellen Sie mit dem folgenden SQL-Befehl eine Testdatenbank:

    CREATE DATABASE TestDB
    ON PRIMARY (NAME = 'TestDB_Data', FILENAME='C:\SQLData\TestDB_Data.mdf', SIZE = 256MB, MAXSIZE = UNLIMITED, FILEGROWTH = 256MB )
    LOG ON (NAME = 'TestDB_Log', FILENAME='C:\SQLLog\TestDB_Log.ldf', SIZE = 256MB, MAXSIZE = UNLIMITED, FILEGROWTH = 256MB )
    GO
    USE [TestDB]
    Exec dbo.sp_changedbowner @loginame = 'sa', @map = false;
      ALTER DATABASE [TestDB] SET RECOVERY FULL;
      GO
      BACKUP DATABASE TestDB to disk = '\\cluster-sql2\SQLBackup\TestDB.bak' WITH INIT
    GO
    
  2. Führen Sie SQL Server Management Studio auf der Cluster-Manager-Instanz aus.

  3. Klicken Sie mit der rechten Maustaste auf Hohe Verfügbarkeit mit AlwaysOn und wählen Sie Assistent für neue Verfügbarkeitsgruppen aus.

  4. Legen Sie auf der Seite Namen angeben den Namen der Verfügbarkeitsgruppe fest. Geben Sie für dieses Beispiel cluster-ag an.

  5. Geben Sie auf der Seite Datenbanken auswählen an, welche Datenbank Sie replizieren möchten. Geben Sie für dieses Beispiel als Datenbank TestDB an.

  6. Legen Sie auf der Seite Replikate angeben beide Instanzen als Replikate mit automatischem Failover und synchronem Commit fest.

  7. Legen Sie auf der Seite Datensynchronisierung auswählen die Netzwerkfreigabe fest, um die Sicherung der Datenbank für die erste Synchronisierung beizubehalten. Geben Sie für dieses Beispiel \\cluster-sql2\SQLBackup an.

  8. Die Seite Validierung zeigt eine Warnung an, da kein Listener vorhanden ist. Diese Warnung können Sie ignorieren.

  9. Nachdem der Assistent abgeschlossen ist, klicken Sie mit der rechten Maustaste auf die neue Verfügbarkeitsgruppe und wählen Sie Listener hinzufügen aus.

  10. Geben Sie die Parameter für diesen Listener an:

    • Listener-DNS-Name: cluster-listener
    • Netzwerkport: 1433
    • Netzwerkmodus: Static IP
  11. Fügen Sie zwei Subnetz- und IP-Adressfelder hinzu. In diesem Beispiel verwenden Sie die folgenden Subnetz- und IP-Adresspaare:

    • 10.0.0.0/16 und 10.0.0.6
    • 10.1.0.0/16 und 10.1.0.6

Jetzt können Sie eine Verbindung zum SQL Server herstellen mit cluster-listener als Name für die SQL Server-Datenbank anstelle des Namens der Instanzen. Diese Verbindung zeigt auf die Instanz, die derzeit aktiv ist.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation