このチュートリアルは、Microsoft Active Directory、SQL Server、Internet Information Services(IIS)を使用して高可用性の Windows アーキテクチャを Google Cloud にデプロイする方法を説明するシリーズの第 1 部です。このチュートリアルでは、新しい Virtual Private Cloud(VPC)ネットワークと複数のサブネットを使用して、Active Directory と Windows ドメイン コントローラの冗長ペアを設定します。
このシリーズは次のチュートリアルで構成されています。
- フォールト トレラントな Microsoft Active Directory 環境のデプロイ(このドキュメント)
- マルチ サブネット SQL Server のデプロイ
- 負荷分散された IIS ウェブサーバーのデプロイ
各チュートリアルは、前のチュートリアルで作成したインフラストラクチャに基づいています。
このチュートリアルでは、他のアーキテクチャで使用する Active Directory の構成方法についても説明します。このガイドでは、リモートの Active Directory 環境を新しい Google Cloud ベースの Active Directory 環境に複製する方法については説明しませんが、Cloud VPN と追加の Active Directory 構成を使用して複製を行うことができます。
アーキテクチャ
目標
- 2 つのゾーンにまたがる 2 つのサブネットがあるカスタムモードの VPC ネットワークを作成する。
- Windows Server 仮想インスタンスを作成し、Active Directory ドメイン サービスを有効にする。
- Active Directory を使用して新しいドメインを構成する。
- 新しい Windows Server インスタンスを新しいドメインに参加させる。
- 仮想マシンへのトラフィックを許可するようにファイアウォール ルールを構成する。
- 構成をテストする。
費用
このチュートリアルでは、Google Cloud の課金対象となる以下のコンポーネントを使用します。
料金計算ツールの見積もりでは、この環境の費用は 1 日あたり約 $4 です。
始める前に
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
共通変数の初期化
インフラストラクチャの要素がデプロイされる場所を制御する環境変数をいくつか定義する必要があります。
Cloud Shell に移動します。
Cloud Shell で次の環境変数を作成して、チュートリアルの以降の部分で必要となる値を設定します。
下のコマンドは、リージョンを
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
your-project-id は、使用している Google Cloud プロジェクトの ID に置き換えます。
次のコマンドを実行して、デフォルトのリージョンとプロジェクト ID を設定します。これにより、以降の各コマンドでこれらの値を指定する必要がなくなります。
gcloud config set compute/region ${region} gcloud config set project ${project_id}
ネットワーク インフラストラクチャの作成
インフラストラクチャ変数を定義したら、Active Directory が使用するネットワークとサブネットを作成します。
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
サブネット間のトラフィックを許可する内部ファイアウォール ルールを作成します。
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
あらゆる場所からポート
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
最初のドメイン コントローラとして使用する Windows Server 2016 の 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
1 分ほど待ってから、Windows インスタンス
ad-dc1
のパスワードを作成します。gcloud compute reset-windows-password ad-dc1 --zone ${zone_1} --quiet
ユーザー名は Google アカウントのユーザー名です。今後の使用のためにユーザー名とパスワードを記録しておきます。
RDP を使用して、前のステップで作成した認証情報でドメイン コントローラ インスタンスに接続します。
Administrator として PowerShell ターミナルを開きます([スタート] をクリックし、「PowerShell」と入力して Shift+Ctrl+Enter キーを押します)。
Administrator アカウントの Windows 認証情報を設定します。
net user Administrator *
パスワードを作成するよう求められます。強力なパスワードを使用し、今後使用するためにパスワードを安全な場所に保管してください。
Administrator アカウントは、Active Director フォレストの作成後にドメイン管理者アカウントになります。
アカウントを有効にします。
net user Administrator /active:yes
Active Directory ドメイン サービス(管理ツールを含む)をインストールします。
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
以下の変数を設定します。
$DomainName = "example-gcp.com" $DomainMode = "7" $ForestMode = "7" $DatabasePath = "C:\Windows\NTDS" $SysvolPath = "C:\Windows\SYSVOL" $LogPath = "C:\Logs"
新しい 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
プロンプトが表示されたら、セーフモード Administrator パスワードを入力します。パスワードは、将来使用できるように安全な場所に保管してください。
次の警告を無視して作業を続けます。それぞれの警告が 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.
仮想マシンを再起動します。
Restart-Computer
RDP を使用し、Active Directory フォレストのインストール時に定義した Administrator の認証情報を使ってドメイン コントローラ
ad-dc1
に接続します。EXAMPLE-GCP\Administrator
のように、ドメイン名をプレフィックスとして追加します。Administrator として PowerShell ターミナルを開きます。
以下の変数を設定します。
$DNSPrimary = "10.2.0.100" $DNSSecondary = "127.0.0.1" $LocalStaticIp = "10.1.0.100" $DefaultGateway = "10.1.0.1"
IP アドレスとデフォルト ゲートウェイを設定します。
netsh interface ip set address name=Ethernet static ` $LocalStaticIp 255.255.255.0 $DefaultGateway 1
プライマリ DNS サーバーを構成します。
netsh interface ip set dns Ethernet static $DNSPrimary
DNS サーバー
ad-dc2
は、2 番目のドメイン コントローラのデプロイ後に使用可能になるため、次のエラー メッセージは無視します。The configured DNS server is incorrect or does not exist.
セカンダリ DNS サーバーを構成します。
netsh interface ip add dns Ethernet $DNSSecondary index=2
このドメイン コントローラ(
ad-dc1
)の DNS サーバー エントリが、リストの 2 番目に位置する必要があります。これは、Active Directory ともう一方のコントローラの間の接続が頻繁に失われることを防止するためです。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
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}
your-project-id は、使用している Cloud プロジェクトの ID に置き換えます。
スクリプトを Cloud Shell ウィンドウにコピーして実行します。
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
1 分ほど待ってから、Windows インスタンス
ad-dc2
のパスワードを作成します。gcloud compute reset-windows-password ad-dc2 --zone ${zone_2} --quiet
ユーザー名は Google アカウントのユーザー名です。今後の使用のためにユーザー名とパスワードを記録しておきます。
RDP を使用して、前のステップで作成した認証情報でドメイン コントローラ インスタンスに接続します。
Administrator として PowerShell ターミナルを開きます。
Active Directory ドメイン サービス(管理ツールを含む)をインストールします。
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
以下の変数を設定します。
$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"
プライマリ DNS サーバーを構成します。
netsh interface ip set dns Ethernet static $DNSPrimary
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.
IP アドレスとデフォルト ゲートウェイを設定します。
netsh interface ip set address name=Ethernet static ` $LocalStaticIp 255.255.255.0 $DefaultGateway 1
次の 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" }
仮想マシンを 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
Administrator アカウントのパスワードを指定するように求められたら、Active Directory フォレストのインストール時に定義した Administrator の認証情報を使用します。
EXAMPLE-GCP\Administrator
のようにドメイン名をプレフィックスとして追加します。セーフモード Administrator アカウントのパスワードを指定するように求められたら、1 番目のドメイン コントローラに使用したものと同じパスワードを使用します。
次の警告を無視します。それぞれの警告が 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.
仮想マシンを再起動します。
Restart-Computer
インストールのテスト
5~10 分待って、両方のドメイン コントローラが動作し、情報を複製していることを確認します。
RDP を使用して、1 番目のドメイン コントローラのインストール中に定義した管理者の認証情報を使用して、1 番目のドメイン コントローラ インスタンスに接続します。
EXAMPLE-GCP\Administrator
のようにドメイン名をプレフィックスとして追加します。Administrator として PowerShell ターミナルを開きます。
複製が機能していることをテストします。
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このメッセージが表示された場合は、数分待ってからコマンドを再試行してください。
クリーンアップ
このシリーズの次のチュートリアル(マルチ サブネット SQL Server のデプロイ)に進む場合は、このチュートリアルで作成したリソースをそのまま使用してください。ただし、このチュートリアルで作成した Active Directory 環境を使用しない場合は、Google Cloud で作成したリソースをクリーンアップして料金が発生しないようにします。以下のセクションでは、このようなリソースを削除または無効にする方法を説明します。
プロジェクトの削除
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
インスタンスの削除
Compute Engine インスタンスを削除するには:
- In the Google Cloud console, go to the VM instances page.
- Select the checkbox for the instance that you want to delete.
- To delete the instance, click More actions, click Delete, and then follow the instructions.
VPC ネットワークの削除
VPC ネットワーク、サブネット、ファイアウォール ルールを削除するには:
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
作成した VPC ネットワークを選択します。
ページ上部にある [削除] ボタンをクリックします。
次のステップ
- このシリーズの次のチュートリアルに進む。
- ハイブリッド環境での Active Directory の使用パターンを学習する。
- ID とアクセスを管理するためのベスト プラクティスを確認する。
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud Architecture Center をご覧ください。