IBM Cloud Docs
Cluster erweitern

Cluster erweitern

In diesem Abschnitt werden die Buildtasks beschrieben, die erforderlich sind, um den Windows Server Failover Cluster (WSFC) und die Verfügbarkeitsgruppe für die Verwendung in der Implementierung mit zwei Regionen zu erweitern.

In diesem Handbuch wird Folgendes vorausgesetzt:

  • Sie haben die duale AZ-Implementierung implementiert und erweitern sie jetzt für den Anwendungsfall 'Disaster-Recovery'.
  • Sie haben eine zweite VPC in einer anderen Region bereitgestellt, die als Wiederherstellungsregion bezeichnet wird, und die VPCs zusammen mit einem Transit Gateway verbunden.
  • Sie haben Sicherheitsgruppen konfiguriert, um den erforderlichen Datenverkehr zwischen den Servern zuzulassen.
  • Haben virtuelle Server in der Wiederherstellungsregion bereitgestellt und als Bastion-und Active Directory-Server konfiguriert.
  • Der Active Directory-Server ist Teil der Domäne, die jetzt die zwei Regionen umfasst.
  • Sie haben einen virtuellen Server in der Wiederherstellungsregion bereitgestellt und als SQL-Server konfiguriert.

Feature Failover Clustering installieren

  1. RDP zum SQL-Server im Wiederherstellungs-MZR unter Verwendung eines Benutzers aus dem SQL-Admins-Gruppenkonto und Öffnen einer PowerShell-Sitzung.

  2. Fügen Sie die Gruppe "SQL-Administratoren" zur lokalen Gruppe "Remoteverwaltungsbenutzer" hinzu, damit Benutzer in dieser Gruppe ferne Befehle ausführen können.

  3. Lassen Sie den eingehenden TCP-Port 5022 im Server zu, da dieser Port für den Datenverkehr der Verfügbarkeitsgruppe verwendet wird. Installieren Sie die Failover Clustering-Funktion und starten Sie dann den Server erneut:

    $domainnb = "<NB_Domain>"
    $group = $domainnb + "\SQLAdmins"
    Add-LocalGroupMember -Group "Remote Management Users" -Member $group
    New-NetFirewallRule -DisplayName 'SQL-AG-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 5022
    Install-WindowsFeature –Name Failover-Clustering –IncludeManagementTools
    Restart-Computer -Force
    

An WSFC teilnehmen und SQL Always On aktivieren

  1. RDP zum SQL-Server im Wiederherstellungs-MZR unter Verwendung eines Benutzers aus dem SQL-Admins-Gruppenkonto und Öffnen einer PowerShell-Sitzung.

  2. Fügen Sie <hostname3> mit dem Namen <clustername> (z. B. wsfc01 ) zum WSFC-Cluster hinzu und aktivieren Sie dann immer verfügbare Verfügbarkeitsgruppen auf dem neuen Knoten.

    $sqldb03 = "<hostname3>"
    $cluster = "<clustername>"
    Get-Cluster -Name $cluster | Add-ClusterNode -Name $sqldb03
    Enable-SqlAlwaysOn -ServerInstance $sqldb03 -Force
    

Endpunkt erstellen

  1. RDP zum SQL-Server im Wiederherstellungs-MZR unter Verwendung eines Benutzers aus dem SQL-Admins-Gruppenkonto und Öffnen einer PowerShell-Sitzung.

  2. Für die Teilnahme an Verfügbarkeitsgruppen des Typs 'Immer aktiv' benötigt eine Serverinstanz einen eigenen Endpunkt, der TCP-Port 5022 zum Senden und Empfangen von Datenverkehr zwischen den Serverinstanzen verwendet, die Verfügbarkeitsreplikate hosten.

  3. Die folgenden PowerShell-Befehle werden verwendet, um den Endpunkt Hadr_endpoint in den SQL-Standardinstanzen (DEFAULT) auf dem SQL Server zu konfigurieren. <hostname3> aktiviert die Verschlüsselung zwischen den Endpunkten:

    $sqldb03 = "<hostname3>"
    $domainnb = "<NB_Domain>"
    $user = $domainnb + "\sqlsvc"
    $pathsqldb03 = "SQLSERVER:\SQL\" + $sqldb03 + "\DEFAULT"
    $endpoint3 = New-SqlHadrEndpoint Hadr_endpoint -Port 5022 -Path $pathsqldb03 -Encryption Required -EncryptionAlgorithm Aes -Owner $user
    Set-SqlHadrEndpoint -InputObject $endpoint3 -State "Started"
    

Um Verbindungsberechtigungen für den von den Endpunkten verwendeten Domänenservice zu erteilen, müssen Sie die folgenden Schritte ausführen: Wenn dieser Schritt nicht ausgeführt wird, werden die Endpunktports nicht gestartet und nicht in einer netstat -a -Auflistung angezeigt:

  1. Starten Sie SQL Server Management Studio (SSMS) auf dem primären Replikathost und stellen Sie eine Verbindung zum primären Replikat her.
  2. Erweitern Sie Sicherheit, klicken Sie dann mit der rechten Maustaste auf Anmeldungen und wählen Sie Neue Anmeldungaus.
  3. Klicken Sie auf Suchen , geben Sie das Benutzerkonto ein \sqlserver\sqlsvcund klicken Sie dann auf OK.
  4. Klicken Sie mit der rechten Maustaste auf die erstellte Anmeldung und wählen Sie Eigenschaftenaus.
  5. Klicken Sie auf Securablesund anschließend auf Suchen.
  6. Wählen Sie im Dialogfenster "Objekte hinzufügen" die Option Bestimmte Objekte aus und klicken Sie auf OK.
  7. Klicken Sie im Dialogfenster "Objekte auswählen" auf Objekttypen und wählen Sie Endpunkteaus.
  8. Klicken Sie auf Durchsuchen , um den Objektnamen auszuwählen.
  9. Wählen Sie Hadr_endpoint aus und klicken Sie auf OK.
  10. Erteilen Sie in der Berechtigung für Hadr_endpoint explizit die Verbindungsberechtigung für dieses Objekt.

Testdatenbank übertragen

  1. RDP zum SQL-Server im Wiederherstellungs-MZR unter Verwendung eines Benutzers aus dem SQL-Admins-Gruppenkonto und Öffnen einer PowerShell-Sitzung.

  2. Bereiten Sie die sekundäre Datenbank vor, indem Sie mit den Befehlen Backup-SqlDatabase und Restore-SqlDatabase eine Sicherung der Testdatenbank unter <hostname1> unter TempShare on <file_share_host>, der SQL Server-Instanz, die das primäre Replikat hostet, erstellen. Stellen Sie die Sicherung in <hostname3> wieder her, die das sekundäre Replikat hosten wird. Der Wiederherstellungsparameter NoRecovery muss verwendet werden.

    $sqldb01 = "<hostname1>"
    $sqldb03 = "<hostname3>"
    $filesharehost = "<file_share_host>"
    $backupfiledata = "\\" + $filesharehost +"\TempShare\TestDatabase.bak"
    $backupfilelog = "\\" + $filesharehost +"\TempShare\TestDatabase.trn"
    Backup-SqlDatabase -Database "TestDatabase" -ServerInstance $sqldb01 -BackupFile $backupfiledata -CopyOnly
    Backup-SqlDatabase -Database "TestDatabase" -BackupFile $backupfilelog -ServerInstance $sqldb01 -BackupAction Log -CopyOnly
    Restore-SqlDatabase -Database "TestDatabase" -BackupFile $backupfiledata -ServerInstance $sqldb03 -NoRecovery  
    Restore-SqlDatabase -Database "TestDatabase" -BackupFile $backupfilelog -ServerInstance $sqldb03 -RestoreAction Log -NoRecovery
    

Die neue sekundäre Datenbank befindet sich im Status RESTORING (Wird wiederhergestellt), bis auf sie nicht mehr zugegriffen werden kann.

Verfügbarkeitsgruppenreplikat erstellen

Datenbanken, die einer Verfügbarkeitsgruppe hinzugefügt werden, werden als Verfügbarkeitsdatenbanken bezeichnet. Wenn Sie Datenbanken hinzufügen, muss die Datenbank eine Online-Datenbank mit Schreib-/Lesezugriff sein und auf der Serverinstanz vorhanden sein, die das primäre Replikat in WSFC hostet. Nach dem Hinzufügen verknüpft die Datenbank die Verfügbarkeitsgruppe als primäre Datenbank und bleibt für Clients verfügbar. Es ist keine sekundäre Datenbank vorhanden, bis Sicherungen der primären Datenbank auf die Serverinstanz zurückgeschrieben werden, die zum sekundären Replikat wird. Die neue sekundäre Datenbank befindet sich im Status RESTORE, bis sie mit der Verfügbarkeitsgruppe verknüpft wird. Weitere Informationen finden Sie unter Automatisches Seeding zum Initialisieren eines sekundären Replikats für eine Always On-Verfügbarkeitsgruppe verwenden , wenn die Sicherungs-und Zurückschreibungsmethode nicht verwendet wird.

  1. RDP zum SQL-Server im Wiederherstellungs-MZR unter Verwendung eines Benutzers aus dem SQL-Admins-Gruppenkonto und Öffnen einer PowerShell-Sitzung.

  2. Um sicherzustellen, dass keine Pfadfehler auftreten, verwenden Sie Invoke-SQLCmd , um das Laden der SQL PowerShell-Bibliothek zu erzwingen, auf die dann über die Baumstruktur des PowerShell-Laufwerks zugegriffen werden kann. PowerShell behandelt die Objekte in SQL Server ähnlich wie Dateien in einem Verzeichnis. Ersetzen Sie <hostname3> durch den Hostnamen des SQL-Servers:

    invoke-sqlcmd
    cd SQLSERVER:\SQL\<hostname3>
    
  3. Zum Erstellen des Verfügbarkeitsgruppenreplikats wird der Befehl New-SqlAvailabilityReplica verwendet, um den Verfügbarkeitsmodus für asynchrones Commit zu konfigurieren. <hostname1> ist der Hostname des primären Replikats, während <hostname3> der Hostname des Servers im Wiederherstellungs-MZR und <fqdn3> der vollständig qualifizierte Domänenname dieses Servers ist. <availability_group> ist der Name der Verfügbarkeitsgruppe, die zuvor konfiguriert wurde. Beschreibungen anderer Parameter finden Sie in der Dokumentation zu New-SqlAvailabilityGroup .

    $sqldb03 = "<hostname3>"
    $sqldb03fqdn = "<fqdn3>"
    $ag = "<availability_group>"
    $endpointurl3 = "TCP://" + $sqldb03fqdn + ":5022"
    $pathsqldb01 = "SQLSERVER:\SQL\" + $sqldb01 +" \DEFAULT\AvailabilityGroups\" + $ag
    New-SqlAvailabilityReplica -Name $sqldb03 -EndpointUrl $endpointurl3 -FailoverMode Manual -AvailabilityMode AsynchronousCommit -ConnectionModeInSecondaryRole    AllowNoConnections -Path $pathsqldb01
    
  4. Verknüpfen Sie das sekundäre Replikat mit den folgenden Befehlen mit der Verfügbarkeitsgruppe. Durch die Verknüpfung wird die sekundäre Datenbank in den Status ONLINE versetzt und die Datensynchronisation mit der entsprechenden Primärdatenbank eingeleitet. Die Datensynchronisation ist der Prozess, bei dem Änderungen an einer primären Datenbank in einer sekundären Datenbank reproduziert werden. Bei der Datensynchronisation sendet die Primärdatenbank Transaktionsprotokollsätze an die Sekundärdatenbank.

    $sqldb03 = "<hostname3>"
    $ag = "<availability_group>"
    $sqldb03 = "sqldb03"
    $ag = "AG01"
    $pathsqldb03 = "SQLSERVER:\SQL\" + $sqldb03 + " \DEFAULT"
    Join-SqlAvailabilityGroup -Path $pathsqldb03 -Name $ag -ClusterType WSFC
    
  5. Starten Sie die Datensynchronisation, indem Sie jede sekundäre Datenbank mit der Verfügbarkeitsgruppe verknüpfen:

    $sqldb03 = "<hostname3>"
    $ag = "<availability_group>"
    $agpathsqldb03 = "SQLSERVER:\SQL\" + $sqldb03 + " \DEFAULT\AvailabilityGroups\" + $ag
    Add-SqlAvailabilityDatabase -Path $agpathsqldb03 -Database "TestDatabase"
    
  6. Mit dem Befehl 'dir' können Sie den Inhalt der neuen Verfügbarkeitsgruppe überprüfen (z. B. dir SQLSERVER:\SQL\sqldb01\DEFAULT\AvailabilityGroups\AG01).

  7. Verwenden Sie den folgenden Befehl, um TCP 6789 über die Windows-Firewall zuzulassen:

    New-NetFirewallRule -DisplayName 'SQL-dnnlsnr-6789-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 6789