Freigeben über


Konfigurieren einer Verfügbarkeitsgruppe für eine Arbeitsgruppe

Gilt für:SQL Server auf Azure-VMs

In diesem Artikel werden die erforderlichen Schritte zum Erstellen eines domänenunabhängigen Active Directory-Clusters mit einer Always On-Verfügbarkeitsgruppe erläutert. Dies wird auch als Arbeitsgruppencluster bezeichnet. Dieser Artikel konzentriert sich auf die relevanten Schritte für das Vorbereiten und Konfigurieren der Arbeitsgruppe und der Verfügbarkeitsgruppe. Schritte, die in anderen Artikeln behandelt werden, wie z. B. das Erstellen des Clusters oder das Bereitstellen der Verfügbarkeitsgruppe, werden hier übergangen.

Voraussetzungen

Zum Konfigurieren einer Verfügbarkeitsgruppe für eine Arbeitsgruppe benötigen Sie Folgendes:

  • Mindestens zwei virtuelle Computer mit Windows Server 2016 (oder höher), auf denen SQL Server 2016 (oder höher) ausgeführt wird und die mit statischen IP-Adressen in derselben Verfügbarkeitsgruppe oder unterschiedlichen Verfügbarkeitszonen bereitgestellt werden.
  • Ein lokales Netzwerk mit mindestens vier freien IP-Adressen im Subnetz.
  • Ein Konto auf jedem Computer in der Administratorengruppe, das auch über Systemadministratorrechte in SQL Server verfügt.
  • Offene Ports: TCP 1433, TCP 5022, TCP 59999.

In diesem Artikel werden die folgenden Parameter verwendet, die jedoch nach Bedarf geändert werden können:

Name Parameter
Knoten1 AGNode1 (10.0.0.4)
Node2 AGNode2 (10.0.0.5)
Clustername AGWGAG (10.0.0.6)
Zuhörer AGListener (10.0.0.7)
DNS-Suffix ag.wgcluster.example.com
Name der Arbeitsgruppe AGWorkgroup

Festlegen eines DNS-Suffix

In diesem Schritt konfigurieren Sie das DNS-Suffix für beide Server. Beispiel: ag.wgcluster.example.com. Auf diese Weise können Sie den Namen des Objekts, mit dem Sie eine Verbindung herstellen möchten, als vollqualifizierte Adresse in Ihrem Netzwerk verwenden, z. B. AGNode1.ag.wgcluster.example.com.

Führen Sie zum Konfigurieren des DNS-Suffix diese Schritte aus:

  1. Öffnen Sie zunächst Bastion auf Ihrem ersten Knoten und anschließend den Server-Manager.

  2. Wählen Sie Lokaler Server und dann unter Computername den Namen des virtuellen Computers aus.

  3. Wählen Sie unter Klicken Sie auf „Ändern“, um den Computer umzubenennen die Option Ändern aus.

  4. Ändern Sie den Namen der Arbeitsgruppe in einen aussagekräftigen Namen, z. B. AGWORKGROUP:

    Ändern des Arbeitsgruppennamens

  5. Wählen Sie Mehr aus, um das Dialogfeld DNS-Suffix und NetBIOS-Computername zu öffnen.

  6. Geben Sie unter Primäres DNS-Suffix des Computers den Namen des DNS-Suffixes ein, z. B. ag.wgcluster.example.com, und wählen Sie dann OK aus:

    Der Screenshot zeigt das Dialogfeld „DNS-Suffix und NetBIOS-Computername“, in dem Sie den Wert eingeben können.

  7. Vergewissern Sie sich, dass unter Vollständiger Computername nun das DNS-Suffix angezeigt wird, und wählen Sie dann OK aus, um die Änderungen zu speichern:

    Der Screenshot zeigt, wo Ihr vollständiger Computername angezeigt wird.

  8. Starten Sie den Server neu, wenn Sie dazu aufgefordert werden.

  9. Wiederholen Sie diese Schritte für alle anderen Knoten, die für die Verfügbarkeitsgruppe verwendet werden sollen.

Bearbeiten einer Hostdatei

Da kein Active Directory vorhanden ist, gibt es keine Möglichkeit, Windows-Verbindungen zu authentifizieren. Weisen Sie daher eine Vertrauensstellung zu, indem Sie die Hostdatei mit einem Text-Editor bearbeiten.

Gehen Sie folgendermaßen vor, um die Hostdatei zu bearbeiten:

  1. Bastion in Ihre virtuelle Maschine.

  2. Wechseln Sie im Datei-Explorer zu c:\windows\system32\drivers\etc.

  3. Klicken Sie mit der rechten Maustaste auf die Datei hosts, und öffnen Sie die Datei mit Windows-Editor (oder einem anderen Text-Editor).

  4. Fügen Sie am Ende der Datei einen Eintrag für jeden Knoten, die Verfügbarkeitsgruppe und den Listener in der Form IP Address, DNS Suffix #comment wie folgt hinzu:

    10.0.0.4 AGNode1.ag.wgcluster.example.com #Availability group node
    10.0.0.5 AGNode2.ag.wgcluster.example.com #Availability group node
    10.0.0.6 AGWGAG.ag.wgcluster.example.com #Cluster IP
    10.0.0.7 AGListener.ag.wgcluster.example.com #Listener IP
    

    Hinzufügen von Einträgen für IP-Adresse, Cluster und Listener in der Hostdatei

Festlegen von Berechtigungen

Da kein Active Directory zum Verwalten von Berechtigungen vorhanden ist, müssen Sie manuell einem lokalen Administratorkonto genehmigen, den Cluster zu erstellen.

Führen Sie dazu das folgende PowerShell-Cmdlet in einer administrativen PowerShell-Sitzung auf jedem Knoten aus:


new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1

Erstellen des Failoverclusters

In diesem Schritt erstellen Sie den Failovercluster. Wenn Sie mit diesen Schritten nicht vertraut sind, können Sie sich im Tutorial für Failovercluster darüber informieren.

Wichtige Unterschiede zwischen dem Tutorial und den Aktionen, die für einen Arbeitsgruppencluster durchgeführt werden sollten:

  • Deaktivieren Sie beim Ausführen der Clusterüberprüfung Speicher und Direkte Speicherplätze.
  • Fügen Sie beim Hinzufügen der Knoten zum Cluster den vollqualifizierten Namen hinzu, z. B.:
    • AGNode1.ag.wgcluster.example.com
    • AGNode2.ag.wgcluster.example.com
  • Deaktivieren Sie Der gesamte geeignete Speicher soll dem Cluster hinzugefügt werden.

Weisen Sie nach dem Erstellen des Clusters eine statische Cluster-IP-Adresse zu. Gehen Sie dazu folgendermaßen vor:

  1. Öffnen Sie in einem der Knoten Failovercluster-Manager, wählen Sie den Cluster aus, und klicken Sie unter < mit der rechten Maustaste auf den -Namen: >ClusterNam. Wählen Sie anschließend Eigenschaften aus.

    Öffnen von „Eigenschaften“ für den Clusternamen

  2. Wählen Sie unter IP-Adressen die IP-Adresse aus, und wählen Sie dann Bearbeiten aus.

  3. Wählen Sie Statische verwenden aus, geben Sie die IP-Adresse des Clusters an, und wählen Sie dann OK aus:

    Angeben einer statischen IP-Adresse für den Cluster

  4. Vergewissern Sie sich, dass Ihre Einstellungen korrekt aussehen, und wählen Sie dann OK aus, um sie zu speichern:

    Überprüfen der Clustereigenschaften

Erstellen eines Cloudzeugen

In diesem Schritt konfigurieren Sie einen Cloudfreigabezeugen. Wenn Sie mit den Schritten nicht vertraut sind, finden Sie weitere Informationen unter Bereitstellen eines Cloudzeugen für einen Failovercluster.

Aktivieren des Verfügbarkeitsgruppenfeatures

In diesem Schritt aktivieren Sie das Feature für Verfügbarkeitsgruppen. Wenn Sie mit den Schritten nicht vertraut sind, finden Sie weitere Informationen im Tutorial zu Verfügbarkeitsgruppen.

Erstellen von Schlüsseln und Zertifikaten

In diesem Schritt erstellen Sie Zertifikate, die in einer SQL-Anmeldung beim verschlüsselten Endpunkt verwendet werden. Erstellen Sie auf jedem Knoten einen Ordner, in dem die Zertifikatsicherungen gespeichert werden sollen, z. B. c:\certs.

Hinweis

Wenn Sie kein Ablaufdatum für das Zertifikat angeben, ist die Gültigkeit für ein Jahr ab dem Erstellungsdatum. Wenn das Zertifikat abläuft, schlägt die Verbindung zwischen Endpunkten fehl.

Führen Sie zum Konfigurieren des ersten Knotens folgende Schritte durch:

  1. Öffnen Sie SQL Server Management Studio, und stellen Sie eine Verbindung mit Ihrem ersten Knoten her, z. B. AGNode1.

  2. Öffnen Sie ein neues Abfragefenster, und führen Sie die folgende T-SQL-Anweisung (Transact-SQL) aus, nachdem Sie das Kennwort komplexer und sicherer gestaltet haben:

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'PassWOrd123!';  
    GO
    
    --create a cert from the master key
    USE master;  
    CREATE CERTIFICATE AGNode1Cert   
       WITH SUBJECT = 'AGNode1 Certificate';  
    GO  
    
    --Backup the cert and transfer it to AGNode2
    BACKUP CERTIFICATE AGNode1Cert TO FILE = 'C:\certs\AGNode1Cert.crt';  
    GO  
    
  3. Erstellen Sie als Nächstes den HADR-Endpunkt, und verwenden Sie das Zertifikat für die Authentifizierung, indem Sie diese T-SQL-Anweisung (Transact-SQL) ausführen:

    --CREATE or ALTER the mirroring endpoint
    CREATE ENDPOINT hadr_endpoint  
       STATE = STARTED  
       AS TCP (  
          LISTENER_PORT=5022  
          , LISTENER_IP = ALL  
       )   
       FOR DATABASE_MIRRORING (   
          AUTHENTICATION = CERTIFICATE AGNode1Cert  
          , ENCRYPTION = REQUIRED ALGORITHM AES  
          , ROLE = ALL  
       );  
    GO  
    
  4. Verwenden Sie den Datei-Explorer, um zu dem Dateispeicherort zu wechseln, an dem sich das Zertifikat befindet, z. B. c:\certs.

  5. Erstellen Sie manuell eine Kopie des Zertifikats (z. B. AGNode1Cert.crt) für den ersten Knoten, und übertragen Sie es an den gleichen Speicherort auf dem zweiten Knoten.

Führen Sie zum Konfigurieren des zweiten Knotens folgende Schritte durch:

  1. Stellen Sie mit SQL Server Management Studio eine Verbindung mit dem zweiten Knoten her, z. B. AGNode2.

  2. Führen Sie in einem neuen Abfragefenster die folgende T-SQL-Anweisung (Transact-SQL) aus, nachdem Sie das Kennwort komplexer und sicherer gestaltet haben:

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'PassWOrd123!';  
    GO 
    
    --create a cert from the master key
    USE master;  
    CREATE CERTIFICATE AGNode2Cert   
       WITH SUBJECT = 'AGNode2 Certificate';  
    GO  
    --Backup the cert and transfer it to AGNode1
    BACKUP CERTIFICATE AGNode2Cert TO FILE = 'C:\certs\AGNode2Cert.crt';  
    GO
    
  3. Erstellen Sie als Nächstes den HADR-Endpunkt, und verwenden Sie das Zertifikat für die Authentifizierung, indem Sie diese T-SQL-Anweisung (Transact-SQL) ausführen:

    --CREATE or ALTER the mirroring endpoint
    CREATE ENDPOINT hadr_endpoint  
       STATE = STARTED  
       AS TCP (  
          LISTENER_PORT=5022  
          , LISTENER_IP = ALL  
       )   
       FOR DATABASE_MIRRORING (   
          AUTHENTICATION = CERTIFICATE AGNode2Cert  
          , ENCRYPTION = REQUIRED ALGORITHM AES  
          , ROLE = ALL  
       );  
    GO  
    
  4. Verwenden Sie den Datei-Explorer, um zu dem Dateispeicherort zu wechseln, an dem sich das Zertifikat befindet, z. B. c:\certs.

  5. Erstellen Sie manuell eine Kopie des Zertifikats (z. B. AGNode2Cert.crt) für den zweiten Knoten, und übertragen Sie es an den gleichen Speicherort auf dem ersten Knoten.

Wenn weitere Knoten im Cluster vorhanden sind, wiederholen Sie diese Schritte auch dort, und ändern Sie dabei die jeweiligen Zertifikatnamen.

Erstellen von Anmeldungen

Die Zertifikatauthentifizierung wird verwendet, um Daten knotenübergreifend zu synchronisieren. Um dies zuzulassen, erstellen Sie einen Anmeldenamen für den anderen Knoten, einen Benutzer für die Anmeldung und ein Zertifikat zur Verwendung des gesicherten Zertifikats für die Anmeldung. Erteilen Sie dann die Berechtigung zur Verbindung auf dem Spiegelungsendpunkt.

Führen Sie dazu zuerst die folgende T-SQL-Abfrage (Transact-SQL) auf dem ersten Knoten aus, z. B. AGNode1:

--create a login for the AGNode2
USE master;  
CREATE LOGIN AGNode2_Login WITH PASSWORD = 'PassWord123!';  
GO  

--create a user from the login
CREATE USER AGNode2_User FOR LOGIN AGNode2_Login;  
GO  

--create a certificate that the login uses for authentication
CREATE CERTIFICATE AGNode2Cert  
   AUTHORIZATION AGNode2_User  
   FROM FILE = 'C:\certs\AGNode2Cert.crt'  
GO 

--grant connect for login
GRANT CONNECT ON ENDPOINT::hadr_endpoint TO [AGNode2_login];  
GO

Führen Sie als Nächstes die folgende T-SQL-Abfrage (Transact-SQL) auf dem zweiten Knoten aus, z. B. AGNode2:

--create a login for the AGNode1
USE master;  
CREATE LOGIN AGNode1_Login WITH PASSWORD = 'PassWord123!';  
GO  

--create a user from the login
CREATE USER AGNode1_User FOR LOGIN AGNode1_Login;  
GO  

--create a certificate that the login uses for authentication
CREATE CERTIFICATE AGNode1Cert  
   AUTHORIZATION AGNode1_User  
   FROM FILE = 'C:\certs\AGNode1Cert.crt'  
GO 

--grant connect for login
GRANT CONNECT ON ENDPOINT::hadr_endpoint TO [AGNode1_login];  
GO

Wenn weitere Knoten im Cluster vorhanden sind, wiederholen Sie diese Schritte auch dort, und ändern Sie dabei die jeweiligen Zertifikat- und Benutzernamen.

Konfigurieren einer Verfügbarkeitsgruppe

In diesem Schritt konfigurieren Sie die Verfügbarkeitsgruppe und fügen ihr Ihre Datenbanken hinzu. Erstellen Sie zu diesem Zeitpunkt keinen Listener. Wenn Sie mit den Schritten nicht vertraut sind, finden Sie weitere Informationen im Tutorial zu Verfügbarkeitsgruppen. Initiieren Sie unbedingt ein Failover und ein Failback, um sicherzustellen, dass alles ordnungsgemäß funktioniert.

Hinweis

Wenn während des Synchronisierungsvorgangs ein Fehler auftritt, müssen Sie möglicherweise NT AUTHORITY\SYSTEM vorübergehend Systemadmininistratorberechtigungen erteilen, um Clusterressourcen auf dem ersten Knoten zu erstellen, z. B. AGNode1.

Konfigurieren eines Lastenausgleichs

Konfigurieren Sie in diesem letzten Schritt das Lastenausgleichsmodul entweder über das Azure-Portal oder PowerShell.

Bei der Verwendung der Windows-Cluster-GUI kann es jedoch einige Einschränkungen geben. Daher sollten Sie PowerShell verwenden, um einen Clientzugriffspunkt oder den Netzwerknamen für Ihren Listener zu erstellen. Nutzen Sie dazu folgendes Beispielskript:

Add-ClusterResource -Name "IPAddress1" -ResourceType "IP Address" -Group "WGAG" 
Get-ClusterResource -Name IPAddress1 | Set-ClusterParameter -Multiple @{"Network" = "Cluster Network 1";"Address" = "10.0.0.4";"SubnetMask" = "255.0.0.0";"EnableDHCP" = 0} 
Add-ClusterResource -Name "IPAddress2" -ResourceType "IP Address" -Group "WGAG" 
Get-ClusterResource -Name IPAddress2 | Set-ClusterParameter -Multiple @{"Network" = "Cluster Network 2";"Address" = "10.0.0.5";"SubnetMask" = "255.0.0.0";"EnableDHCP" = 0} 
Add-ClusterResource -Name "TestName" -Group "WGAG" -ResourceType "Network Name" 
Get-ClusterResource -Name "TestName" | Set-ClusterParameter -Multiple @{"DnsName" = "TestName";"RegisterAllProvidersIP" = 1} 
Set-ClusterResourceDependency -Resource TestName -Dependency "[IPAddress1] or [IPAddress2]" 
Start-ClusterResource -Name TestName -Verbose 

Konfigurieren des Probeports

Wenn Sie einen Azure Load Balancer verwenden, um eine VNN-Ressource (Virtual Network Name) zu unterstützen, müssen Sie den Cluster so konfigurieren, dass er auf die Integritätstestanforderungen antwortet. Wenn die Integritätssonde keine Antwort von einer Back-End-Instanz erhalten kann, werden keine neuen Verbindungen an diese Back-End-Instanz gesendet, bis die Integritätssonde erneut erfolgreich ist.

Verwenden Sie zum Festlegen des Probeportparameters in PowerShell das folgende Skript einmal pro anwendbarer IP-Adressressource:

$ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name. 
$IPResourceName = "<IPResourceName>" # The IP address resource name. 
[int]$ProbePort = <nnnnn> # The probe port that you configured in the health probe of the load balancer for a given Frontend IP Address. Any unused TCP port is valid.  

Import-Module FailoverClusters  

Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$IPResourceName";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0} 

Die änderungen, die Sie vornehmen, werden erst wirksam, wenn die IP-Adressressource offline geschaltet und wieder online gestellt wird. Führen Sie ein Failover der Ressource aus, damit diese Änderung wirksam wird.

Nachdem Sie den Clustertest festgelegt haben, verwenden Sie das folgende PowerShell-Skript, um Clusterparameter zu überprüfen:

Get-ClusterResource $IPResourceName | Get-ClusterParameter 

Schließen Sie Ports aus dem dynamischen Portbereich aus.

Wenn Sie einen Integritätssondenport zwischen 49.152 und 65.536 (den standardmäßigen dynamischen Portbereich für TCP/IP) verwenden, fügen Sie einen Ausschluss für jeden Integritätstestport auf jedem virtuellen Computer hinzu.

Das Konfigurieren des Portausschlusses verhindert, dass anderen Systemprozessen derselbe Port auf dem virtuellen Computer dynamisch zugewiesen wird.

Verwenden Sie das folgende PowerShell-Skript, um einen Portausschluss festzulegen:

  •  für jeden Gesundheitssondenport
  • auf jedem virtuellen Computer
[int]$ProbePort = <nnnnn> # The probe port that you configured in the health probe of the load balancer. Any unused TCP port is valid. 

netsh int ipv4 add excludedportrange tcp startport=$ProbePort numberofports=1 store=persistent 

Um zu bestätigen, dass Ausschlüsse ordnungsgemäß konfiguriert wurden, verwenden Sie den folgenden Befehl:

netsh int ipv4 show excludedportrange tcp 

Nachdem die Verfügbarkeitsgruppe bereitgestellt wurde, sollten Sie die HADR-Einstellungen für SQL Server auf Azure-VMs optimieren.

Weitere Informationen finden Sie unter: