フォールト トレラントな Microsoft Active Directory 環境のデプロイ

このチュートリアルは、Active Directory(AD)、SQL Server、および Internet Information Services(IIS)を使用して Google Cloud Platform(GCP)に高可用性 Windows アーキテクチャをデプロイすることを目的とするシリーズの 1 つです。このチュートリアルでは、新しい Virtual Private Cloud(VPC)ネットワークと複数のサブネットを使用して、AD と Windows Domain Controller(DC)の冗長ペアをセットアップします。

また、このチュートリアルでは、他のアーキテクチャで使用する AD 構成をセットアップする方法も確認できます。このガイドでは、リモート AD 環境を新しい GCP ベースの AD 環境へ複製する方法については説明しませんが、Cloud VPN と追加の AD 構成を使用してこれを行うことができます。

アーキテクチャ

GCP でのフォールト トレラントな Active Directory アーキテクチャ

目標

  • 2 つのゾーンにまたがる 2 つのサブネットがあるカスタムモードの VPC ネットワークを作成する。
  • Windows Server 仮想インスタンスを作成し、AD ドメイン サービスを有効にする。
  • Active Directory を使用して新しいドメインを構成する。
  • 新しい Windows Server インスタンスを新しいドメインに参加させる。
  • 仮想マシンへのトラフィックを許可するようにファイアウォール ルールを構成する。
  • 構成をテストする。

料金

このチュートリアルでは、Google Cloud Platform の課金対象となる以下のコンポーネントを使用します。

料金計算ツールの見積もりでは、この環境の費用は 1 日あたり約 $4 です。

準備

  1. GCP プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  2. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。 詳しくは、課金を有効にする方法をご覧ください。

  3. Compute Engine API を有効にします。

    APIを有効にする

共通変数の初期化

インフラストラクチャの要素がデプロイされる場所を制御する環境変数をいくつか定義する必要があります。

  1. Cloud Shell に移動します。

    Cloud Shell を開く

  2. Cloud Shell で次の環境変数を作成して、チュートリアルの以降の部分で必要となる値を設定します。[YOUR_PROJECT_ID] は使用するプロジェクト 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. 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
    

1 番目のドメイン コントローラの作成

次に、以下のプロパティが設定されたドメイン コントロールを作成します。

  • 名前: ad-dc1
  • IP アドレス: 10.1.0.100

  1. 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. 約 1 分待ってから、Windows インスタンス ad-dc1 のパスワードを作成します。

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

    ユーザー名は Google アカウントのユーザー名です。今後の使用のためにユーザー名とパスワードを記録しておきます。

  3. RDP を使用して、前のステップで作成した認証情報でドメイン コントローラ インスタンスに接続します。

  4. Administrator として PowerShell ターミナルを開きます([スタート] をクリックし、「PowerShell」と入力して Shift+Ctrl+Enter キーを押します)。

  5. Administrator アカウントの Windows 認証情報を設定します。

    net user Administrator *
    

    パスワードを作成するよう求められます。強力なパスワードを使用し、今後使用するためにパスワードを安全な場所に保管してください。

    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. 新しい Active Directory フォレスト構成を 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. プロンプトが表示されたら、セーフモード Administrator パスワードを入力します。パスワードは、将来使用できるように安全な場所に保管してください。

  11. 次の警告を無視して作業を続けます。それぞれの警告が 2 回(前提条件の確認中とインストール プロセスの実行中に)表示されます。

    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 フォレストのインストール時に定義した Administrator の認証情報を使ってドメイン コントローラ ad-dc1 に接続します。EXAMPLE-GCP\Administrator のように、ドメイン名を接頭辞として必ず追加してください。

  14. Administrator として 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 は、2 番目のドメイン コントローラのデプロイ後に使用可能になるため、次のエラーは無視できます。

    The configured DNS server is incorrect or does not exist.
  18. セカンダリ DNS サーバーを構成します。

    netsh interface ip add dns Ethernet $DNSSecondary index=2
    

    このドメイン コントローラ(ad-dc1)の DNS サーバー エントリが、リストの 2 番目に位置する必要があります。これは、AD ともう一方のコントローラの間の接続が頻繁に失われることを防止するためです。2 番目のドメイン コントローラ ad-dc2 をプライマリ DNS サーバーとして使用します。ad-dc2 ドメイン コントローラは次のセクションで作成します。このパターンに従わないと、[サーバー マネージャ] > [Active Directory ドメイン サービス] の下に次のエラーが表示されます。

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

    両方のサーバーの構成がすべて完了する前に、ad-dc1 サーバーでエラーが表示されることがあります。これらのエラーは無視できます。

2 番目のドメイン コントローラの作成

次に、フォールト トレランスを実現するために、異なるゾーンで 2 番目のドメイン コントローラ インスタンスを作成します。2 番目のドメイン コントローラのプロパティは次のとおりです。

  • 名前: 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 を使用して、2 番目のドメイン コントローラ インスタンスを作成します。

    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. 約 1 分待ってから、Windows インスタンス ad-dc2 のパスワードを作成します。

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

    ユーザー名は Google アカウントのユーザー名です。今後の使用のためにユーザー名とパスワードを記録しておきます。

  5. RDP を使用して、前のステップで作成した認証情報でドメイン コントローラ インスタンスに接続します。

  6. Administrator として 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. 2 番目のサーバーが自身のセカンダリ 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 スクリプトを実行します。このスクリプトは、1 番目のドメイン コントローラが動作可能になったことを通知します。[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. 仮想マシンを 2 番目のドメイン コントローラとしてフォレストに追加します。

    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. Administrator アカウントのパスワードを指定するように求められたら、AD フォレストのインストール時に定義した Administrator の認証情報を使用します。EXAMPLE-GCP\Administrator のように、ドメイン名を接頭辞として追加します。

  15. セーフモード Administrator アカウントのパスワードを指定するように求められたら、1 番目のドメイン コントローラに使用したものと同じパスワードを使用します。

  16. 次の警告を無視します。それぞれの警告が 2 回(前提条件の確認中とインストール プロセスの実行中に)表示されます。

    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 を使用して、1 番目のドメイン コントローラのインストール中に定義した管理者の認証情報を使用して、1 番目のドメイン コントローラ インスタンスに接続します。EXAMPLE-GCP\Administrator のように、ドメイン名を接頭辞として追加します。

  3. Administrator として 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 で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

インスタンスの削除

Compute Engine インスタンスを削除するには:

  1. GCP Console の [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. 次のチェックボックスをオンにします。 削除するインスタンス。
  3. インスタンスを削除するには、[削除] () をクリックします。

VPC ネットワークの削除

VPC ネットワーク、サブネット、およびファイアウォール ルールを削除するには、次の手順を実行します。

  1. Cloud Platform Console で、[VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] ページに移動

  2. 作成した VPC ネットワークを選択します。

  3. ページ上部にある [削除] ボタンをクリックします。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...