Configurer des groupes de disponibilité AlwaysOn SQL Server

Si vous exécutez plusieurs instances SQL Server Enterprise sur Compute Engine, vous pouvez les configurer pour qu'elles utilisent le clustering de basculement Windows Server et les groupes de disponibilité AlwaysOn de SQL Server afin de garantir la haute disponibilité et la récupération après sinistre.

Ce tutoriel explique comment créer un cluster d'instances avec SQL Server Enterprise à l'aide des paramètres réseau nécessaires et comment configurer ces instances pour utiliser le clustering de basculement Windows Server et les groupes de disponibilité SQL Server AlwaysOn. Vous pouvez vous servir d'instances SQL Server Enterprise créées à partir des images publiques SQL Server ou de Microsoft License Mobility.

Conditions préalables

Pour suivre ce tutoriel, vous devez connaître les éléments et procédures suivants :

Configurer le réseau VPC

Créez un réseau VPC en mode personnalisé avec trois sous-réseaux. Ensuite, définissez les règles de pare-feu pour autoriser le trafic entre les machines virtuelles (VM) internes. Si nécessaire, vous pouvez utiliser un réseau existant pour cette tâche, mais nous vous recommandons d'isoler les systèmes dans différents réseaux et sous-réseaux. Dans ce tutoriel, vous allez configurer le réseau et les sous-réseaux VPC comme suit :

  1. Créez un réseau VPC en mode personnalisé.

    gcloud compute networks create wsfcnet --subnet-mode custom
    
  2. Ajoutez trois sous-réseaux au réseau VPC.

    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. Créez une règle de pare-feu pour autoriser le trafic entre les instances sur les adresses IP internes du nouveau réseau VPC.

    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. Créez une règle de pare-feu pour autoriser le protocole RDP sur le port 3389 du réseau VPC.

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

Créer un contrôleur de domaine Windows

Créez un contrôleur de domaine Windows. Pour ce tutoriel, le domaine est dbeng.com et le nom du contrôleur de domaine est dc-windows à l'adresse IP 10.2.0.100. Le contrôleur de domaine utilise le sous-réseau wsfcsubnet3.

  1. Créez une instance à utiliser comme contrôleur de domaine. Pour les besoins de ce tutoriel, définissez un petit type de machine n1-standard-2 et utilisez la dernière image de la famille d'images windows-2016.

    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. Générez un mot de passe pour vous connecter à la VM servant de contrôleur de domaine à l'aide d'un compte local. Prenez note du nom d'utilisateur et du mot de passe pour une utilisation future.

  3. En utilisant le protocole RDP, connectez-vous à la VM servant de contrôleur de domaine avec le nom d'utilisateur et le mot de passe de votre compte local.

  4. Sur l'instance, exécutez PowerShell en tant qu'administrateur pour ouvrir le terminal PowerShell.

  5. Configurez un compte utilisateur en tant qu'administrateur.

    1. Exécutez la commande suivante, puis saisissez un mot de passe que vous utiliserez avec le compte administrateur.

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

      Prenez note du mot de passe que vous avez saisi. Ce mot de passe sera utilisé pour le compte administrateur.

    2. Définissez le mot de passe du compte administrateur.

      PS C:\> Set-LocalUser -Name Administrator -Password $Password
      
    3. Activez le compte administrateur.

      PS C:\> Enable-LocalUser -Name Administrator
      
  6. Définissez ces variables :

    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. Installez les outils Active Directory suivants :

    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. Si l'instance ne redémarre pas automatiquement après la création du domaine, redémarrez-la manuellement.

  9. Après le redémarrage de l'instance, reconnectez-vous à l'aide du compte Administrator avec le nom de domaine nouvellement créé (dbeng.com dans ce tutoriel).

  10. Créez un compte de domaine appelé sql_service, qui sera utilisé pour exécuter SQL Server :

    1. Définissez un mot de passe sécurisé à utiliser avec le compte de service SQL Server.

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

      Prenez note du mot de passe que vous avez saisi. Ce mot de passe sera utilisé pour le compte de service SQL Server.

    2. Créez le compte de service SQL Server et définissez son mot de passe.

      PS C:\> New-LocalUser -Name "sql_service" -Description "SQL Agent and SQL Admin account."  -Password $Password
      

Le contrôleur de domaine est configuré, et vous pouvez vous déconnecter de l'instance dc-windows. Ensuite, créez les instances pour le groupe de disponibilité.

Créer des instances pour un groupe de disponibilité

Créez des instances SQL Server pour un groupe de disponibilité. Ces instances utilisent les configurations d'adresse IP suivantes avec des adresses IP d'alias :

  • Nom de l'instance : cluster-sql1
    • Adresse IP interne : 10.0.0.4
    • Nom du cluster de basculement Windows : cluster-ag
    • Adresse IP du cluster de basculement : 10.0.0.5 (IP d'alias)
    • Nom du groupe de disponibilité : cluster-listener
    • Adresse de l'écouteur du groupe de disponibilité : 10.0.0.6 (IP d'alias)
  • Nom de l'instance : cluster-sql2
    • Adresse IP interne : 10.1.0.4
    • Nom du cluster de basculement Windows : cluster-ag
    • Adresse IP du cluster de basculement : 10.1.0.5 (IP d'alias)
    • Nom du groupe de disponibilité : cluster-listener
    • Adresse de l'écouteur du groupe de disponibilité : 10.1.0.6 (IP d'alias)

Créez les instances SQL Server en utilisant l'une des méthodes suivantes :

Images publiques SQL Server

Créez deux instances à partir d'images SQL Server publiques. Pour cet exemple, nommez les instances cluster-sql1 et cluster-sql2. Spécifiez une taille de disque de démarrage de 200GB Go et le type de machine n1-highmem-4. Les instances SQL Server nécessitent généralement plus de ressources de calcul que l'instance du contrôleur de domaine. Si vous avez besoin de ressources de calcul supplémentaires par la suite, vous pourrez modifier le type de machine de ces instances. S'il vous faut davantage d'espace de stockage, ajoutez un disque ou redimensionnez le disque de démarrage persistant. Dans les groupes de disponibilité plus importants, vous pouvez créer plusieurs instances.

En outre, incluez l'indicateur --metadata sysprep-specialize-script-ps1 pour exécuter, lors de la création des instances, une commande PowerShell qui installe la fonctionnalité Failover-Clustering.

Pour cet exemple, créez deux instances à l'aide des commandes suivantes :

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

Pour les groupes de disponibilité plus importants, vous pouvez créer des instances supplémentaires avec les adresses IP appropriées.

Licences existantes

Si vous souhaitez importer vos propres licences SQL Server Enterprise basées sur Microsoft License Mobility via le programme Software Assurance, créez une image Windows avec l'option --guestOSFeatures activée. Ensuite, installez SQL Server Enterprise manuellement.

  1. Créez une instance Windows Server.
  2. Sur cette instance, installez les dernières versions de tous les composants.
  3. Définissez l'état de suppression automatique sur false pour le disque de démarrage de cette instance.
  4. Supprimez l'instance.
  5. Créez un disque temporaire avec une image Windows Server standard.

    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. À partir du nouveau disque, créez une image Windows Server personnalisée avec l'option MULTI_IP_SUBNET activée dans le paramètre 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. Une fois l'image créée, supprimez le disque temporaire.

    gcloud compute disks delete windows-2012-disk-new --zone us-central1-f
    
  8. Créez les instances SQL Server de votre groupe de disponibilité à l'aide de l'image personnalisée. Les instances SQL Server nécessitent généralement plus de ressources de calcul que l'instance du contrôleur de domaine. Vous devez donc spécifier au moins un type de machine n1-highmem-4. Si vous avez besoin de ressources de calcul supplémentaires par la suite, vous pourrez modifier le type de machine de ces instances. S'il vous faut davantage d'espace de stockage, ajoutez un disque ou redimensionnez le disque de démarrage persistant. Dans les groupes de disponibilité plus importants, vous pouvez créer plusieurs instances. Pour cet exemple, créez-en deux.

    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. Sur chacune des instances, installez SQL Server Enterprise manuellement.

Une fois les instances créées, configurez-les pour qu'elles puissent fonctionner en tant que groupe de disponibilité.

  1. Connectez-vous aux deux instances à l'aide de connexions RDP.
  2. Modifiez les deux instances de manière à utiliser des adresses IP statiques, puis définissez le masque de réseau sur 255.255.0.0. Ouvrez un terminal PowerShell en tant qu'administrateur, puis définissez les adresses IP statiques sur "static". Ces commandes peuvent mettre fin à la connexion Bureau à distance :

    • Instance 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
      
    • Instance 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. Ajoutez les deux instances au domaine Windows. Ouvrez un terminal PowerShell en tant qu'administrateur, puis exécutez la commande Add-Computer sur les deux instances :

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

    La commande vous invite à saisir vos identifiants. Lorsque l'exécution de la commande est terminée, l'instance redémarre.

  4. Reconnectez-vous à vos instances à l'aide du protocole RDP pour définir les comptes de service SQL Server:

    1. Ouvrez le gestionnaire de configuration de SQL Server.
    2. Sélectionnez l'onglet Services SQL Server, cliquez avec le bouton droit de la souris sur "SQL Server", puis cliquez sur Propriétés.
    3. Définissez le compte et le mot de passe de sql_service.

Les instances sont à présent créées pour le groupe de disponibilité. L'étape suivante consiste à configurer le gestionnaire du cluster de basculement.

Configurer le gestionnaire du cluster de basculement

Activez le clustering de basculement sur les instances de votre groupe de disponibilité, puis configurez une instance pour qu'elle s'exécute en tant que gestionnaire du cluster de basculement. Activez la haute disponibilité AlwaysOn sur toutes les instances du groupe.

  1. Reconnectez-vous à vos instances à l'aide du protocole RDP, mais utilisez les identifiants de l'administrateur de domaine. Pour cet exemple, le domaine est dbeng et le compte administrateur est Administrator. Si vous utilisez Chrome RDP pour Google Cloud Platform, supprimez les certificats RDP existants pour ces adresses dans la liste "Certificats" du menu "Options".

  2. Sélectionnez l'une de vos instances, puis configurez-la pour qu'elle s'exécute en tant que gestionnaire du cluster de basculement.

    1. Ouvrez un terminal PowerShell en tant qu'administrateur, et définissez des variables contenant le nom de votre environnement de cluster. Pour cet exemple, définissez les variables suivantes :

      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. Créez le cluster de basculement :

      PS C:\> New-Cluster -Name $nameWSFC -Node $node1, $node2 -NoStorage -StaticAddress $ipWSFC1, $ipWSFC2
      
    3. Activez la haute disponibilité AlwaysOn pour les deux nœuds du cluster :

      PS C:\> Enable-SqlAlwaysOn -ServerInstance $node1 -Force
      
      PS C:\> Enable-SqlAlwaysOn -ServerInstance $node2 -Force
      
  3. Sur l'instance secondaire qui ne s'exécute pas en tant que gestionnaire du cluster, créez un dossier de sauvegarde sous C:\SQLBackup, puis partagez-le en tant que \\cluster-sql2\SQLBackup pour le compte sql_service, afin de permettre des opérations de lecture et d'écriture.

  4. Sur les deux instances, créez deux dossiers sous C:\SQLData et C:\SQLLog. Utilisez ces dossiers pour les données de bases de données et les fichiers journaux.

Le gestionnaire du cluster de basculement est prêt. L'étape suivante consiste à créer le groupe de disponibilité.

Créer le groupe de disponibilité

Créez une base de données de test, puis configurez-la pour qu'elle fonctionne avec un nouveau groupe de disponibilité. Si vous préférez, vous pouvez spécifier une base de données existante pour le groupe de disponibilité.

  1. Si aucune base de données n'est déjà configurée, créez une base de données de test. Sur l'instance exécutée en tant que gestionnaire du cluster, lancez SQL Server Management Studio et créez une base de données de test à l'aide de la commande SQL suivante :

    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. Sur l'instance exécutée en tant que gestionnaire du cluster, lancez SQL Server Management Studio.

  3. Cliquez avec le bouton droit de la souris sur Haute disponibilité AlwaysOn, puis sélectionnez Assistant du nouveau groupe de disponibilité.

  4. Sur la page Spécifier un nom, définissez un nom de groupe de disponibilité. Pour cet exemple, indiquez cluster-ag.

  5. Sur la page Sélectionner des bases de données, spécifiez la base de données à répliquer. Pour cet exemple, indiquez la base de données TestDB.

  6. Sur la page Spécifier les instances dupliquées, définissez les deux instances en tant qu'instances dupliquées avec basculement automatique et commit synchrone.

  7. Sur la page Sélectionner la synchronisation des données, spécifiez le partage réseau afin de conserver la sauvegarde de la base de données pour la synchronisation initiale. Pour cet exemple, indiquez \\cluster-sql2\SQLBackup.

  8. La page Validation génère un avertissement, car aucun écouteur n'est présent, mais vous pouvez l'ignorer.

  9. Lorsque l'assistant a terminé, cliquez avec le bouton droit de la souris sur le nouveau groupe de disponibilité et sélectionnez Ajouter un écouteur.

  10. Spécifiez les paramètres de cet écouteur :

    • Nom DNS de l'écouteur : cluster-listener
    • Port réseau : 1433
    • Mode réseau : Static IP
  11. Ajoutez deux champs de sous-réseau et d'adresse IP. Pour cet exemple, utilisez les paires de sous-réseau et d'adresse IP suivantes :

    • 10.0.0.0/16 et 10.0.0.6
    • 10.1.0.0/16 et 10.1.0.6

Vous pouvez désormais vous connecter à SQL Server à l'aide de cluster-listener en tant que nom de base de données SQL Server au lieu d'utiliser le nom des instances. Cette connexion pointe vers l'instance active.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine