部署容錯 Microsoft Active Directory 環境

這篇教學文章是我們的系列課程中的其中一個單元,目的是協助您在 Google Cloud Platform (GCP) 上順利使用 Microsoft Active Directory (AD)、SQL 伺服器和 Internet Information Services (IIS) 部署高可用性 Windows 架構。在本教學課程中,將使用新的虛擬私人雲端 (VPC) 網路和多個子網路,以 AD 設定一對冗餘的 Windows 網域控制器 (DC)。

您也可以使用本教學課程學習如何設定 AD 配置,以使用於其他架構。儘管可以透過 Cloud VPN 和其他 AD 配置來實現將遠端 AD 環境複製到新的 GCP 型 AD 環境,但本指南並不包括這部分。

架構

GCP 上的容錯 Active Directory 架構

目標

  • 建立一個自訂模式 VPC 網路,其中包含跨越兩個區域的兩個子網路。
  • 建立 Windows Server 虛擬執行個體,並啟用 AD 網域服務。
  • 以 Active Directory 設定新網域。
  • 將新的 Windows Server 執行個體加入新網域。
  • 設定防火牆規則,允許流向虛擬機器的流量。
  • 測試設定。

費用

本教學課程使用的 Google Cloud Platform 收費元件包括:

Pricing Calculator 預估這種環境的費用約為每天 $4 美元。

事前準備

  1. 在 GCP Console 的專案選擇器頁面中,選取或建立 GCP 專案。

    前往專案選取器頁面

  2. 請確認您已啟用 Google Cloud Platform 專案的計費功能。瞭解如何確認您已啟用專案的計費功能

  3. 啟用Compute Engine API必要的 API。

    啟用 API

初始化通用變數

您必須定義多個環境變數,以控制基礎架構元素的部署位置。

  1. 前往 Cloud Shell。

    開啟 Cloud Shell

  2. 在 Cloud Shell 中建立以下的環境變數,以設定稍後在教學課程中需要的值。請以您的專案 ID 取代 [YOUR_PROJECT_ID]

    變數會將地區設定為 us-east-1。如果您在上一個教學課程中使用了其他地區,此處請使用該地區。

    export region=us-east1
    export zone_1=${region}-b
    export zone_2=${region}-c
    export vpc_name=webappnet
    export project_id=[YOUR_PROJECT_ID]
    
  3. 執行下列指令來設定預設地區和專案 ID,這樣您就不必在後續指令中指定這些值:

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

建立網路基礎架構

定義了基礎結構變數之後,就可以建立 AD 將使用的網路和子網路。

  1. 在 Cloud Shell 中執行以下指令,以建立 VPC 網路:

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

    您會收到以下的警告,您可以忽略它們,因為您將在稍後的步驟中建立這些防火牆規則。

    Instances on this network will not be reachable until firewall rules
    are created.
    
  2. 將兩個子網路新增至 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. 建立防火牆規則,允許子網路之間的流量:

    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. 建立防火牆規則,以允許 3389 通訊埠上來自任何位置的 RDP 連線:

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

建立第一個網域控制器

接下來,您將建立具有以下屬性的網域控制器︰

  • 名稱:ad-dc1
  • IP 位址:10.1.0.100

  1. 建立 Windows Server 2016 的 Google Compute Engine 執行個體,以便使用為第一個網域控制器:

    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. 請等候大約一分鐘,然後為 Windows 執行個體 ad-dc1 設定一個密碼:

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

    使用者名稱是您的 Google 帳戶使用者名稱。請記下這組使用者名稱和密碼,以供日後使用。

  3. 使用 RDP,以您在前一個步驟中建立的憑證連接到網域控制器執行個體。

  4. 以系統管理員身分開啟 PowerShell 終端機。(按一下 [Start] (啟動),輸入「PowerShell」,然後按 Shift+Ctrl+Enter)。

  5. 設定管理員帳戶的 Windows 憑證:

    net user Administrator *
    

    系統會提示您建立密碼。請使用高強度密碼,並將密碼儲存於安全的位置,以供日後使用。

    使用管理員帳戶建立 AD 樹系之後,該帳戶將變成網域管理員帳戶。

  6. 啟用帳戶:

    net user Administrator /active:yes
    
  7. 安裝 Active Directory 網域服務,其中包括管理工具:

    Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
    
  8. 設定下列變數:

    $DomainName = "example-gcp.com"
    $DomainMode = "7"
    $ForestMode = "7"
    $DatabasePath = "C:\Windows\NTDS"
    $SysvolPath = "C:\Windows\SYSVOL"
    $LogPath = "C:\Logs"
    
  9. 在 Windows Server 2016 模式下安裝新的 Active Directory 樹系配置:

    Install-ADDSForest -CreateDnsDelegation:$false `
        -DatabasePath $DatabasePath `
        -LogPath $LogPath `
        -SysvolPath $SysvolPath `
        -DomainName $DomainName `
        -DomainMode $DomainMode `
        -ForestMode $ForestMode `
        -InstallDNS:$true `
        -NoRebootOnCompletion:$true `
        -Force:$true
    
  10. 出現系統提示時,請輸入安全模式系統管理員密碼。將密碼儲存於安全的位置,以供日後使用。

  11. 忽略以下警告。每個警告將出現兩次,一次是在先決條件驗證期間,另一次則是在安裝過程中。

    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. 重新啟動虛擬機器:

    Restart-Computer
    
  13. 使用 RDP,以您在 AD 樹系安裝期間定義的系統管理員憑證連接到網域伺服器 ad-dc1。請記得加上網域名稱做為前綴,例如 EXAMPLE-GCP\Administrator

  14. 以系統管理員身分開啟 PowerShell 終端機。

  15. 設定下列變數:

    $DNSPrimary = "10.2.0.100"
    $DNSSecondary = "127.0.0.1"
    $LocalStaticIp = "10.1.0.100"
    $DefaultGateway = "10.1.0.1"
    
  16. 設定 IP 位址和預設閘道:

    netsh interface ip set address name=Ethernet static `
        $LocalStaticIp 255.255.255.0 $DefaultGateway 1
    
  17. 設定主要 DNS 伺服器:

    netsh interface ip set dns Ethernet static $DNSPrimary
    

    只有在部署第二個網域控制器之後,DNS 伺服器 ad-dc2 才能使用,因此您可以忽略下列錯誤訊息:

    The configured DNS server is incorrect or does not exist.
  18. 設定次要 DNS 伺服器:

    netsh interface ip add dns Ethernet $DNSSecondary index=2
    

    此網域控制器的 DNS 伺服器項目 ad-dc1 應位於清單的第二位,以防止 AD 經常失去與其他控制器的連接。請使用第二個網域控制器 ad-dc2 做為主要 DNS 伺服器。您將在下一節建立 ad-dc2 網域控制器。如果您不遵循此模式,則 [Server Manager] (伺服器管理員) > [Active Directory Domain Services] (Active Directory 網域服務) 下將顯示以下錯誤:

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

    在完全設定好兩台伺服器之前,您可能會在 ad-dc1 伺服器上看到錯誤。您可以忽略這些錯誤。

建立第二網域控制器

接下來,您將在不同區域中建立第二個網域控制器,以提供容錯功能。第二個網域控制器具有以下屬性:

  • 名稱:ad-dc2
  • IP 位址:10.2.0.100

  1. 如果您的 Cloud Shell 視窗已經過期,請開啟一個新的 Cloud Shell 視窗,並重新設定您先前設定的變數。此時請編輯以下指令碼,以指定您先前使用的專案 ID 和地區。

    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}
    
  2. 將指令碼複製到 Cloud Shell 視窗並加以執行。

  3. 使用 Cloud Shell 建立第二個網域控制器執行個體:

    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. 請等候大約一分鐘,然後為 Windows 執行個體 ad-dc2 設定一個密碼:

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

    使用者名稱是您的 Google 帳戶使用者名稱。請記下這組使用者名稱和密碼,以便日後使用。

  5. 使用 RDP,以您在前一個步驟中建立的憑證連接到網域控制器執行個體。

  6. 以系統管理員身分開啟 PowerShell 終端機。

  7. 安裝 Active Directory 網域服務,其中包括管理工具:

    Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
    
  8. 設定下列變數:

    $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. 設定主要 DNS 伺服器:

    netsh interface ip set dns Ethernet static $DNSPrimary
    
  10. 設定第二伺服器,使其充當自己的次要 DNS 伺服器:

    netsh interface ip add dns Ethernet $DNSSecondary index=2
    

    ad-dc2 DNS 伺服器只有在 ad-dc2 被加入網域中做為網域控制器時才能使用。由於伺服器尚未加入,您會看到以下訊息,但您可以忽略:

    The configured DNS server is incorrect or does not exist.
  11. 設定 IP 位址和預設閘道:

    netsh interface ip set address name=Ethernet static `
        $LocalStaticIp 255.255.255.0 $DefaultGateway 1
    
  12. 執行以下 PowerShell 指令碼,此指令碼將在第一個網域控制器可以運行時通知您。請等到您看到 Domain controller is reachable 訊息。

    $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. 將虛擬機器新增至樹系中,做為第二網域控制器:

    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. 當系統提示您提供管理員帳戶的密碼時,請使用您在 AD 樹系安裝期間定義的管理員憑證。加上網域名稱做為前綴,例如 EXAMPLE-GCP\Administrator

  15. 當系統提示您輸入安全模式系統管理員密碼時,請使用與第一個網域控制器相同的密碼。

  16. 請忽略以下的警告。每個警告會出現兩次:一次是在先決條件驗證期間,另一次則是在安裝過程中。

    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. 重新啟動虛擬機器:

    Restart-Computer
    

測試安裝

  1. 等待 5-10 分鐘,以確認兩個網域控制器都能正常運行,而且正在複製資訊。

  2. 使用 RDP,使用您在第一個網域控制器安裝期間定義的系統管理員憑證,連線到第一個網域控制器執行個體。新增網域名稱做為前綴,例如 EXAMPLE-GCP\Administrator

  3. 以系統管理員身分開啟 PowerShell 終端機。

  4. 測試複製功能是否運作正常:

    repadmin /replsum
    

    輸出應類似以下內容,沒有錯誤或失敗。

    測試複製功能的結果,顯示零錯誤

    如果網路控制器無法使用,您將收到類似以下內容的錯誤訊息:

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

    如果收到此訊息,請等待幾分鐘,然後重試該指令。

清理

如果您不打算使用在本教學課程中建立的 AD 環境,您可以清除在 GCP 上建立的資源,這樣日後就不需再為這些資源付費。下列各節將說明如何刪除或關閉這些資源。

刪除專案

如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。

如要刪除專案,請執行以下操作:

  1. 前往 GCP Console 中的「Manage resources」(管理資源) 頁面。

    前往「Manage resources」(管理資源) 頁面

  2. 在專案清單中選取您要刪除的專案,然後按一下「Delete」(刪除) 圖示
  3. 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。

刪除執行個體

如要刪除 Compute Engine 執行個體:

  1. 前往 GCP Console 的「VM Instances」(VM 執行個體) 頁面。

    前往「VM Instances」(VM 執行個體) 頁面

  2. 勾選您要刪除的執行個體相應核取方塊。
  3. 按一下 [Delete] (刪除) ,藉此刪除執行個體。

刪除 VPC 網路

如要刪除 VPC 網路、子網路和防火牆規則:

  1. 前往 Cloud Platform 主控台中的 VPC 網路頁面。

    前往 VPC 網路頁面

  2. 選取您建立的 VPC 網路。

  3. 按一下頁面頂端的 [Delete] (刪除) 按鈕。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
解決方案