Configurer des instances de cluster de basculement SQL Server

Si vous avez besoin d'une haute disponibilité et d'une redondance pour Microsoft SQL Server sur Compute Engine, vous pouvez configurer les instances de cluster de basculement (FCI) Always On avec les espaces de stockage direct (S2D).

Une instance FCI Always On fournit une seule instance Microsoft SQL Server installée sur les nœuds de clustering de basculement Windows Server (WSFC). Un seul nœud WSFC héberge activement l'instance SQL. En cas de basculement, le service WSFC transfère la propriété des ressources de l'instance à un nœud de basculement défini.

Les espaces de stockage S2D fournissent un réseau SAN virtuel basé sur un logiciel pouvant utiliser des disques de données de VM Compute Engine pour stocker une base de données SQL.

Ce tutoriel constitue un exemple de configuration. En le suivant jusqu'au bout, vous créerez une instance FCI Always On SQL Server avec des espaces de stockage S2D sur Compute Engine.

Objectifs

  • Configurer un réseau VPC avec un contrôleur de domaine Windows
  • Créer deux instances de VM Microsoft SQL Server agissant en tant que nœuds de cluster
  • Configurer le cluster de basculement, y compris l'espace de stockage du cluster
  • Configurer un équilibreur de charge interne pour diriger le trafic vers le nœud actif
  • Tester l'opération de basculement pour vérifier que le cluster fonctionne

Coûts

Ce tutoriel utilise des images Compute Engine qui incluent des licences Windows Server. Ainsi, le coût d'exécution de ce tutoriel peut s'avérer important si vous laissez les machines virtuelles en cours d'exécution. Il est recommandé d'arrêter les machines virtuelles lorsque vous ne les utilisez pas.

Consultez le Simulateur de coût pour obtenir une estimation des coûts liés à la réalisation de ce tutoriel.

Avant de commencer

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Sélectionnez ou créez un projet Google Cloud Platform.

    Accéder à la page "Gérer les ressources"

  3. Assurez-vous que la facturation est activée pour votre projet Google Cloud Platform.

    Découvrir comment activer la facturation

  4. Activez Compute Enginel'API requise.

    Activer l'API.

  5. Démarrez une instance dans Cloud Shell, où vous pourrez exécuter toutes les commandes gcloud de ce tutoriel.
    OUVRIR CLOUD SHELL
  6. Si vous le souhaitez, vérifiez votre quota de disque persistant SSD et demandez-en l'augmentation. Vous avez besoin de 500 Go pour effectuer ce tutoriel.

Vue d'ensemble

Cet exemple de configuration utilise les composants et adresses IP suivants :

  • Réseau VPC personnalisé : 10.0.0.0/24
  • Contrôleur de domaine Active Directory : 10.0.0.3
  • Deux nœuds WSFC disposant d'espaces de stockage S2D associés
    • node-1 : 10.0.0.4
    • node-2 : 10.0.0.5
  • Cluster de basculement Windows Server permettant de gérer les clusters : 10.0.0.201
  • Équilibreur de charge interne et programme d'écoute FCI SQL pour les connexions SQL : 10.0.0.200

L'équilibreur de charge écoute les requêtes. Les vérifications d'état lui permettent de savoir quel nœud SQL Server est actif afin qu'il y redirige le trafic. En cas de défaillance du nœud actif, le nœud de basculement FCI s'active. Le vérificateur d'état reçoit le signal du nœud sain et l'équilibreur de charge redirige le trafic. La base de données, stockée sur des volumes S2D, reste disponible.

Graphique représentant l'architecture de deux VM Compute Engine dans un cluster de basculement

Configurer le réseau VPC

Bien que vous puissiez utiliser un réseau existant pour ce tutoriel, il est recommandé d'isoler les systèmes dans différents réseaux et sous-réseaux, à l'aide de règles de pare-feu limitant le trafic.

  1. Créez un réseau VPC en mode personnalisé. Cela vous permet de contrôler complètement ses sous-réseaux et ses plages d'adresses IP.

    gcloud compute networks create wsfcnet --subnet-mode custom
    
  2. Ajoutez un sous-réseau (wsfc-subnet1) qui contiendra toutes les VM de ce tutoriel.

    gcloud compute networks subnets create wsfc-subnet1 \
        --network wsfcnet \
        --region us-central1 \
        --range 10.0.0.0/24
    
  3. Créez une règle de pare-feu pour autoriser le trafic interne entre les VM de ce réseau.

    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
    
  4. Créez une règle de pare-feu pour autoriser le trafic entrant pour le protocole RDP sur le port 3389. Veuillez prendre en compte que vous ouvrez ainsi le port tcp:3389 à toutes les adresses IP (0.0.0.0/0). Dans un environnement de production, l'accès serait restreint aux adresses IP autorisées.

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

Créer et configurer un contrôleur de domaine Windows

Un domaine Active Directory est utilisé pour les services de nom de domaine, et le clustering de basculement Windows et les fonctionnalités d'espaces de stockage direct sont nécessaires pour ce tutoriel. Il n'est pas nécessaire que le contrôleur de domaine Active Directory se trouve dans le même VPC, mais cela simplifie l'exécution de ce tutoriel.

Dans ce tutoriel, le domaine est gontoso.com. Le nom de la VM du contrôleur de domaine est dc-windows et, par défaut, le nom de l'ordinateur Windows correspond au nom de la machine virtuelle, soit dc-windows. La VM est créée dans le sous-réseau, à l'adresse 10.0.0.3.

  1. Créez une VM qui servira de contrôleur de domaine. Bien que vous puissiez spécifier le type de machine et le serveur Windows souhaités, utilisez les paramètres suivants dans le cadre de cet exemple :

    gcloud compute instances create "dc-windows" \
        --zone "us-central1-a" \
        --machine-type "n1-standard-2" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.3" \
        --can-ip-forward \
        --image-family "windows-2016" \
        --image-project "windows-cloud" \
        --boot-disk-size "200" \
        --boot-disk-type "pd-standard" \
        --boot-disk-device-name "dc-windows"
    
  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 la VM, exécutez PowerShell en tant qu'administrateur pour ouvrir une invite PowerShell avec élévation de privilèges.

  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. Configurez un compte de service SQL Server que vous utiliserez à la fois comme agent SQL et comme compte administrateur SQL.

    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 "service_account" -Description "SQL Agent and SQL Admin account."  -Password $Password
      
  7. Déconnectez-vous, puis reconnectez-vous à la VM servant de contrôleur de domaine en utilisant le protocole RDP avec le compte et le mot de passe administrateur.

  8. Dans une invite PowerShell avec élévation de privilèges, définissez les variables suivantes, qui seront utilisées pour configurer la forêt Active Directory.

    PS C:\> $DomainName = "gontoso.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";
    
  9. Installez les services et outils Active Directory.

    PS C:\> Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
    
    Success Restart Needed Exit Code      Feature Result
    ------- -------------- ---------      --------------
    True    No             Success        {Active Directory Domain Services, Group P...
    
    
  10. Installez et configurez la forêt Active Directory. Cette commande vous demandera vos identifiants. Utilisez le nom d'utilisateur et le mot de passe Administrator créés précédemment.

    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;
    
    cmdlet Get-Credential at command pipeline position 1
    Supply values for the following parameters:
    Credential
    ...
    
    

    La machine va redémarrer.

  11. Une fois la VM redémarrée, reconnectez-vous à celle-ci en utilisant le protocole RDP. Utilisez les identifiants du compte local, qui correspondent à vos identifiants d'origine.

Créer les VM et les disques de données du cluster

Créez deux VM SQL Server avec des disques de données supplémentaires. L'une des VM sert de nœud FCI actif, l'autre de nœud de basculement. Les disques supplémentaires servent de volumes S2D.

Chaque VM SQL Server doit répondre aux exigences suivantes :

  • Elle doit être créée dans le sous-réseau wsfc-subnet1 défini précédemment.
  • Elle doit disposer d'une adresse IP privée comprise dans la plage de sous-réseau 10.0.0.0/24.
  • La fonctionnalité de clustering de basculement Windows Server doit être installée.
  • L'agent WSFC de Compute Engine qui peut surveiller le nœud actif dans le cluster de basculement doit être activé.
  1. Depuis Cloud Shell, créez deux VM SQL Server avec des disques de données supplémentaires. Les disques seront utilisés comme volumes de stockage et cache S2D.

    gcloud compute instances create "node-1" \
        --zone "us-central1-f" \
        --machine-type "n1-highmem-4" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.4" \
        --can-ip-forward \
        --image-family "sql-ent-2016-win-2016" \
        --image-project "windows-sql-cloud" \
        --boot-disk-size "50" \
        --boot-disk-type "pd-ssd" \
        --boot-disk-device-name "node-1" \
        --create-disk=name=node-1-datadisk-1,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-2,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-3,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-4,size=50,type=pd-ssd,auto-delete=no \
        --metadata enable-wsfc=true,sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"
    
    gcloud compute instances create "node-2" \
        --zone "us-central1-a" \
        --machine-type "n1-highmem-4" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.5" \
        --can-ip-forward \
        --image-family "sql-ent-2016-win-2016" \
        --image-project "windows-sql-cloud" \
        --boot-disk-size "50" \
        --boot-disk-type "pd-ssd" \
        --boot-disk-device-name "node-2" \
        --create-disk=name=node-2-datadisk-1,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-2,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-3,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-4,size=50,type=pd-ssd,auto-delete=no \
        --metadata enable-wsfc=true,sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"
      
  2. Si vous le souhaitez, connectez-vous à chaque nœud en utilisant le protocole RDP et, depuis une invite PowerShell avec élévation de privilèges, vérifiez que le clustering de basculement est activé.

    PS C:> Get-WindowsFeature Failover-Clustering
    Display Name                                            Name                       Install State
    ------------                                            ----                       -------------
    [X] Failover Clustering                                 Failover-Clustering            Installed

Configurer le réseau des VM du cluster

  1. Configurez le premier nœud.

    1. Générez un mot de passe pour node-1. Prenez note du nom d'utilisateur et du mot de passe pour une utilisation future.

    2. Connectez-vous à node-1 en utilisant le protocole RDP.

    3. Ouvrez une invite PowerShell avec élévation de privilèges.

    4. Ajoutez une règle de pare-feu pour ouvrir un port pour le service de vérification de l'état. Ce tutoriel utilise le port tcp:59997. Vous pouvez définir une écoute sur un autre port, mais ce dernier doit correspondre au port du vérificateur d'état que vous définirez ultérieurement. Le processus de vérification de l'état pingue l'agent de façon périodique sur chaque nœud du cluster pour déterminer sa disponibilité.

      PS C:\> netsh advfirewall firewall add rule name="Open port for Health Check" dir=in action=allow protocol=TCP localport=59997
      
    5. Ajoutez une règle de pare-feu afin d'ouvrir un port pour l'instance SQL Server, qui s'exécute normalement sur le port tcp:1433.

      PS C:\> netsh advfirewall firewall add rule name="Open SQL Server port" dir=in action=allow protocol=TCP localport=1433
      
    6. Définissez le système DNS sur le contrôleur de domaine.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    7. Mettez à jour le nœud pour utiliser une adresse IP statique et définissez le masque de sous-réseau.

      PS C:\> netsh interface ip set address name=Ethernet static 10.0.0.4 255.255.0.0 10.0.0.1 1
      

      Vous serez déconnecté de la VM. En utilisant le protocole RDP, reconnectez-vous avec le nom d'utilisateur et le mot de passe du compte local.

    8. Ajoutez le nœud au domaine Active Directory créé précédemment.

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

      Vous serez invité à fournir vos identifiants. Utilisez le nom d'utilisateur et le mot de passe administrateur définis précédemment, lors de la configuration de la VM du contrôleur de domaine.

      La machine va redémarrer.

  2. Configurez le second nœud.

    1. Générez un mot de passe pour node-2. Prenez note du nom d'utilisateur et du mot de passe pour une utilisation future.

    2. Connectez-vous à node-2 en utilisant le protocole RDP.

    3. Ouvrez une invite PowerShell avec élévation de privilèges.

    4. Ajoutez une règle de pare-feu pour ouvrir un port pour le vérificateur d'état. Ce port doit correspondre au port du vérificateur d'état que vous définirez ultérieurement.

      PS C:\> netsh advfirewall firewall add rule name="Open port for Health Check" dir=in action=allow protocol=TCP localport=59997
      
    5. Ajoutez une règle de pare-feu afin d'ouvrir un port pour l'instance SQL Server, qui s'exécute normalement sur le port tcp:1433.

      PS C:\> netsh advfirewall firewall add rule name="Open SQL Server port" dir=in action=allow protocol=TCP localport=1433
      
    6. Définissez le système DNS sur le contrôleur de domaine.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    7. Mettez à jour le nœud pour utiliser une adresse IP statique et définissez le masque de sous-réseau.

      PS C:\> netsh interface ip set address name=Ethernet static 10.0.0.5 255.255.0.0 10.0.0.1 1
      

      Vous serez déconnecté de la VM. En utilisant le protocole RDP, reconnectez-vous avec le nom d'utilisateur et le mot de passe du compte local.

    8. Ajoutez le nœud au domaine Active Directory créé précédemment.

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

      Vous serez invité à fournir vos identifiants. Utilisez le nom d'utilisateur et le mot de passe administrateur définis précédemment, lors de la configuration de la VM du contrôleur de domaine.

      La machine va redémarrer.

Créer un témoin de partage de fichiers

Pour obtenir un nombre de votes majoritaire et atteindre un quorum dans un scénario de basculement, créez un partage de fichiers qui servira de témoin. Pour les besoins de ce tutoriel, vous allez créer le témoin de partage de fichiers sur la VM servant de contrôleur de domaine. Dans un environnement de production, il est recommandé de le créer à un autre emplacement.

  1. En utilisant le protocole RDP, connectez-vous à la VM servant de contrôleur de domaine (dc-windows) avec le compte administrateur.

  2. Ouvrez une invite PowerShell avec élévation de privilèges.

  3. Créez le dossier témoin.

    PS C:\> New-Item "C:\QWitness" –type directory
    
  4. Partagez le dossier.

    PS C:\> New-SmbShare -Name "QWitness" -Path "C:\QWitness" -Description "SQL File Share Witness" -FullAccess "gontoso.com\Administrator", "gontoso.com\node-1$", "gontoso.com\node-2$"
    
  5. À l'aide du protocole RDP, vous pouvez également vous connecter à l'un des nœuds en tant que gontoso.com\Administrator et vérifier que vous pouvez accéder au répertoire partagé.

    PS C:\> dir \\dc-windows\QWitness
    

Créer un équilibreur de charge interne

Un équilibreur de charge interne fournit une adresse IP unique pour SQL Server. L'équilibreur de charge écoute les requêtes et achemine le trafic réseau vers le nœud de cluster actif. Un vérificateur d'état s'exécutant sur chaque nœud permet à l'équilibreur de charge de déterminer le nœud actif. Seul le nœud actif renvoie un état sain. Si le nœud actif est défaillant, le nœud de basculement FCI SQL s'active. Le vérificateur d'état reçoit le signal et le trafic est redirigé vers ce nœud.

  1. Créez deux groupes d'instances et ajoutez un nœud SQL Server à chaque groupe. Ces groupes d'instances agissent comme des backends vers lesquels l'équilibreur de charge peut diriger le trafic.

    gcloud compute instance-groups unmanaged create wsfc-group-f --zone us-central1-f
    gcloud compute instance-groups unmanaged add-instances wsfc-group-f --instances node-1 --zone us-central1-f
    
    gcloud compute instance-groups unmanaged create wsfc-group-a --zone us-central1-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-a --instances node-2 --zone us-central1-a
    
  2. Créez une vérification d'état que l'équilibreur de charge peut utiliser pour déterminer quel est le nœud actif.

    gcloud compute health-checks create tcp sql-healthcheck \
        --check-interval="2s" \
        --healthy-threshold=1 \
        --unhealthy-threshold=2 \
        --port=59997 \
        --request=10.0.0.200 \
        --timeout="1s" \
    
  3. Ajoutez une règle de pare-feu pour autoriser la vérification de l'état.

    gcloud compute firewall-rules create allow-health-check \
        --network wsfcnet \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --allow tcp
    
  4. Créez un service de backend et ajoutez les deux groupes d'instances backend.

    gcloud compute backend-services create wsfcbackend \
        --load-balancing-scheme internal \
        --region us-central1 \
        --health-checks sql-healthcheck \
        --protocol tcp
    
    gcloud compute backend-services add-backend wsfcbackend \
        --instance-group wsfc-group-a \
        --instance-group-zone us-central1-a \
        --region us-central1
    
    gcloud compute backend-services add-backend wsfcbackend \
        --instance-group wsfc-group-f \
        --instance-group-zone us-central1-f \
        --region us-central1
    
  5. Créez un équilibreur de charge interne pour transférer les requêtes vers le nœud actif dans l'instance FCI SQL. Le nœud FCI sera créé plus tard et sera configuré pour écouter l'adresse 10.0.0.200.

    gcloud compute forwarding-rules create wsfc-forwarding-rule \
        --load-balancing-scheme internal \
        --ports 1433 \
        --network wsfcnet \
        --subnet wsfc-subnet1 \
        --region us-central1 \
        --backend-service wsfcbackend \
        --address 10.0.0.200
    

Créer un cluster de basculement Windows

  1. En utilisant le protocole RDP, reconnectez-vous à node-1 en tant que gontoso.com\Administrator. Vous devrez peut-être supprimer les certificats précédents pour vous reconnecter.

  2. Ouvrez une invite PowerShell avec élévation de privilèges.

  3. Créez le cluster.

    PS C:\> New-Cluster -Name windows-fci -Node node-1, node-2 -StaticAddress 10.0.0.201 -NoStorage
    
    PS C:\> Set-ClusterQuorum -FileShareWitness \\dc-windows\QWitness
    
  4. Testez le cluster. Des avertissements s'affichent. Vous pouvez les ignorer.

    PS C:\> Test-Cluster
    WARNING: System Configuration - Validate All Drivers Signed: The test reported some warnings..
    WARNING: Network - Validate Network Communication: The test reported some warnings..
    WARNING:
    Test Result:
    HadUnselectedTests, ClusterConditionallyApproved
    Testing has completed for the tests you selected. You should review the warnings in the Report.  A cluster solution is
    supported by Microsoft only if you run all cluster validation tests, and all tests succeed (with or without warnings).
    Test report file path: C:\Users\Administrator\AppData\Local\Temp\Validation Report 2018.05.01 At 19.25.01.htm
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    -a----         5/1/2018   7:26 PM         747166 Validation Report 2018.05.01 At 19.25.01.htm
    
    

    Vous pouvez également lancer l'IUG d'administration du cluster pour vérifier l'état de ce dernier en exécutant cluadmin.msc.

Activer les espaces de stockage direct

  1. En utilisant le protocole RDP, connectez-vous à node-1 ou à node-2, et ouvrez une invite PowerShell avec élévation de privilèges.

  2. Activez les espaces de stockage direct.

    PS C:\> Enable-ClusterS2D
    
    Confirm
    Are you sure you want to perform this action?
    Performing operation 'Enable Cluster Storage Spaces Direct' on Target 'windows-fci'.
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
    WARNING: 2018/05/01-19:36:41.315 Node node-1: No disks found to be used for cache
    WARNING: 2018/05/01-19:36:41.330 Node node-2: No disks found to be used for cache
    WARNING: 2018/05/01-19:36:41.362 C:\Windows\Cluster\Reports\Enable-ClusterS2D on 2018.05.01-19.36.41.362.htm
    
    

    Acceptez la valeur par défaut lorsque vous êtes invité à la confirmer. Des avertissements s'affichent. Vous pouvez les ignorer.

    • Si vous souhaitez optimiser les performances du disque, vous pouvez également ajouter des disques SSD locaux aux VM de votre cluster, en plus des disques persistants SSD standards. Les disques SSD locaux peuvent servir de couche de mise en cache S2D. Faites en sorte que le nombre de disques de capacité (disques persistants SSD, dans ce cas) soit un multiple du nombre de disques SSD locaux. Exécutez la commande suivante pour activer S2D avec la mise en cache :

      PS C:\> Enable-ClusterS2D -CacheDeviceModel "EphemeralDisk"
      
    • Vous pouvez également activer le cache en mémoire CSV (Cluster Shared Volume, volume partagé de cluster) pour un meilleur débit en lecture :

      PS C:\> (Get-Cluster).BlockCacheSize = 2048
      
  3. Étant donné que les espaces de stockage S2D nécessitent 2 Go par volume pour en assurer la bonne gestion et qu'il existe quatre volumes de 50 Go par nœud, déterminez le pool de stockage et définissez sa taille sur 192 Go.

    PS C:\> New-Volume -StoragePoolFriendlyName S2D* -FriendlyName VDisk01 -FileSystem CSVFS_REFS -Size 192GB
    
  4. Vérifiez que le volume de stockage existe en mode lecture-écriture.

    PS C:\> dir C:\ClusterStorage\Volume1\ | Get-ACL
    
    Directory: C:\ClusterStorage\Volume1
    
    Path                Owner                  Access
    ----                -----                  ------
    MSSQL13.MSSQLSERVER BUILTIN\Administrators BUILTIN\Administrators Allow  FullControl...
    
    

Configurer la haute disponibilité pour SQL Server à l'aide d'une configuration FCI

  1. Supprimez l'instance SQL Server par défaut du premier nœud. Vous la remplacerez plus tard par une nouvelle configuration FCI.

    1. En utilisant le protocole RDP, connectez-vous à node-1 en tant que gontoso.com\Administrator.

    2. Ouvrez une invite PowerShell avec élévation de privilèges.

    3. Supprimez l'instance SQL Server par défaut.

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. Redémarrez la VM.

      PS C:\> shutdown /r
      
  2. Supprimez l'instance SQL Server par défaut du second nœud. Vous la remplacerez plus tard par une nouvelle configuration FCI.

    1. En utilisant le protocole RDP, connectez-vous à node-2 en tant que gontoso.com\Administrator.

    2. Ouvrez une invite PowerShell avec élévation de privilèges.

    3. Supprimez l'instance SQL Server par défaut.

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. Redémarrez la VM.

      PS C:\> shutdown /r
      
  3. Réinstallez SQL Server à l'aide d'une configuration FCI sur le premier nœud.

    1. En utilisant le protocole RDP, connectez-vous à node-1 en tant que gontoso\Administrator.

    2. Ouvrez un éditeur de texte, tel que le Bloc-notes.

    3. Copiez le contenu du fichier de configuration fci_install_master_node.ini dans l'éditeur de texte sur node-1. Les sauts de ligne peuvent être supprimés sans que cela n'altère le fonctionnement de la procédure.

    4. Mettez à jour le fichier de configuration avec votre mot de passe gontoso.com\service_account. Le mot de passe doit être mis à jour à deux emplacements : AGTSVCPASSWORD et SQLSVCPASSWORD. Recherchez changeme et remplacez cet élément par le mot de passe que vous avez défini. Enregistrez le fichier au format texte brut sous le nom C:\fci_install_master_node.ini.

    5. Ouvrez une invite PowerShell avec élévation de privilèges et installez SQL Server à l'aide du fichier de configuration.

      PS C:\> C:\sql_server_install\Setup.exe /CONFIGURATIONFILE=C:\fci_install_master_node.ini
      
  4. Réinstallez SQL Server à l'aide d'une configuration FCI sur le second nœud.

    1. En utilisant le protocole RDP, connectez-vous à node-2 en tant que gontoso\Administrator.

    2. Ouvrez un éditeur de texte, tel que le Bloc-notes.

    3. Copiez le contenu du fichier de configuration fci_add_node.ini dans l'éditeur de texte sur node-1.

    4. Mettez à jour le fichier de configuration avec votre mot de passe gontoso.com\service_account. Le mot de passe doit être mis à jour à deux emplacements : AGTSVCPASSWORD et SQLSVCPASSWORD. Recherchez changeme et remplacez cet élément par le mot de passe que vous avez défini. Enregistrez le fichier au format texte brut sous le nom C:\fci_add_node.ini.

    5. Ouvrez une invite PowerShell avec élévation de privilèges et installez SQL Server.

      PS C:\> C:\sql_server_install\Setup.exe /CONFIGURATIONFILE=C:\fci_add_node.ini
      

Configurer le cluster pour le vérificateur d'état

  1. En utilisant le protocole RDP, reconnectez-vous à node-1 en tant que gontoso.com\Administrator.

  2. Exécutez le script PowerShell suivant dans une invite PowerShell avec élévation de privilèges pour permettre au cluster de basculement Windows de répondre au service de vérification de l'état :

    $cluster_network_name = 'Cluster Network 1'
    $ip_resource_name = 'SQL IP Address 1 (SQL2016FCI)'
    $load_balancer_ip = '10.0.0.200'
    [int]$health_check_port = 59997
    Get-ClusterResource $ip_resource_name |
      Set-ClusterParameter -Multiple @{ 'Address'=$load_balancer_ip;
                                        'ProbePort'=$health_check_port;
                                        'SubnetMask'='255.255.255.255';
                                        'Network'=$cluster_network_name;
                                        'EnableDhcp'=0}
    

Tester le scénario de basculement

Préparer un client

  1. Depuis Cloud Shell, créez une VM servant de client SQL.

    gcloud compute instances create "sqlclient-1" \
    --zone "us-central1-a" \
    --machine-type "n1-standard-2" \
    --subnet "wsfc-subnet1" \
    --private-network-ip "10.0.0.10" \
    --can-ip-forward \
    --image-family "sql-ent-2016-win-2016" \
    --image-project "windows-sql-cloud" \
    --boot-disk-size "200" \
    --boot-disk-type "pd-standard" \
    --boot-disk-device-name "sqlclient-1"
    
  2. En utilisant le protocole RDP, connectez-vous à sqlclient-1.

  3. Ouvrez une invite PowerShell avec élévation de privilèges.

  4. Configurez le client.

    1. Définissez le système DNS sur le contrôleur de domaine.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    2. Ajoutez le nœud au domaine Active Directory créé précédemment.

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

      Vous serez invité à fournir vos identifiants. Utilisez le nom d'utilisateur et le mot de passe administrateur définis précédemment, lors de la configuration de la VM du contrôleur de domaine.

      La machine va redémarrer.

    3. En utilisant le protocole RDP, reconnectez-vous avec le compte administrateur.

    4. Ajoutez le membre gontoso.com\service_account au groupe Administrateurs local.

      PS C:\> Add-LocalGroupMember -Group "Administrators" -Member "gontoso.com\service_account"
      
    5. Déconnectez-vous.

      PS C:\> logoff
      

Exécuter le test

  1. En utilisant le protocole RDP, reconnectez-vous à sqlclient-1 avec le nom d'utilisateur et le mot de passe du compte de service gontoso.com\service_account.

  2. Dans une invite PowerShell, exécutez une requête de test sur la table dm_os_cluster_nodes du système.

    PS C:\> & "c:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S 10.0.0.200 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    
    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   0 up                                1
    NODE-2                                   0 up                                0
    
    (2 rows affected)
    
    

    Notez que node-1 est le propriétaire actuel de la ressource de cluster de basculement SQL Server.

  3. À l'aide de Cloud Shell, désactivez la VM node-1 pour tester le scénario de basculement.

    gcloud compute instances stop node-1 --zone us-central1-f
    
  4. Sur la VM sqlclient-1, exécutez à nouveau la requête de test.

    PS C:\> & "c:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S 10.0.0.200 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    
    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   1 down                              0
    NODE-2                                   0 up                                1
    
    (2 rows affected)
    
    

    Malgré la désactivation de node-1, la requête aboutit et indique que node-2 est désormais le propriétaire du cluster de basculement.

Limites

  • Storage Spaces Direct (S2D) n'est compatible qu'avec Windows 2016 et versions supérieures.
  • Avec S2D, chaque disque ne contient qu'une vue partielle des données. Par conséquent, effectuer un instantané d'un disque persistant ne sera pas suffisant pour assurer la sauvegarde de vos données. Utilisez plutôt une sauvegarde en SQL natif.

Nettoyer

Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud Platform :

Une fois que vous avez terminé le tutoriel relatif à SQL Server FCI, vous pouvez procéder au nettoyage des ressources que vous avez créées sur GCP afin qu'elles ne soient plus comptabilisées dans votre quota et qu'elles ne vous soient plus facturées. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.

Supprimer le projet

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.

Pour supprimer le projet :

  1. Dans la console GCP, accédez à la page "Projets".

    Accéder à la page Projets

  2. Dans la liste des projets, sélectionnez celui que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer des instances

Pour supprimer une instance Compute Engine, procédez comme suit :

  1. Dans la console GCP, accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Cochez la case à côté de Il s'agit de l'instance que vous souhaitez supprimer.
  3. Cliquez sur le bouton Supprimer en haut de la page pour supprimer l'instance.

Supprimer les disques persistants

Pour supprimer un disque persistant, procédez comme suit :

  1. Dans la Console GCP, accédez à la page Disques.

    Accéder à la page "Disques"

  2. Cochez la case située à côté du nom du disque à supprimer.

  3. Cliquez sur le bouton Supprimer en haut de la page.

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

Envoyer des commentaires concernant…

Documentation Compute Engine