Déployer un environnement Microsoft Active Directory tolérant aux pannes


Ce tutoriel constitue la première partie d'une série destinée à vous aider à déployer une architecture Windows à disponibilité élevée sur Google Cloud avec Microsoft Active Directory, SQL Server et Internet Information Services (IIS). Dans ce tutoriel, vous allez configurer une paire redondante de contrôleurs de domaine Windows avec Active Directory à l'aide d'un nouveau réseau cloud privé virtuel (VPC) et de plusieurs sous-réseaux.

La série comprend les tutoriels suivants :

Chaque tutoriel s'appuie sur l'infrastructure que vous avez créée dans le précédent.

Vous pouvez également utiliser ce tutoriel pour apprendre à mettre au point une configuration Active Directory à utiliser dans d'autres architectures. Ce guide ne couvre pas la réplication d'un environnement Active Directory distant vers le nouvel environnement Active Directory basé sur Google Cloud, bien que cela soit possible avec Cloud VPN et une configuration Active Directory supplémentaire.

Architecture

Architecture Active Directory tolérante aux pannes sur Google Cloud.

Objectifs

  • Créer un réseau VPC en mode personnalisé avec deux sous-réseaux couvrant deux zones.
  • Créer des instances virtuelles Windows Server et activer les services de domaine Active Directory.
  • Configurer un nouveau domaine avec Active Directory.
  • Joindre les nouvelles instances Windows Server au nouveau domaine
  • Configurer les règles de pare-feu pour autoriser le trafic vers les machines virtuelles
  • Tester la configuration.

Coûts

Ce tutoriel utilise des composants facturables de Google Cloud, dont :

Le simulateur de coût estime le coût de cet environnement à environ 4 $ par jour.

Avant de commencer

  1. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  2. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  3. Activez Compute Engine API.

    Activer l'API

Initialiser des variables communes

Vous devez définir plusieurs variables d'environnement qui contrôlent où les éléments de l'infrastructure sont déployés.

  1. Allez dans Cloud Shell.

    Ouvrir Cloud Shell

  2. Dans Cloud Shell, créez les variables d'environnement suivantes pour définir les valeurs dont vous aurez besoin ultérieurement dans le tutoriel.

    Les commandes définissent la région sur us-east-1. Vous pouvez utiliser une autre région, mais ne l'oubliez pas car vous devrez utiliser la même région dans les tutoriels suivants.

    export region=us-east1
    export zone_1=${region}-b
    export zone_2=${region}-c
    export vpc_name=webappnet
    export project_id=your-project-id
    

    Remplacez your-project-id par l'ID du projet Google Cloud que vous utilisez.

  3. Exécutez les commandes suivantes pour définir la région et l'ID du projet par défaut afin d'éviter de devoir spécifier ces valeurs dans toutes les commandes ultérieures :

    gcloud config set compute/region ${region}
    gcloud config set project ${project_id}
    

Créer l'infrastructure réseau

Une fois que vous avez défini les variables d'infrastructure, créez le réseau et les sous-réseaux qu'Active Directory utilisera.

  1. Dans Cloud Shell, exécutez la commande suivante pour créer le réseau VPC :

    gcloud compute networks create ${vpc_name}  \
        --description "VPC network to deploy Active Directory" \
        --subnet-mode custom
    

    L'avertissement suivant s'affiche. Vous pouvez l'ignorer, car vous allez créer ces règles de pare-feu dans les étapes suivantes.

    Instances on this network will not be reachable until firewall rules
    are created.
    
  2. Ajoutez deux sous-réseaux au réseau VPC :

    gcloud compute networks subnets create private-ad-zone-1 \
        --network ${vpc_name} \
        --range 10.1.0.0/24
    
    gcloud compute networks subnets create private-ad-zone-2 \
        --network ${vpc_name} \
        --range 10.2.0.0/24
    
  3. Créez une règle de pare-feu interne pour autoriser le trafic entre les sous-réseaux :

    gcloud compute firewall-rules create allow-internal-ports-private-ad \
        --network ${vpc_name} \
        --allow tcp:1-65535,udp:1-65535,icmp \
        --source-ranges  10.1.0.0/24,10.2.0.0/24
    
  4. Créez une règle de pare-feu pour autoriser une connexion RDP sur le port 3389 à partir de n'importe quel emplacement :

    gcloud compute firewall-rules create allow-rdp \
        --network ${vpc_name} \
        --allow tcp:3389 \
        --source-ranges 0.0.0.0/0
    

Créer le premier contrôleur de domaine

Vous allez ensuite créer un contrôleur de domaine avec les propriétés suivantes :

  • Nom : ad-dc1
  • Adresse IP : 10.1.0.100
  1. Créez une instance Compute Engine de Windows Server 2016 à utiliser comme premier contrôleur de domaine :

    gcloud compute instances create ad-dc1 --machine-type n1-standard-2 \
        --boot-disk-type pd-ssd \
        --boot-disk-size 50GB \
        --image-family windows-2016 --image-project windows-cloud \
        --network ${vpc_name} \
        --zone ${zone_1} --subnet private-ad-zone-1 \
        --private-network-ip=10.1.0.100
    
  2. Patientez environ une minute, puis créez un mot de passe pour l'instance Windows ad-dc1 :

    gcloud compute reset-windows-password ad-dc1 --zone ${zone_1} --quiet
    

    Le nom d'utilisateur est le nom d'utilisateur de votre compte Google. Prenez note du nom d'utilisateur et du mot de passe pour une utilisation future.

  3. Utilisez RDP pour vous connecter à l'instance du contrôleur de domaine avec les identifiants créés à l'étape précédente.

  4. Ouvrez un terminal PowerShell en tant qu'administrateur. (Cliquez sur Démarrer, saisissez PowerShell, puis appuyez sur Maj+Ctrl+Entrée).

  5. Définissez les identifiants Windows du compte Administrateur :

    net user Administrator *
    
    ]

    Vous êtes invité à créer un mot de passe. Utilisez un mot de passe sécurisé et stockez-le en lieu sûr pour une utilisation ultérieure.

    Le compte administrateur devient un compte d'administrateur de domaine une fois que vous créez la forêt Active Directory à l'aide de celui-ci.

  6. Activez le compte :

    net user Administrator /active:yes
    
  7. Installez les services de domaine Active Directory, y compris les outils de gestion :

    Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
    
  8. Définissez les variables suivantes :

    $DomainName = "example-gcp.com"
    $DomainMode = "7"
    $ForestMode = "7"
    $DatabasePath = "C:\Windows\NTDS"
    $SysvolPath = "C:\Windows\SYSVOL"
    $LogPath = "C:\Logs"
    
  9. Installez la nouvelle configuration de forêt Active Directory en mode Windows Server 2016 :

    Install-ADDSForest -CreateDnsDelegation:$false `
        -DatabasePath $DatabasePath `
        -LogPath $LogPath `
        -SysvolPath $SysvolPath `
        -DomainName $DomainName `
        -DomainMode $DomainMode `
        -ForestMode $ForestMode `
        -InstallDNS:$true `
        -NoRebootOnCompletion:$true `
        -Force:$true
    
  10. Lorsque vous y êtes invité, entrez un mot de passe administrateur en mode sans échec. Stockez le mot de passe dans un endroit sûr pour une utilisation future.

  11. Ignorez les avertissements suivants. Chaque avertissement apparaîtra deux fois, une fois lors de la vérification des conditions préalables et une seconde fois pendant le processus d'installation.

    WARNING: Windows Server 2016 domain controllers have a default for the
    security setting named Allow cryptography algorithms compatible with
    Windows NT 4.0 that prevents weaker cryptography algorithms when
    establishing security channel sessions.
    For more information about this setting, see Knowledge Base article 942564 (http://go.microsoft.com/fwlink/?LinkId=104751).
    WARNING: This computer has at least one physical network adapter that does
    not have static IP address(es) assigned to its IP Properties. If both IPv4
    and IPv6 are enabled for a network adapter, both IPv4 and IPv6 static IP
    addresses should be assigned to both IPv4 and IPv6 Properties of the
    physical network adapter. Such static IP address(es) assignment should be
    done to all the physical network adapters for reliable Domain Name
    System (DNS) operation.
    
    WARNING: A delegation for this DNS server cannot be created because the
    authoritative parent zone cannot be found or it does not run Windows DNS
    server. If you are integrating with an existing DNS infrastructure, you
    should manually create a delegation to this DNS server in the parent zone
    to ensure reliable name resolution from outside the domain "example-gcp.com".
    Otherwise, no action is required.
    
  12. Redémarrez la machine virtuelle :

    Restart-Computer
    
  13. Utilisez RDP pour vous connecter au contrôleur de domaine ad-dc1 avec les identifiants d'administrateur que vous avez définis lors de l'installation de la forêt Active Directory. N'oubliez pas d'ajouter le nom de domaine en tant que préfixe, comme dans EXAMPLE-GCP\Administrator.

  14. Ouvrez un terminal PowerShell en tant qu'administrateur.

  15. Définissez les variables suivantes :

    $DNSPrimary = "10.2.0.100"
    $DNSSecondary = "127.0.0.1"
    $LocalStaticIp = "10.1.0.100"
    $DefaultGateway = "10.1.0.1"
    
  16. Définissez l'adresse IP et la passerelle par défaut :

    netsh interface ip set address name=Ethernet static `
        $LocalStaticIp 255.255.255.0 $DefaultGateway 1
    
  17. Configurez le serveur DNS principal :

    netsh interface ip set dns Ethernet static $DNSPrimary
    

    Le serveur DNS ad-dc2 ne sera disponible qu'après le déploiement du deuxième contrôleur de domaine. Vous pouvez donc ignorer le message d'erreur suivant :

    The configured DNS server is incorrect or does not exist.
  18. Configurez le serveur DNS secondaire :

    netsh interface ip add dns Ethernet $DNSSecondary index=2
    

    L'entrée du serveur DNS pour ce contrôleur de domaine, ad-dc1, doit figurer en deuxième position dans la liste afin d'empêcher Active Directory de perdre fréquemment la connexion avec l'autre contrôleur. Utilisez le deuxième contrôleur de domaine, ad-dc2, en tant que serveur DNS principal. Vous allez créer le contrôleur de domaine ad-dc2 dans la section suivante. Si vous ne suivez pas ce schéma, les erreurs suivantes s'affichent sous Gestionnaire de serveur > Services de domaine Active Directory :

    The DFS Replication service failed to update configuration in Active
    Directory Domain Services. The service will retry this operation
    periodically.
    

    Il est possible que des erreurs s'affichent sur le serveur ad-dc1 avant que les deux serveurs ne soient entièrement configurés. Vous pouvez ignorer ces erreurs.

Créer le deuxième contrôleur de domaine

Vous allez ensuite créer un contrôleur de domaine dans une zone différente pour garantir la tolérance aux pannes. Le deuxième contrôleur de domaine comprend les propriétés suivantes :

  • Nom : ad-dc2
  • Adresse IP : 10.2.0.100
  1. Si votre fenêtre Cloud Shell a expiré, ouvrez une nouvelle instance Cloud Shell et réinitialisez les variables que vous avez définies précédemment. Pour cela, modifiez le script suivant pour spécifier l'ID du projet et la région utilisés précédemment.

    region=us-east1
    zone_2=${region}-c
    zone_1=${region}-b
    vpc_name=webappnet
    project_id=your-project-id
    
    gcloud config set compute/region ${region}
    gcloud config set project ${project_id}
    

    Remplacez your-project-id par l'ID du projet Google Cloud que vous utilisez.

  2. Copiez le script dans la fenêtre Cloud Shell et exécutez-le.

  3. Utilisez Cloud Shell pour créer la deuxième instance du contrôleur de domaine :

    gcloud compute instances create ad-dc2 --machine-type n1-standard-2 \
        --boot-disk-size 50GB \
        --boot-disk-type pd-ssd \
        --image-family windows-2016 --image-project windows-cloud \
        --can-ip-forward \
        --network ${vpc_name} \
        --zone ${zone_2} \
        --subnet private-ad-zone-2 \
        --private-network-ip=10.2.0.100
    
  4. Patientez environ une minute, puis créez un mot de passe pour l'instance Windows ad-dc2 :

    gcloud compute reset-windows-password ad-dc2 --zone ${zone_2} --quiet
    

    Le nom d'utilisateur est le nom d'utilisateur de votre compte Google. Prenez note du nom d'utilisateur et du mot de passe pour une utilisation future.

  5. Utilisez RDP pour vous connecter à l'instance du contrôleur de domaine avec les identifiants créés à l'étape précédente.

  6. Ouvrez un terminal PowerShell en tant qu'administrateur.

  7. Installez les services de domaine Active Directory, y compris les outils de gestion :

    Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
    
  8. Définissez les variables suivantes :

    $DomainName = "example-gcp.com"
    $DomainPrefix = "EXAMPLE-GCP"
    $DNSPrimary = "10.1.0.100"
    $DNSSecondary = "127.0.0.1"
    $LocalStaticIp = "10.2.0.100"
    $DefaultGateway = "10.2.0.1"
    $DatabasePath = "C:\Windows\NTDS"
    $SysvolPath = "C:\Windows\SYSVOL"
    $LogPath = "C:\Logs"
    
  9. Configurez le serveur DNS principal :

    netsh interface ip set dns Ethernet static $DNSPrimary
    
  10. Configurez le deuxième serveur de sorte qu'il agisse comme son propre serveur DNS secondaire :

    netsh interface ip add dns Ethernet $DNSSecondary index=2
    

    Le serveur DNS ad-dc2 ne sera disponible qu'une fois que ad-dc2 aura été ajouté au domaine en tant que contrôleur de domaine. Comme le serveur n'a pas encore été joint, le message suivant s'affiche, mais vous pouvez l'ignorer :

    The configured DNS server is incorrect or does not exist.
  11. Définissez l'adresse IP et la passerelle par défaut :

    netsh interface ip set address name=Ethernet static `
        $LocalStaticIp 255.255.255.0 $DefaultGateway 1
    
  12. Exécutez le script PowerShell suivant qui vous indiquera quand le premier contrôleur de domaine sera opérationnel. Attendez que le message Domain controller is reachable s'affiche.

    $DomainIsReady=$False
    For ($i=0; $i -le 30; $i++) {
        nltest /dsgetdc:$DomainName
        if($LASTEXITCODE -ne 0) {
            Write-Host "Domain not ready, wait 1 more minute, then retry"
            Start-Sleep -s 60
        }
        else {
            $DomainIsReady=$True
            Write-Host "Domain controller is reachable"
            break
        }
    }
    if($DomainIsReady -eq $False) {
        Write-Host "Domain not ready. Check if it was deployed ok"
    }
    
  13. Ajoutez la machine virtuelle à la forêt en tant que deuxième contrôleur de domaine :

    Install-ADDSDomainController `
        -Credential (Get-Credential "$DomainPrefix\Administrator") `
        -CreateDnsDelegation:$false `
        -DatabasePath $DatabasePath `
        -DomainName $DomainName `
        -InstallDns:$true `
        -LogPath $LogPath `
        -SysvolPath $SysvolPath `
        -NoGlobalCatalog:$false `
        -SiteName 'Default-First-Site-Name' `
        -NoRebootOnCompletion:$true `
        -Force:$true
    
  14. Lorsque vous êtes invité à fournir un mot de passe pour le compte administrateur, utilisez les identifiants de l'administrateur que vous avez définis lors de l'installation de la forêt Active Directory. Ajoutez le nom de domaine en tant que préfixe, comme dans EXAMPLE-GCP\Administrator.

  15. Lorsque vous êtes invité à entrer un mot de passe administrateur en mode sans échec, utilisez le même mot de passe que celui que vous avez utilisé pour le premier contrôleur de domaine.

  16. Ignorez les avertissements suivants. Chaque avertissement apparaîtra deux fois, une fois lors de la vérification des conditions préalables et une seconde fois pendant le processus d'installation.

    WARNING: Windows Server 2016 domain controllers have a default for the
    security setting named "Allow cryptography algorithms compatible with
    Windows NT 4.0" that prevents weaker cryptography algorithms when
    establishing security channel sessions.
    For more information about this setting, see Knowledge Base article 942564 (http://go.microsoft.com/fwlink/?LinkId=104751).
    WARNING: A delegation for this DNS server cannot be created because the
    authoritative parent zone cannot be found or it does not run Windows DNS
    server. If you are integrating with an existing DNS infrastructure, you
    should manually create a delegation to this DNS server in the parent zone
    to ensure reliable name resolution from outside the domain
    "example-gcp.com". Otherwise, no action is required.
    
  17. Redémarrez la machine virtuelle :

    Restart-Computer
    

Tester l'installation

  1. Attendez 5 à 10 minutes pour vous assurer que les deux contrôleurs de domaine ont opérationnels et qu'ils répliquent les informations.

  2. À l'aide de RDP, connectez-vous à la première instance de contrôleur de domaine à l'aide des identifiants d'administrateur que vous avez définis lors de l'installation du premier contrôleur de domaine. Ajoutez le nom de domaine en tant que préfixe, comme dans EXAMPLE-GCP\Administrator.

  3. Ouvrez un terminal PowerShell en tant qu'administrateur.

  4. Testez que la réplication fonctionne :

    repadmin /replsum
    

    La sortie devrait ressembler à ce qui suit, sans erreur ni échec.

    Résultat du test de la réplication, affichant une absence d'échec

    Si le contrôleur de domaine n'est pas disponible, vous recevez un message semblable à celui-ci :

    Beginning data collection for replication summary, this may take awhile:
    .... Source DSA largest delta fails/total %% error
    Destination DSA largest delta fails/total %% error

    Si ce message s'affiche, attendez quelques minutes, puis relancez la commande.

Nettoyer

Si vous souhaitez passer au tutoriel suivant de cette série (Déployer plusieurs sous-réseaux SQL Server), conservez les ressources que vous avez créées dans le cadre de ce tutoriel. Si vous n'envisagez pas d'utiliser l'environnement Active Directory que vous venez de créer, nettoyez les ressources créées sur Google Cloud pour éviter qu'elles ne vous soient facturées par la suite. 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 Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet 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 Google Cloud, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cochez la case correspondant à instance que vous souhaitez supprimer.
  3. Pour supprimer l'instance, cliquez sur Autres actions , cliquez sur Supprimer, puis suivez les instructions.

Supprimer des réseaux VPC

Pour supprimer les réseaux VPC, les sous-réseaux et les règles de pare-feu, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page "Réseaux VPC".

    Accéder à la page des réseaux VPC

  2. Sélectionnez le réseau VPC que vous avez créé.

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

Étapes suivantes