Windows Server インスタンスの作成と管理

Compute Engine は、Windows Server を含む公開イメージを提供しています。このイメージを使用して、インスタンスを作成できます。SQL Server がプリインストールされた Windows Server インスタンスの作成方法については、SQL Server インスタンスの作成をご覧ください。

Compute Engine 上で実行できる Windows Server インスタンスと Windows アプリケーションの詳細については、Compute Engine での Windows をご覧ください。

始める前に

Windows Server インスタンスの作成

Windows Server インスタンスを作成するには、必要とする特定の Windows バージョンに対応するイメージ ファミリーを指定します。Compute Engine には複数のバージョンの Windows Server が用意されており、そのほとんどが Shielded VM イメージとして提供されています。Shielded VM イメージは、UEFI 準拠のファームウェア、セキュアブート、vTPM で保護されたメジャード ブートなどのセキュリティ機能を備えています。利用可能なイメージ ファミリーの一覧については、公開イメージをご覧ください。

有効化に外部 IP を使用する Windows Server インスタンスを作成する

このセクションでは、外部 IP アドレスが割り当てられた Windows Server インスタンスの作成方法を説明します。kms.windows.googlecloud.com へのアクセスを許可するように VPC ネットワークが構成されている必要があります。

Windows Server インスタンスの作成

Console

基本的な Windows インスタンスを作成するには:

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

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

  2. [インスタンスを作成] をクリックします。
  3. [ブートディスク] の [変更] をクリックし、ブートディスクの構成を開始します。
  4. [Public images] タブで [a Windows image] を選択します。

  5. [選択] をクリックします。
  6. [作成] をクリックしてインスタンスを作成します。

Shielded VM Windows インスタンスを作成するには:

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

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

  2. [インスタンスを作成] をクリックします。
  3. [ブートディスク] セクションで [変更] をクリックし、ブートディスクの構成を開始します。
  4. [公開イメージ] タブで、Windows Server オペレーティング システムのバージョンを選択します。
    Shielded VM イメージのみを表示するには、[Shielded VM の機能を持つイメージを表示する] を選択します。
  5. [保存] をクリックして、ブートディスクの構成を保存します。
  6. 必要に応じて、インスタンスの Shielded VM の設定を変更します。

    1. [管理、セキュリティ、ディスク、ネットワーク] セクションの [セキュリティ] タブをクリックします。
    2. セキュアブートを無効にする場合は、[セキュアブートをオンにします] をオフにします。セキュアブートは、ブートレベルとカーネルレベルの不正なソフトウェアとルートキットから VM インスタンスを保護します。詳細については、セキュアブートをご覧ください。
    3. 仮想トラステッド プラットフォーム モジュール(vTPM)を無効にする場合は、[vTPM をオンにします] をオフにします。vTPM を使用すると、メジャード ブートが有効になり、それによって VM の起動前と起動時の整合性が検証されます。詳細については、仮想トラステッド プラットフォーム モジュール(vTPM)をご覧ください。

    4. 整合性のモニタリングを無効にする場合は、[整合性のモニタリングを有効にする] をオフにします。整合性モニタリングを使用すると、Shielded VM インスタンス起動時の整合性を Cloud Monitoring でモニタリングできます。詳細については、整合性モニタリングをご覧ください。

  7. [作成] をクリックしてインスタンスを作成します。

gcloud

compute images list コマンドを使用して、使用可能な Windows Server イメージのリストを表示します。

gcloud compute images list --project windows-cloud --no-standard-images

イメージが Shielded VM の機能をサポートしているかどうかを確認するには、次のコマンドを実行し、出力の UEFI_COMPATIBLE を確認します。

gcloud compute images describe [IMAGE_NAME] --project windows-cloud

ここで、[IMAGE_NAME] は Shielded VM の機能のサポートを確認するイメージの名前です。

compute instances create コマンドを使用して新しいインスタンスを作成し、Windows Server 公開イメージのイメージ ファミリーのいずれかを指定します。

gcloud compute instances create [INSTANCE_NAME] \
    --image-project windows-cloud \
    --image-family [IMAGE_FAMILY] \
    --machine-type [MACHINE_TYPE] \
    --boot-disk-size [BOOT_DISK_SIZE] \
    --boot-disk-type [BOOT_DISK_TYPE]

ここで

  • [INSTANCE_NAME] は、新しいインスタンスの名前です。
  • [IMAGE_FAMILY] は、Windows Server イメージの公開イメージ ファミリーのいずれかです。
  • [MACHINE_TYPE] は、使用可能なマシンタイプのいずれかです。
  • [BOOT_DISK_SIZE] は、ブートディスクのサイズ(GB)です。永続ディスクのサイズが大きいほど、スループットが高くなります
  • [BOOT_DISK_TYPE] は、インスタンスのブートディスクの種類です。より高速な SSD 永続ディスクを使用する場合は pd-ssd を指定し、標準の HDD 永続ディスクを使用する場合は pd-standard を指定します。

Shielded VM をサポートするイメージを選択した場合は、必要に応じて次のいずれかのフラグを使用して、インスタンスの Shielded VM の設定を変更できます。

  • --no-shielded-secure-boot: セキュアブートを無効にします。セキュアブートは、ブートレベルとカーネルレベルの不正なソフトウェアとルートキットから VM インスタンスを保護します。詳細については、セキュアブートをご覧ください。
  • --no-shielded-vtpm: 仮想トラステッド プラットフォーム モジュール(vTPM)を無効にします。vTPM を使用すると、メジャード ブートが有効になります。これにより VM の起動前と起動時の整合性が検証されます。詳細については、仮想トラステッド プラットフォーム モジュール(vTPM)をご覧ください。

  • --no-shielded-integrity-monitoring: 整合性モニタリングを無効にします。整合性モニタリングを使用すると、Shielded VM インスタンスの起動時の整合性を Cloud Monitoring でモニタリングできます。詳細については、整合性モニタリングをご覧ください。

次の例では、セキュアブートが無効に設定された Windows 2012 の Shielded VM インスタンスを作成します。

gcloud compute instances create my-instance \
--image-family windows-2012-r2 --image-project windows-cloud \
--no-shielded-secure-boot

API

API でインスタンスを作成するには、インスタンス作成リクエストに initializeParams プロパティを含めて、Windows イメージを指定します。たとえば、リクエストの本文は次のようになります。

instance = {
  "name": "[INSTANCE_NAME]",
  "machineType": "zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
  "disks": [{
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
         "diskName": "[DISK_NAME]",
         "sourceImage": "https://compute.googleapis.com/compute/v1/projects/windows-cloud/global/images/family/[IMAGE_FAMILY]",
         "diskSizeGb": "[BOOT_DISK_SIZE]",
         "diskType": "[BOOT_DISK_TYPE]",
       }
    }],
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT"
     }],
    "network": "global/networks/default"
  }],
  "serviceAccounts": [{
       "email": DEFAULT_SERVICE_EMAIL,
       "scopes": DEFAULT_SCOPES
  }]
}

ここで

  • [INSTANCE_NAME] は、新しいインスタンスの名前です。
  • [IMAGE_FAMILY] は、Windows Server または SQL Server イメージの公開イメージ ファミリーのいずれかです。
  • [ZONE] は、このインスタンスのゾーンです。
  • [MACHINE_TYPE] は、使用可能なマシンタイプのいずれかです。
  • [BOOT_DISK_SIZE] は、ブートディスクのサイズ(GB)です。永続ディスクのサイズが大きいほど、スループットが高くなります
  • [BOOT_DISK_TYPE] は、インスタンスのブートディスクの種類です。より高速な SSD 永続ディスクを使用する場合は pd-ssd を指定し、標準の HDD 永続ディスクを使用する場合は pd-standard を指定します。

Shielded VM をサポートするイメージを選択した場合は、必要に応じて次のブール値の項目をリクエスト本文で使用して、インスタンスの Shielded VM の設定を変更できます。

  • enableSecureBoot: セキュアブートを有効または無効にします。セキュアブートは、ブートレベルやカーネルレベルの不正ソフトウェアとルートキットから VM インスタンスを保護します。詳細については、セキュアブートをご覧ください。
  • enableVtpm: 仮想トラステッド プラットフォーム モジュール(vTPM)を有効または無効にします。vTPM を有効にすると、メジャード ブートが有効になります。これにより VM の起動前と起動時の整合性が検証されます。詳細については、仮想トラステッド プラットフォーム モジュール(vTPM)をご覧ください。

  • enableIntegrityMonitoring: 整合性モニタリングを有効または無効にします。整合性モニタリングを有効にすると、Shielded VM インスタンスの起動時の整合性を Cloud Monitoring レポートを使用してモニタリングし、検証できます。詳細については、整合性モニタリングをご覧ください。

インスタンスの作成についての詳細は、instances.insert() のドキュメントをご覧ください。

Windows または SQL Server インスタンスを作成した後で、インスタンスの初期パスワードを設定し、RDP を介してインスタンスに接続できるようにします。

内部 IP アドレスを使用して有効化する Windows Server インスタンスを作成する

内部 IP アドレスのみが割り当てられた Windows Server インスタンスを作成するには、事前に VPC ネットワークのルートとファイアウォール ルールが kms.windows.googlecloud.com へのアクセスを許可することを確認します。許可されていない場合は、許可するように構成する必要があります。さらに、内部 IP アドレスのみが割り当てられた Windows インスタンスを配置する VPC ネットワーク内のサブネットに対して、限定公開の Google アクセスを有効化する必要もあります。

gcloud コマンドラインで新しいインスタンスを作成する場合に、--no-address フラグで外部 IP アドレスが割り当てられていないことを確認できます。

gcloud compute instances create [INSTANCE_NAME] --network [NETWORK_NAME] \
   --subnet [SUBNET_NAME] \
   --no-address \
   --zone [ZONE] \
   --image-project windows-cloud \
   --image-family [IMAGE_FAMILY] \
   --machine-type [MACHINE_TYPE] \
   --boot-disk-size [BOOT_DISK_SIZE] \
   --boot-disk-type [BOOT_DISK_TYPE]

次のプレースホルダを適切な値に置き換えます。

  • [INSTANCE_NAME] は、新しいインスタンスの名前です。
  • [SUBNET_NAME] は、インスタンスで使用する VPC ネットワーク内のサブネットの名前です。このサブネットは、インスタンスに選択したゾーンと同じリージョン内に存在する必要があります。
  • [IMAGE_FAMILY] は、Windows Server イメージの公開イメージ ファミリーのいずれかです。
  • [MACHINE_TYPE] は、使用可能なマシンタイプのいずれかです。
  • [BOOT_DISK_SIZE] は、ブートディスクのサイズ(GB)です。永続ディスクのサイズが大きいほど、スループットが高くなります
  • [BOOT_DISK_TYPE] は、インスタンスのブートディスクの種類です。より高速な SSD 永続ディスクを使用する場合は pd-ssd を指定し、標準の HDD 永続ディスクを使用する場合は pd-standard を指定します。

このインスタンスには外部 IP アドレスがないため、インターネットを介して直接インスタンスに接続することはできません。Cloud Interconnect または Cloud VPN を使用すると、VPC ネットワークに接続する別のネットワークからインスタンスに接続できます。あるいは、RDP を介して要塞インスタンスに接続し、そこから内部 IP アドレスしか割り当てられていないインスタンスに接続することもできます。

kms.windows.googlecloud.com へのアクセスを構成する

Windows の有効化と更新を行うには、VPC ネットワークがルーティングとファイアウォール ルールに関する次の要件を満たしている必要があります。

ルーティングの要件

Windows インスタンスは、ネクストホップがデフォルトのインターネット ゲートウェイとなっているルート経由で kms.windows.googlecloud.com35.190.247.13)に到達できる必要があります。kms.windows.googlecloud.com は Compute Engine インスタンスとして確認されていない IP アドレスからの有効化リクエストを拒否するため、インスタンス ベースの NAT ゲートウェイや Cloud NAT を使用して Windows インスタンスを有効化することはできません。

VPC ネットワークのデフォルト ルートで、トラフィックを直接 kms.windows.googlecloud.com にルーティングできます。このルートを削除する場合、あるいは削除予定の場合は、宛先を 35.190.247.13、ネクストホップをデフォルトのインターネット ゲートウェイに設定して、カスタム静的ルートを作成してください。

gcloud compute routes create [ROUTE_NAME] \
    --destination-range=35.190.247.13/32 \
    --network=[NETWORK] \
    --next-hop-gateway=default-internet-gateway

[ROUTE_NAME] はこのルートに付ける名前に置き換え、[NETWORK] は VPC ネットワークの名前に置き換えます。

デフォルト ルート、上述のカスタム静的ルートどちらでも、外部 IP アドレスが割り当てられたインスタンスは kms.windows.googlecloud.com に到達できます。外部 IP アドレスのない Windows インスタンスの場合は、限定公開の Google アクセスを有効にする必要があります。これにより、内部 IP アドレスしか割り当てられていないインスタンスでもトラフィックを kms.windows.googlecloud.com の外部 IP アドレスに送信できるようになります。IP アドレス(35.190.247.13)は、Google API とサービスの IP アドレスのリストに記載されています。

ファイアウォール ルールの要件

ファイアウォールの暗黙の下り許可ルールにより、インスタンスにはリクエストの送信と、確立されたレスポンスの受信が許可されます。下りを拒否するカスタム ファイアウォール ルールが作成されていない限り、Windows インスタンスは kms.windows.googlecloud.com と通信できます。

ファイアウォール ルールをカスタマイズする場合におすすめの方法は、35.190.247.13 との通信を明示的に許可する、高優先度の下り許可ルールを作成することです。この方法でファイアウォール ルールを変更すれば、WIndows 有効化が誤って無効にされることはありません。

次の gcloud の例では、推奨される高優先度の下り許可ルールを作成します。

gcloud compute firewall-rules create [RULE_NAME] \
    --direction=EGRESS \
    --network=[NETWORK] \
    --action=ALLOW \
    --rules=tcp:1688 \
    --destination-ranges=35.190.247.13/32 \
    --priority=0

[RULE_NAME] をファイアウォール ルールに指定する名前に、[NETWORK] を VPC ネットワークの名前に置き換えます。

インスタンスの正常起動の確認

sysprep システムにより、Windows インスタンスの起動に時間がかかります。sysprep プロセスが完了していない場合でも、Cloud Console でインスタンスが実行中と表示されることがあります。インスタンスが正常に起動し、使用できる状態であるか確認するには、次のコマンドでシリアルポート出力を確認します。

gcloud compute instances get-serial-port-output [INSTANCE_NAME]

ここで、[INSTANCE_NAME] は確認するインスタンスの名前です。

...[snip]...
Running schtasks with arguments /run /tn GCEStartup
-->  SUCCESS: Attempted to run the scheduled task "GCEStartup".
-------------------------------------------------------------
Instance setup finished. [INSTANCE_NAME] is ready to use.
-------------------------------------------------------------

Google 提供のコンポーネント更新を無効にする

イメージ バージョン v20170509 以降、またはエージェント バージョン 4.1.0 以降の Windows インスタンスを使用している場合は、エージェント、メタデータ、sysprep スクリプトなどの Google 提供のコンポーネントは、スケジュール設定されたタスクにより自動更新されます。スケジュールされたタスクは、google-compute-engine-auto-updater パッケージによって設定されます。

手動でアップデートを管理する場合や、代替システムを使用してアップデートを管理する場合に、google-compute-engine-auto-updater パッケージを削除することで、コンポーネントの自動更新を無効にできます。

  1. Windows Server インスタンスで、管理者として PowerShell ターミナルを開きます。
  2. googet remove コマンドを実行してパッケージを削除します。

    PS C:\\> googet remove google-compute-engine-auto-updater
    

パッケージの再インストール、コンポーネントの自動更新の有効化ができます。この操作はオプションです。

  1. Windows Server インスタンスで、管理者として PowerShell ターミナルを開きます。
  2. googet install コマンドを実行してパッケージをインストールします。

    PS C:\\> googet install google-compute-engine-auto-updater
    

また、プロジェクトやインスタンスのカスタム メタデータに含まれる disable-agent-updates の値を true に設定して更新を無効にすることもできます。メタデータ値は、パッケージやタスクを削除せずに更新を無効にします。

Windows インスタンス機能の有効化と無効化

Windows インスタンスでバージョン v20170509 以降のイメージ、またはバージョン 4.1.0 以降のエージェントを使用している場合、構成ファイルあるいはプロジェクトまたはインスタンスのカスタム メタデータでインスタンス構成を設定できます。構成ファイルは INI 形式であり、次のパスにあります。

C:\Program Files\Google\Compute Engine\instance_configs.cfg

システムは、優先度の高い設定から順に、以下の優先順位で構成設定を上書きします。

  1. 構成ファイルで設定した構成パラメータ
  2. インスタンスレベルのカスタム メタデータで設定された構成パラメータ
  3. プロジェクトレベルのカスタム メタデータで設定された構成パラメータ

たとえば、構成ファイルで accountManager 機能を有効にできる場合、インスタンスはカスタム メタデータで設定した、その機能を無効にするパラメータを無視します。

Windows Server インスタンス用にカスタム イメージを作成する際、これらの設定が維持されます。これが、構成ファイルでパラメータを設定する利点の 1 つです。インスタンスレベルのカスタム メタデータは、インスタンスの存続期間によって制限されます。

以下の例を使用して、異なる Windows インスタンス機能を無効にできます。

アカウント マネージャーを無効にします。これにより、gcloud コマンドライン ツールやコンソールの再設定パスワードも無効になります。

  • 構成ファイル:

    [accountManager]
    disable=true
    
  • カスタム メタデータで、メタデータの中の disable-account-managertrue に設定します。

アドレス マネージャーを無効にします。

  • 構成ファイルのエントリ:

    [addressManager]
    disable=true
    
  • カスタム メタデータで、メタデータの中の disable-address-managertrue に設定します。

Windows Server フェイルオーバー クラスタリング

Windows Server フェイルオーバー クラスタリング エージェントを有効にします。

  • 構成ファイルのエントリ:

    [wsfc]
    enable=true
    
  • カスタム メタデータで、メタデータの中の enable-wsfctrue に設定します。

複数の内部ロードバランサの使用

フェイルオーバー クラスタリング用の内部負荷分散インスタンスの IP アドレスを指定します。これは、専用のフェイルオーバー クラスタには構成する必要のない高度な構成です。

通常は、内部負荷分散のインスタンスを使用して、一度に 1 つの VM インスタンスにネットワーク トラフィックを誘導します。負荷分散されたウェブサイトのバックエンドの一部としてフェイルオーバー クラスタリング VM インスタンスを使用する内部負荷分散の 2 番目のインスタンスを追加する場合、2 つの内部負荷分散 IP アドレスが必要になります。フェイルオーバー クラスタリングが 10.0.0.10 を使用し、ウェブサイトのロードバランサが 10.0.0.11 を使用する場合、フェイルオーバー クラスタリングに使用するロードバランサの IP アドレスを指定する必要があります。これにより、どのアドレスがクラスタで使用されているかが明確になります。

  • 構成ファイルのエントリ:

    [wsfc]
    addresses=10.0.0.10
    
  • カスタム メタデータで、wsfc-addrs10.0.0.10 に設定します。

クラスタリング エージェントのポートの変更

フェイルオーバー クラスタリング エージェントのポートを設定します。デフォルト ポートは 59998 です。別のポートを使用する場合にのみ、ポートを指定する必要があります。

  • 構成ファイルのエントリ:

    [wsfc]
    port=12345
    
  • カスタム メタデータで、wsfc-agent-port をポート番号に設定します。

イメージ バージョンの注意事項

古いイメージは構成ファイルを使用しません。機能のサブセットを持つのみです。バージョンが v20160112 から v20170509 の間のイメージ、またはバージョンが 3.2.1.0 から 4.0.0 の間の Windows エージェントでは、次のカスタム メタデータの値を使用する必要があります。

  • インスタンスのメタデータで disable-account-managertrue に設定して、アカウント マネージャーを無効にします。
  • インスタンスのメタデータで disable-address-managertrue に設定して、アドレス マネージャーを無効にします。

次のステップ