IBM Cloud Docs
Etendez le cluster

Etendez le cluster

Cette section décrit les tâches de génération nécessaires pour étendre le cluster Windows Server Failover Cluster (WSFC) et le groupe de disponibilité à utiliser dans le déploiement à deux régions.

Ce guide suppose que vous:

  • Vous avez déployé le déploiement de la zone de disponibilité double et vous l'étendez maintenant pour le cas d'utilisation de la reprise après incident.
  • Vous avez mis à disposition un second VPC dans une autre région, appelée région de reprise, et vous avez connecté les VPC avec une passerelle Transit Gateway.
  • Configurez des groupes de sécurité pour autoriser le trafic requis entre les serveurs.
  • Vous avez mis à disposition des serveurs virtuels dans la région de reprise et vous les avez configurés pour qu'ils soient des serveurs bastion et Active Directory.
  • Le serveur Active Directory fait partie du domaine qui s'étend désormais sur les deux régions.
  • Vous avez mis à disposition un serveur virtuel dans la région de reprise et vous l'avez configuré pour qu'il soit un serveur SQL.

Installation de la fonction de mise en cluster de basculement

  1. RDP sur le serveur SQL dans la région MZR de récupération à l'aide d'un utilisateur du compte de groupe SQL Admins et ouvrez une session PowerShell.

  2. Ajoutez le groupe SQL Admins au groupe local Remote Management Users afin que les utilisateurs de ce groupe puissent exécuter des commandes à distance.

  3. Autorisez le port TCP entrant 5022 dans le serveur car ce port est utilisé pour le trafic du groupe de disponibilité. Installez la fonction Failover Clustering, puis redémarrez le serveur:

    $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
    

Rejoignez le WSFC et activez SQL Always On

  1. RDP sur le serveur SQL dans la région MZR de récupération à l'aide d'un utilisateur du compte de groupe SQL Admins et ouvrez une session PowerShell.

  2. Ajoutez <hostname3> au cluster WSFC avec le nom <clustername> , par exemple wsfc01 , puis activez les groupes de disponibilité Always On sur le nouveau noeud.

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

Créer le noeud final

  1. RDP sur le serveur SQL dans la région MZR de récupération à l'aide d'un utilisateur du compte de groupe SQL Admins et ouvrez une session PowerShell.

  2. Pour participer aux groupes de disponibilité Always On, une instance de serveur requiert son propre noeud final, qui utilise le port TCP 5022 pour envoyer et recevoir du trafic entre les instances de serveur hébergeant des répliques de disponibilité.

  3. Les commandes PowerShell suivantes sont utilisées pour configurer le noeud final, Hadr_endpoint sur les instances SQL par défaut (DEFAULT) sur le serveur SQL ; <hostname3> active le chiffrement entre les noeuds finaux:

    $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"
    

Pour accorder des droits de connexion au service de domaine utilisé par les noeuds finaux, les étapes suivantes sont requises. Si cette étape n'est pas effectuée, les ports de noeud final ne démarrent pas et n'apparaissent pas dans une liste netstat -a :

  1. Lancez SQL Server Management Studio (SSMS) sur l'hôte de la réplique principale et connectez-vous à la réplique principale.
  2. Développez Sécurité, puis cliquez avec le bouton droit de la souris sur Connexions et sélectionnez Nouvelle connexion.
  3. Cliquez sur Rechercher et entrez le compte utilisateur \sqlserver\sqlsvc, puis cliquez sur OK.
  4. Cliquez avec le bouton droit de la souris sur la connexion créée et sélectionnez Propriétés.
  5. Cliquez sur Securables, puis sur Search.
  6. Dans la boîte de dialogue Ajouter des objets, sélectionnez Objets spécifiques et cliquez sur OK.
  7. Dans la boîte de dialogue Sélectionner des objets, cliquez sur Types d'objet et sélectionnez Noeuds finaux.
  8. Cliquez sur Parcourir pour sélectionner le nom de l'objet.
  9. Sélectionnez Hadr_endpoint et cliquez sur OK.
  10. Dans le droit d'accès à Hadr_endpoint, accordez explicitement le droit de connexion à cet objet.

Transfert de la base de données de test

  1. RDP sur le serveur SQL dans la région MZR de récupération à l'aide d'un utilisateur du compte de groupe SQL Admins et ouvrez une session PowerShell.

  2. Préparez la base de données secondaire à l'aide des commandes Backup-SqlDatabase et Restore-SqlDatabase pour créer une sauvegarde de la base de données de test (TestDatabase) sur <hostname1> on TempShare on <file_share_host>, l'instance de serveur SQL qui héberge la réplique principale. Restaurez la sauvegarde dans <hostname3> qui hébergera la réplique secondaire. Le paramètre de restauration NoRecovery doit être utilisé.

    $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
    

La nouvelle base de données secondaire est à l'état RESTORATION jusqu'à ce qu'elle soit jointe au groupe de disponibilité ne soit pas accessible.

Créer une réplique de groupe de disponibilité

Les bases de données ajoutées à un groupe de disponibilité sont appelées bases de données de disponibilité. Lors de l'ajout de bases de données, la base de données doit être une base de données en ligne en lecture-écriture et exister sur l'instance de serveur qui héberge la réplique principale dans WSFC. Une fois ajoutée, la base de données rejoint le groupe de disponibilité en tant que base de données principale et reste disponible pour les clients. Aucune base de données secondaire n'existe tant que les sauvegardes de la base de données principale ne sont pas restaurées sur l'instance de serveur qui deviendra la réplique secondaire. La nouvelle base de données secondaire est à l'état de restauration jusqu'à ce qu'elle soit jointe au groupe de disponibilité. Voir Utiliser le processus de distribution automatique pour initialiser une réplique secondaire pour un groupe de disponibilité Always On si la méthode de sauvegarde et de restauration n'est pas utilisée.

  1. RDP sur le serveur SQL dans la région MZR de récupération à l'aide d'un utilisateur du compte de groupe SQL Admins et ouvrez une session PowerShell.

  2. Pour vous assurer que vous n'obtenez pas d'erreurs de chemin, utilisez Invoke-SQLCmd qui force le chargement de la bibliothèque SQL PowerShell qui est ensuite accessible via l'arborescence de l'unité PowerShell. PowerShell traite les objets de SQL Server de la même manière que les fichiers d'un répertoire. Remplacez <hostname3> par le nom d'hôte du serveur SQL:

    invoke-sqlcmd
    cd SQLSERVER:\SQL\<hostname3>
    
  3. Pour créer la réplique de groupe de disponibilité, la commande New-SqlAvailabilityReplica permet de configurer le mode de disponibilité pour la validation asynchrone. <hostname1> est le nom d'hôte de la réplique principale, tandis que <hostname3> est le nom d'hôte du serveur dans la région multizone de reprise et <fqdn3> est le nom de domaine complet de ce serveur. <availability_group> est le nom du groupe de disponibilité Always On précédemment configuré. Reportez-vous à la documentation New-SqlAvailabilityGroup pour obtenir la description des autres paramètres.

    $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. Joignez la réplique secondaire au groupe de disponibilité à l'aide des commandes suivantes. La jointure place la base de données secondaire à l'état ONLINE et lance la synchronisation des données avec la base de données principale correspondante. La synchronisation des données est le processus par lequel les modifications apportées à une base de données principale sont reproduites sur une base de données secondaire. La synchronisation des données implique que la base de données principale envoie des enregistrements de journal des transactions à la base de données secondaire.

    $sqldb03 = "<hostname3>"
    $ag = "<availability_group>"
    $sqldb03 = "sqldb03"
    $ag = "AG01"
    $pathsqldb03 = "SQLSERVER:\SQL\" + $sqldb03 + " \DEFAULT"
    Join-SqlAvailabilityGroup -Path $pathsqldb03 -Name $ag -ClusterType WSFC
    
  5. Démarrez la synchronisation des données en joignant chaque base de données secondaire au groupe de disponibilité:

    $sqldb03 = "<hostname3>"
    $ag = "<availability_group>"
    $agpathsqldb03 = "SQLSERVER:\SQL\" + $sqldb03 + " \DEFAULT\AvailabilityGroups\" + $ag
    Add-SqlAvailabilityDatabase -Path $agpathsqldb03 -Database "TestDatabase"
    
  6. Utilisez la commande dir pour vérifier le contenu du nouveau groupe de disponibilité (par exemple, dir SQLSERVER:\SQL\sqldb01\DEFAULT\AvailabilityGroups\AG01).

  7. Utilisez la commande suivante pour autoriser TCP 6789 via le pare-feu Windows:

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