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

Google Cloud Platform(GCP)で Windows Server を使用してフェイルオーバー クラスタを作成できます。サーバーのグループが連携して Windows アプリケーションの可用性を向上させます。あるクラスタノードで障害が発生すると、別のノードがソフトウェアの実行を引き継ぎます。通常、フェイルオーバーは自動的に行われるようにします。また、フェイルオーバーを手動で開始することもできます。

このチュートリアルは、読者がフェイルオーバー クラスタリング、Active Directory(AD)、および Windows Server の管理に精通していることを前提とします。

GCP のネットワーキングの概要については、データセンター プロフェッショナルのための GCP: ネットワーキングをご覧ください。

アーキテクチャ

このチュートリアルでは、Compute Engine でフェイルオーバー クラスタの一例を作成する方法について説明します。このシステム例には次の 3 つのサーバーが含まれます。

  • Windows Server 2016 を実行するメインの Compute Engine VM インスタンス。
  • メイン インスタンスと一致するように構成された 2 番目のインスタンス。
  • AD ドメインネーム サーバー(DNS)。このサーバーは次の役割を担います。

    • Windows ドメインを提供します。
    • ホスト名を IP アドレスに解決します。
    • クラスタの必要なクォーラムを達成するために 3 番目の「投票者」となるファイル共有監視をホストします。

AD DNS は、この例を実現可能にするためだけに作成します。本番環境システムでは、ファイル共有監視を他の場所でホストできます。フェイルオーバー クラスタをサポートするためだけに別個の AD システムを配置する必要はありません。GCP での AD の使用に関する記事については、次のステップのリンクをご覧ください。

次の図は、このチュートリアルでデプロイするアーキテクチャを示します。

フェイルオーバー クラスタ内の 2 つの Compute Engine VM を示すアーキテクチャ図

ネットワーク ルーティングの理解

クラスタがフェイルオーバーした後、リクエストは新しくアクティブになったノードに送られる必要があります。クラスタリング技術は通常、アドレス解決プロトコル(ARP)を使用してルーティングを処理します。このプロトコルは IP アドレスと MAC アドレスを関連付けます。GCP の Virtual Private Cloud(VPC)システムはソフトウェア定義ネットワーキングを使用します。これは MAC アドレスを提供しません。つまり、ARP によってブロードキャストされた変更はルーティングにまったく影響しません。したがって、クラスタでルーティングを機能させるには、内部ロードバランサからソフトウェアレベルの支援を受ける必要があります。

通常、内部負荷分散は、負荷を共有するために着信ネットワーク トラフィックを VPC 内部の複数のバックエンド インスタンスに分散します。フェイルオーバー クラスタリングでは、内部負荷分散を使用してすべてのトラフィックをただ 1 つのインスタンス(現在アクティブなクラスタノード)にルーティングします。内部負荷分散は次の方法で正しいノードを検出します。

  • 各 VM インスタンスは、Windows フェイルオーバー クラスタリングをサポートする Compute Engine エージェント インスタンスを実行します。このエージェントは VM インスタンスの IP アドレスを追跡します。
  • ロードバランサのフロントエンドは、着信トラフィック用の IP アドレスをアプリケーションに提供します。
  • ロードバランサのバックエンドはヘルスチェックを実行します。ヘルスチェック プロセスは、特定のポートを通じて VM インスタンスの固定 IP アドレスを使用することにより、各クラスタノード上のエージェントに定期的に ping します。デフォルト ポートは 59998 です。
  • ヘルスチェックには、リクエストのペイロードとしてアプリケーションの IP アドレスが含まれます。
  • エージェントは、リクエスト内の IP アドレスをホスト VM の IP アドレスのリストと比較します。一致する IP アドレスが見つかった場合、エージェントは値 1 のレスポンスを返します。それ以外の場合は 0 のレスポンスを返します。
  • ロードバランサは、ヘルスチェックに合格した VM に「正常」マークを付けます。ヘルスチェックに合格する VM は常に 1 つだけです。これは、そのワークロードの IP アドレスを持つ VM が 1 つしか存在しないためです。

フェイルオーバー時の動作

クラスタでフェイルオーバーが発生すると、次の変更が起こります。

  • Windows フェイルオーバー クラスタリングのアクティブ ノードで障害が発生したことを示すため、アクティブ ノードのステータスが変更されます。
  • クォーラムの定義に従って、障害が発生したノードから最適なノードにすべてのクラスタ リソースと役割が移動します。このアクションには、関連する IP アドレスの移動も含まれます。
  • ARP パケットがブロードキャストされ、IP アドレスが移動したことがハードウェアベースのネットワーク ルーターに通知されます。このシナリオでは、GCP ネットワーキングはこれらのパケットを無視します。
  • 移動後、障害ノードの VM ではリクエストで指定された IP アドレスはホストされないため、その VM 上の Compute Engine エージェントは、ヘルスチェックへのレスポンスを 1 から 0 に変更します。
  • 同様に、新しくアクティブになったノードの VM 上の Compute Engine エージェントもヘルスチェックへのレスポンスを 0 から 1 に変更します。
  • 内部ロードバランサは、障害ノードへのトラフィックのルーティングを停止し、新しくアクティブになったノードにトラフィックをルーティングします。

まとめ

これでおおよその概念がわかったので、次に上記のアーキテクチャ図について注目すべき点をいくつか示します。

  • wsfc-2 という名前の VM の Compute Engine エージェントは、ヘルスチェックに対して値 1 のレスポンスを返しています。これは、この VM が現在アクティブなクラスタノードであることを示します。wsfc-1 はレスポンス 0 を返しています。
  • ロードバランサは、矢印で示されているように、リクエストを wsfc-2 にルーティングします。
  • ロードバランサと wsfc-2 はどちらも IP アドレス 10.0.0.9 を持っています。ロードバランサの場合、これは指定されたフロントエンド IP アドレスです。VM の場合、これはアプリケーションの IP アドレスです。この IP アドレスは、フェイルオーバー クラスタの現在アクティブなノードに設定されます。
  • ロードバランサと wsfc-2 はどちらも IP アドレス 10.0.0.8 を持っています。VM がこの IP アドレスを持っているのは、この VM が現在クラスタ リソースをホストしているためです。

このチュートリアルを進める際のアドバイス

このチュートリアルには多くのステップがあります。場合によっては、Microsoft のドキュメントなどの外部ドキュメントの手順に従うよう指示されていることがあります。外部の手順に従うときは、このドキュメントに示された関連する注意事項を必ずお読みください。

このチュートリアルでは、Google Cloud Platform Console で Cloud Shell を使用します。GCP Console のユーザー インターフェースまたは Cloud SDK を使用してフェイルオーバー クラスタリングをセットアップすることも可能ですが、このチュートリアルでは作業を簡単に進められるように、主に Cloud Shell を使用しています。これにより、チュートリアルをより短時間で完了できます。手順によっては、GCP Console を使用するよう指示されていることもあります。

Cloud Shell

途中で Compute Engine の永続ディスクのスナップショットを作成することをおすすめします。何か問題が生じた場合は、スナップショットを使用することで、最初からやり直さなくて済みます。スナップショットを作成するタイミングは、その都度チュートリアルで指示されています。

手順がうまくいかない場合に備えて、そのとき読んでいるセクションに問題の対処方法が記載されている場合があります。そのような記載がない場合は、トラブルシューティングのセクションをご覧ください。

目標

  • ネットワークを作成する。
  • 2 つの Compute Engine VM に Windows Server 2016 をインストールする。
  • Windows Server の 3 番目のインスタンスに Active Directory をインストールして構成する。
  • フェイルオーバー クラスタをセットアップする(クォーラム用のファイル共有監視、ワークロードの役割を含む)。
  • 内部ロードバランサをセットアップする。
  • フェイルオーバーのオペレーションをテストして、クラスタが機能していることを確認する。

費用

このチュートリアルでは、Windows Server ライセンスを含む Compute Engine イメージを使用します。つまり、VM を実行したままにしておくと、このチュートリアルを実行するために相当な費用がかかる可能性があります。VM を使用していないときに VM を停止することをおすすめします。

このチュートリアルを完了するための費用の見積もりについては、料金計算ツールをご覧ください。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

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

    [リソースの管理] ページに移動

  3. プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

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

    APIを有効にする

  5. Cloud Shell のインスタンスを開始します。
    Cloud Shell を開く

ネットワークの作成

これから作成するクラスタにはカスタム ネットワークが必要です。Cloud Shell で gcloud コマンドを実行して、VPC を使用したカスタム ネットワークと 1 つのサブネットワークを作成します。

  1. ネットワークを作成します。

    gcloud compute networks create wsfcnet --subnet-mode custom
    

    作成したネットワークの名前は wsfcnet です。

  2. サブネットワークを作成します。[YOUR_REGION] は近くの GCP リージョンに置き換えます。

    gcloud compute networks subnets create wsfcnetsub1 --network wsfcnet --region [YOUR_REGION] --range 10.0.0.0/16`
    

    作成したサブネットワークの名前は wsfcnetsub1 です。

このサブネットワークの IP アドレスの CIDR 範囲は 10.0.0.0/16 です。これは範囲の一例であり、このチュートリアルではこの範囲を使用します。本番環境システムでは、ネットワーク管理者と相談して、システムの IP アドレスにとって適切な範囲を割り当ててください。

ファイアウォール ルールを作成する

デフォルトでは、ネットワークは外部トラフィックに対して閉じています。サーバーへのリモート接続を可能にするため、ファイアウォールのポートを開く必要があります。Cloud Shell で gcloud コマンドを使用してルールを作成します。

  1. このチュートリアルでは、SSH 接続と RDP 接続を可能にするため、メイン ネットワーク上のポート 22 と 3389 を開きます。次のコマンドの [YOUR_IPv4_ADDRESS] は、VM インスタンスへの接続に使用するコンピュータの IP アドレスに置き換えます。本番環境システムでは、IP アドレス範囲または一連のアドレスを指定できます

    gcloud compute firewall-rules create allow-ssh --network wsfcnet --allow tcp:22,tcp:3389 --source-ranges [YOUR_IPv4_ADDRESS]`
    
  2. サブネットワークでは、サーバーが相互に通信できるように、すべてのポート上ですべてのプロトコルを許可します。本番環境システムでは、必要に応じて特定のポートだけを開くことを検討してください。

    gcloud compute firewall-rules create allow-all-subnet --network wsfcnet --allow all --source-ranges 10.0.0.0/16`
    

    source-ranges の値がサブネットワークの作成時に使用した CIDR 範囲と一致していることに注意してください。

  3. ファイアウォール ルールを表示します。

    gcloud compute firewall-rules list
    

    出力は次のようになります。

    NAME              NETWORK  DIRECTION  PRIORITY  ALLOW            DENY
    allow-all-subnet  wsfcnet  INGRESS    1000      all
    allow-ssh         wsfcnet  INGRESS    1000      tcp:22,tcp:3389

Compute Engine でフェイルオーバー クラスタリングを有効にする

カスタム メタデータを追加して、Compute Engine エージェントでフェイルオーバー クラスタリングを有効にします。わかりやすくするため、このチュートリアルではプロジェクト レベルのメタデータを使用します。これらのメタデータの属性はプロジェクト内のすべての VM に適用されます。その他に、VM ごとに個別のメタデータを追加したり、各 VM に構成ファイルを作成したりすることもできます。詳しくは、Compute Engine のドキュメントをご覧ください。このチュートリアルでは、wsfc-addrswsfc-agent-port についてはデフォルトの動作のままにします。これらの値を設定する必要はありません。

gcloud compute project-info add-metadata --metadata enable-wsfc=true

サーバーの作成

次に、3 つのサーバーを作成します。Cloud Shell で gcloud コマンドを使用します。

最初のクラスタノード サーバーを作成する

新しい Compute Engine インスタンスを作成します。インスタンスを次のように構成します。

  • インスタンスに wsfc-1 という名前を付けます。
  • --zone フラグを近くのゾーンに設定します。[YOUR_ZONE] を近くの便利なゾーン(us-central1-a など)に置き換えます。
  • --machine-type フラグを n1-standard-2 に設定します。
  • --image-project フラグを windows-cloud に設定します。
  • --image-family フラグを windows-2016 に設定します。
  • --scopes フラグを https://www.googleapis.com/auth/compute に設定します。
  • --can-ip-forward フラグを設定して IP 転送を有効にします。
  • --private-network-ip フラグを 10.0.0.4 に設定します。
  • ネットワークを wsfcnet に設定し、サブネットワークを wsfcnetsub1 に設定します。

次のコマンドを実行します。[YOUR_ZONE] は使用するゾーンの名前に置き換えます。

gcloud compute instances create wsfc-1 --zone [YOUR_ZONE] --machine-type n1-standard-2 --image-project windows-cloud --image-family windows-2016 --scopes https://www.googleapis.com/auth/compute --can-ip-forward --private-network-ip 10.0.0.4 --network wsfcnet --subnet wsfcnetsub1

2 番目のクラスタノード サーバーを作成する

2 番目のサーバーについても同じ手順に従いますが、次の点のみ変更します。

  • インスタンス名を wsfc-2 に設定します。
  • --private-network-ip フラグを 10.0.0.5 に設定します。

[YOUR_ZONE] は使用するゾーンの名前に置き換えます。

gcloud compute instances create wsfc-2 --zone [YOUR_ZONE] --machine-type n1-standard-2 --image-project windows-cloud --image-family windows-2016 --scopes https://www.googleapis.com/auth/compute --can-ip-forward --private-network-ip 10.0.0.5 --network wsfcnet --subnet wsfcnetsub1

Active Directory 用の 3 番目のサーバーを作成する

ドメイン コントローラについても同じ手順に従いますが、次の点のみ変更します。

  • インスタンス名を wsfc-dc に設定します。
  • --private-network-ip フラグを 10.0.0.6 に設定します。

[YOUR_ZONE] は使用するゾーンの名前に置き換えます。

gcloud compute instances create wsfc-dc --zone [YOUR_ZONE] --machine-type n1-standard-2 --image-project windows-cloud --image-family windows-2016 --scopes https://www.googleapis.com/auth/compute --can-ip-forward --private-network-ip 10.0.0.6 --network wsfcnet --subnet wsfcnetsub1

インスタンスを表示する

作成したインスタンスの詳細を表示できます。

gcloud compute instances list

出力は次のようになります。

NAME     ZONE        MACHINE_TYPE      PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
wsfc-1   us-central1-a  n1-standard-2               10.0.0.4     35.203.131.133  RUNNING
wsfc-2   us-central1-a  n1-standard-2               10.0.0.5     35.203.130.194  RUNNING
wsfc-dc  us-central1-a  n1-standard-2               10.0.0.6     35.197.27.2     RUNNING

Compute Engine インスタンス グループを作成する

クラスタノードを含むインスタンス グループを作成することで、必要な内部ロードバランサを作成できます。ロードバランサは後のセクションで作成します。ドメイン コントローラ wsfc-dc をインスタンス グループに追加しないでください。

[YOUR_ZONE] は使用するゾーンの名前に置き換えます。

gcloud compute instance-groups unmanaged create wsfc-group --zone=[YOUR_ZONE]
gcloud compute instance-groups unmanaged add-instances wsfc-group --instances wsfc-1,wsfc-2 --zone [YOUR_ZONE]

RDP による接続

RDP を使用して Windows VM インスタンスに接続する方法の詳細については、Compute Engine のドキュメントに記載されています。これには次の方法があります。

  • 既存のクライアントを使用する。
  • Chrome RDP プラグインをブラウザに追加してから、GCP Console を通じて接続する。

    RDP の使用方法を見る

このチュートリアルでは、Windows インスタンスに接続する際、好みの RDP 接続方法を使用できます。

Windows ネットワークの構成

GCP ゲートウェイの IP アドレスを取得します。Cloud Shell で、[YOUR_REGION] をリージョンの名前に置き換えて次のコマンドを実行します。

gcloud compute networks subnets describe wsfcnetsub1 --region [YOUR_REGION]

出力には、次のようなゲートウェイの IP アドレスが含まれます。

gatewayAddress: 10.0.0.1

ここで、RDP を使用して wsfc-1wsfc-2wsfc-dc に接続し、各インスタンスに対して次の手順を繰り返します。

  1. サーバー マネージャーの左ペインで [ローカル サーバー] を選択します。
  2. [プロパティ] ペインの [イーサネット] で [DHCP による割り当て] をクリックします。
  3. [イーサネット] を右クリックして [プロパティ] を選択します。
  4. [インターネット プロトコル バージョン 4 (TCP/IPv4)] をダブルクリックします。
  5. [次の IP アドレスを使う] を選択します。
  6. 作成時に VM に割り当てた IP アドレスを入力します。

    • wsfc-1 の場合は「10.0.0.4」と入力します。
    • wsfc-2 の場合は「10.0.0.5」と入力します。
    • wsfc-dc の場合は「10.0.0.6」と入力します。
  7. [サブネット マスク] に「255.255.0.0」と入力します。

  8. [デフォルト ゲートウェイ] に、wsfcnetsub1 のゲートウェイの IP アドレスを入力します。これはこのセクションの最初に調べた IP アドレスです。

  9. wsfc-1wsfc-2 の場合は、[次の DNS サーバーのアドレスを使う] をクリックします。wsfc-dc はドメイン コントローラなので、その VM の [デフォルト ゲートウェイ] は空のままにします。

  10. [優先 DNS サーバー] に「10.0.0.6」と入力します。

  11. すべてのダイアログ ボックスを閉じます。

    これらの変更を適用すると VM インスタンスの仮想ネットワーク アダプタがリセットされるため、RDP 接続は失われます。

  12. RDP セッションを閉じてから、インスタンスに再接続します。前の手順のダイアログ ボックスがまだ開いている場合は、閉じます。

  13. ローカル サーバーのプロパティ セクションで、[イーサネット] の設定にローカル サーバーの IP アドレス(10.0.0.410.0.0.5、または 10.0.0.6)が反映されていることを確認します。反映されていない場合は、[インターネット プロトコル バージョン 4 (TCP/IPv4)] ダイアログ ボックスを再度開き、設定を更新します。

ここで wsfc-1wsfc-2 のスナップショットを作成することをおすすめします。

Active Directory のセットアップ

次に、ドメイン コントローラをセットアップします。

  1. RDP を使用して、wsfc-dc という名前のサーバーに接続します。
  2. ローカル管理者アカウントのパスワードを設定します。
  3. ローカル管理者アカウントを有効にします。
  4. 下記の Microsoft の手順に従ってドメイン コントローラをセットアップします。この作業に関する追加の注意事項を次に示します。ほとんどの設定でデフォルト値を使用できます。

    • [DNS サーバー] の役割チェックボックスをオンにします。これは Microsoft の手順に示されていません。
    • [必要に応じて対象サーバーを自動的に再起動する] チェックボックスをオンにします。
    • ファイル サーバーをドメイン コントローラに昇格させます。
    • [新しいフォレストを追加する] のステップで、ドメインに「WSFC.TEST」という名前を付けます。
    • NetBIOS ドメイン名を「WSFC」(デフォルト)に設定します。

    Microsoft の手順

ここで wsfc-dc のスナップショットを作成することをおすすめします。

ドメイン ユーザー アカウントを作成する

wsfc-dc が再起動するまで少し時間がかかることがあります。サーバーをドメインに参加させる前に、RDP を使用して wsfc-dc にログインし、ドメイン コントローラが実行されていることを確認します。

クラスタ サーバーの管理者権限を持つドメイン ユーザーが必要です。手順は次のとおりです。

  1. ドメイン コントローラ(wsfc-dc)で [スタート] をクリックし、「dsa」と入力して Active Directory ユーザーとコンピュータ アプリを検索して開きます。
  2. [WSFC.TEST] を右クリックし、[新規作成] をポイントして [ユーザー] をクリックします。
  3. [フル ネーム] と [ユーザー ログオン名] に「clusteruser」と入力します。
  4. [次へ] をクリックします。
  5. ユーザーのパスワードを入力して確認します。ダイアログ ボックスでパスワード オプションを選択します。たとえば、パスワードが期限切れにならないように設定できます。
  6. 設定を確認し、[完了] をクリックします。
  7. clusteruserwsfc-dc の管理者にします。

    • wsfc-dc で Active Directory ユーザーとコンピュータ アプリに移動します。
    • clusteruser を右クリックして [グループに追加] をクリックし、「Administrators」と入力して [OK] をクリックします。

このチュートリアルでは、管理者アカウントが必要な場合、WSFC.TEST\clusteruser アカウントを管理者アカウントとして使用します。本番環境システムでは、アカウントと権限の割り当てに関してお客様が通常使用しているセキュリティ対策に従ってください。詳しくは、フェイルオーバー クラスタに必要な Active Directory アカウントの概要をご覧ください。

サーバーをドメインに参加させる

2 つのクラスタノード サーバーを WSFC.TEST ドメインに追加します。各クラスタノード サーバー(wsfc-1wsfc-2)で次の手順を実行します。

  1. [サーバー マネージャー] > [ローカル サーバー] の [プロパティ] ペインで [ワークグループ] をクリックします。
  2. [変更] をクリックします。
  3. [ドメイン] を選択し、「WSFC.TEST」と入力します。
  4. [OK] をクリックします。
  5. ドメインに参加するために WSFC.TEST\clusteruser の認証情報を入力します。
  6. [OK] をクリックします。
  7. ダイアログ ボックスを閉じ、プロンプトに従ってサーバーを再起動します。
  8. clusteruserwsfc-1wsfc-2 の管理者にします。

    • [コンピューターの管理] をダブルクリックして [ローカル ユーザーとグループ] > [グループ] > [管理者] の順に選択し、[追加] をクリックします。
    • 「clusteruser」と入力し、[名前の確認] をクリックします。
    • [OK] をクリックします。

ここで 3 つの VM すべてのスナップショットを作成することをおすすめします。

フェイルオーバー クラスタリングのセットアップ

フェイルオーバー クラスタを作成して構成するには:

  1. RDP を使用して wsfc-1wsfc-2 に接続します。
  2. 下記の Microsoft の手順に従います。この作業に関する追加の注意事項を次に示します。

    • wsfc-1wsfc-2 にフェイルオーバー クラスタリング機能をインストールします。wsfc-dc にはフェイルオーバー クラスタリング機能をインストールしないでください。
    • フェイルオーバー クラスタ マネージャー アプリをドメイン ユーザー WSFC.TEST\clusteruser として実行します。そうしないと、権限の問題が発生する可能性があります。必要な権限を確保するため、常にこの方法でフェイルオーバー クラスタ マネージャーを実行するか、clusteruser としてサーバーに接続することをおすすめします。
    • wsfc-1wsfc-2 をノードとしてクラスタに追加します。
    • 構成を検証するとき:

      • [テスト オプション] ページで [選択するテストのみを実行する] を選択し、[次へ] をクリックします。
      • [テストの選択] ページで [ストレージ] の選択を解除します。[ストレージ] オプションは、Compute Engine で実行すると失敗します(これは独立したスタンドアロンの物理サーバー用オプションです)。

        クラスタの検証中によく発生する問題を以下に示します。

        • レプリカの間にネットワーク インターフェースが 1 つしかない。これはクラウドベースのセットアップでは適用されないため、無視してかまいません。
        • 両方のレプリカで Windows Update が同じでない。Windows インスタンスで更新プログラムを自動的に適用するよう構成している場合、一方のノードで、他方のノードがまだダウンロードしていない更新プログラムがすでに適用されている可能性があります。サーバーの構成を同一に保つ必要があります。
        • 再起動が保留中。一方のサーバーに変更を加えた場合は、その変更を適用するために再起動する必要があります。これを無視しないでください。
        • ドメインの役割がサーバー間で完全に一致していない。これは無視してかまいません。
        • サーバーがすべて同じ組織部門(OU)に属していない。このチュートリアルでは OU をまったく使用しませんが、本番環境システムではクラスタを独自の OU に所属させることを検討してください。Microsoft の手順には、このベスト プラクティスが記載されています。
        • 署名されていないドライバが見つかった。これは無視してかまいません。
    • [概要] ページで [検証されたノードを使用してクラスターを今すぐ作成する] を選択して、クラスタの作成に進むことができます。ウィザードをいったん閉じて再度開き直す必要はありません。

    • [クラスターの作成ウィザード] のアクセス ポイント ページで、クラスタに「testcluster」という名前を付けます。

    • [アドレス] フィールドに「10.0.0.8」と入力します。

    Microsoft の手順

クラスタ管理者を追加する

クラスタの管理者としてドメイン アカウントを追加すると、Windows PowerShell などのツールからクラスタを操作できます。clusteruser ドメイン アカウントをクラスタ管理者として追加します。

  1. クラスタ リソースをホストするクラスタノードでフェイルオーバー クラスタ マネージャーを開き、左ペインでクラスタを選択してから、右ペインで [プロパティ] をクリックします。
  2. [クラスターのアクセス許可] タブを選択します。
  3. [追加] をクリックし、clusteruser を追加します。
  4. [グループ名またはユーザー名] のリストで clusteruser を選択し、[アクセス許可] ペインで [フル コントロール] を選択します。
  5. [適用] をクリックしてから [OK] をクリックします。

ここでスナップショットを作成することをおすすめします。

ファイル共有監視の作成

これで 2 ノードのフェイルオーバー クラスタが作成されましたが、クラスタは投票メカニズムを使用してどちらのノードをアクティブにするかを決定します。クォーラムを達成するため、ファイル共有監視を追加できます。

このチュートリアルでは、単にドメイン コントローラ サーバーに共有フォルダを追加するだけにします。どちらかのクラスタノードが再起動すると同時にドメイン コントローラ サーバーがオフラインになった場合、残りのサーバーは単独で投票できないため、クラスタ全体の機能が停止する可能性があります。このチュートリアルは、ライブ マイグレーション自動再起動などの GCP インフラストラクチャ機能が、共有フォルダを存続させるのに十分な信頼性を備えていることを前提としています。

より可用性の高いファイル共有監視を作成する場合は、次のオプションがあります。

  • Windows Server のクラスタで記憶域スペース ダイレクトを使用して共有を提供する。この Windows Server 2016 の機能は、クォーラム監視用の可用性の高い共有を提供できます。たとえば、Active Directory ドメイン コントローラ用のクラスタを作成して可用性の高いドメイン サービスを提供すると同時に、ファイル共有監視も提供できます。
  • Avere vFXT などのファイル サーバー ソリューションを使用する。

監視用のファイル共有を作成するには、次の手順に従います。

  1. wsfc-dc に接続します。このサーバーでファイル共有をホストします。
  2. エクスプローラで C ドライブに移動します。
  3. タイトルバーの [新しいフォルダー] ボタンをクリックします。
  4. 新しいフォルダに「shares」という名前を付けます。
  5. shares フォルダをダブルクリックして開きます。
  6. 新しいフォルダを追加し、「clusterwitness-testcluster」という名前を付けます。

ファイル共有監視の共有を構成する

ファイル共有監視フォルダに対するアクセス許可を設定して、クラスタがこのフォルダを使用できるようにする必要があります。

  1. エクスプローラで clusterwitness-testcluster フォルダを右クリックして [プロパティ] を選択します。
  2. [共有] タブで [詳細な共有] をクリックします。
  3. [このフォルダーを共有する] を選択します。
  4. [アクセス許可] をクリックし、[追加] をクリックします。
  5. [オブジェクトの種類] をクリックし、[コンピューター] を選択して [OK] をクリックします。
  6. マシン アカウント testcluster$ を追加します。
  7. testcluster$ に [フル コントロール] のアクセス許可を与えます。
  8. [適用] をクリックし、すべてのダイアログ ボックスを閉じます。

ファイル共有監視をフェイルオーバー クラスタに追加する

次に、ファイル共有監視がクォーラム投票として使用されるようにフェイルオーバー クラスタを構成します。

  1. クラスタ リソースをホストするコンピュータ(wsfc-1)でフェイルオーバー クラスタ マネージャーを開きます。
  2. 左ペインでクラスタの名前(testcluster.WSFC.TEST)を右クリックして [その他のアクション] をポイントし、[クラスター クォーラム設定の構成] をクリックします。
  3. ウィザードの各ページで [次へ] ボタンをクリックして画面を進めます。
  4. クォーラム構成オプションで [クォーラム監視を選択する] を選択します。
  5. [ファイル共有監視を構成する] を選択します。
  6. [ファイル共有パス] に共有フォルダのパスを入力します(例: \10.0.0.6\clusterwitness-testcluster)。この例では、10.0.0.6 は wsfc-dc VM の IP アドレスです。
  7. 設定を確認し、[完了] をクリックします。

フェイルオーバー クラスタのテスト

これで Windows Server フェイルオーバー クラスタが機能するはずです。インスタンス間でクラスタ リソースを手動で移動してテストできます。まだ終わりではありませんが、これは今までに行ったすべての作業に問題がないことを確認するのに良いチェックポイントです。

  1. wsfc-1 のフェイルオーバー クラスタ マネージャーで [現在のホストサーバー] の名前を確認します。
  2. Windows PowerShell を clusteruser として実行します。
  3. PowerShell で次のコマンドを実行して、現在のホストサーバーを変更します。

    Move-ClusterGroup -Name "Cluster Group"
    

現在のホストサーバーの名前が他方の VM に変更されるはずです。

ホストサーバーが切り替わらなかった場合は、これまでの手順を振り返って何か見落としていないか確認します。最もよくある問題は、ファイアウォール ルールがないためにネットワーク上のアクセスがブロックされていることです。その他の確認すべき問題については、トラブルシューティングのセクションをご覧ください。

ホストサーバーが正常に切り替わった場合は、内部ロードバランサのセットアップに進むことができます。内部ロードバランサは、クラスタの現在のホストサーバーにネットワーク トラフィックをルーティングするために必要となります。

ここでスナップショットを作成することをおすすめします。

役割の追加

Windows フェイルオーバー クラスタリングでは、クラスタ化されたワークロードが役割によってホストされます。役割を使用して、アプリケーションで使用する IP アドレスをクラスタ内で指定できます。このチュートリアルではテスト ワークロードの役割を追加します。これはインターネット インフォメーション サービス(IIS)ウェブサーバーです。手順は次のとおりです。

  1. フェイルオーバー クラスタ マネージャーの [アクション] ペインで [役割の構成] を選択します。
  2. [役割の選択] ページで [その他のサーバー] を選択します。
  3. [クライアント アクセス ポイント] ページで「IIS」という名前を入力します。
  4. アドレスを「10.0.0.9」に設定します。
  5. [記憶域の選択] と [リソース タイプの選択] はスキップします。
  6. 設定を確認し、[完了] をクリックします。

役割の設定を示す確認ダイアログ。

内部ロードバランサの作成

次に、内部ロードバランサを作成して構成します。これはネットワーク トラフィックをアクティブなクラスタ ホストノードにルーティングするために必要となります。ユーザー インターフェースの方が内部負荷分散の構成がわかりやすいため、この作業には GCP Console を使用します。

  1. GCP Console で [負荷分散] ページに移動します。

    [負荷分散] を開く

  2. [ロードバランサを作成] をクリックします。

  3. [TCP 負荷分散] カードで [設定を開始] をクリックします。

  4. [VM 間のみ] を選択して [続行] をクリックします。

  5. [名前] に「wsfc-lb」と入力します。

まだ [作成] はクリックしないでください。

バックエンドを構成する

GCP の内部ロードバランサは定期的なヘルスチェックを使用してアクティブ ノードを決定することを思い出してください。ヘルスチェックは、アクティブ クラスタノードで実行されている Compute Engine クラスタホスト エージェントに ping します。ヘルスチェックのペイロードは、クラスタ化された役割によって表されるアプリケーションの IP アドレスです。エージェントは、ノードがアクティブな場合は 1、アクティブでない場合は 0 のレスポンスを返します。

  1. [バックエンドの設定] をクリックします。
  2. 現在のリージョンを選択します。
  3. [ネットワーク] で wsfcnet を選択します。
  4. [インスタンス グループ] で wsfc-group を選択します。
  5. ヘルスチェックを作成します。

    • [名前] に「wsfc-hc」と入力します。
    • [プロトコル] の設定はデフォルトの [TCP] のままとし、[ポート] は「59998」に変更します。これはクラスタホスト エージェントからのレスポンス用のポートです。
    • [リクエスト] に「10.0.0.9」と入力します。
    • [レスポンス] に「1」と入力します。
    • [チェック間隔] に「2」と入力します。
    • [タイムアウト] に「1」と入力します。
    • [保存して次へ] をクリックします。

フロントエンドを構成する

フロントエンド構成では、ロードバランサが着信リクエストをどのように処理するかを定義する転送ルールを作成します。このチュートリアルでは、シンプルにするため、サブネットワーク内の VM 間でリクエストを発行することによってシステムをテストします。

本番環境システムでは、おそらくインターネット トラフィックなどの外部トラフィックにまでシステムを開放する必要があります。そのためには、外部トラフィックを受け入れて内部ネットワークに転送する要塞ホストを作成します。このチュートリアルでは、要塞ホストの使用については説明しません。

  1. 中央ペインで [フロントエンドの設定] をクリックします。
  2. [名前] に「wsfc-lb-fe」と入力します。
  3. サブネットワーク(wsfcnetsub1)を選択します。
  4. [IP] で [エフェメラル(カスタム)] を選択します。
  5. 「10.0.0.9」と入力します。これは役割に対して設定したのと同じ IP アドレスです。
  6. [ポート] に「80」と入力します。
  7. [完了] をクリックします。

確認と完了

  1. 内部ロードバランサの設定の要約を表示するため、中央ペインで [確認と完了] をクリックします。右ペインに要約が表示されます。
  2. [作成] をクリックします。ロードバランサの作成には少し時間がかかります。

    内部負荷分散の最終的な設定を示す GCP Console。

ヘルスチェック用のファイアウォール ルールを作成する

ヘルスチェックがターゲットに到達できるようにファイアウォール ルールを作成する必要があることを知らせるメッセージが GCP Console に表示されます。このセクションではファイアウォール ルールをセットアップします。

  1. GCP Console で Cloud Shell に戻ります。

    Cloud Shell を開く

  2. 次のコマンドを実行して、ファイアウォール ルールを作成します。

    gcloud compute firewall-rules create allow-health-check --network wsfcnet --source-ranges 130.211.0.0/22,35.191.0.0/16 --allow tcp:59998`
    

Windows ファイアウォールを開く

次に、各クラスタノード(wsfc-1wsfc-2)で Windows ファイアウォール ルールを作成します。少なくとも、IP アドレス 130.211.0.0/2235.191.0.0/16 に対して、ポート 59998 を通じたすべての着信 TCP 接続を許可します。

ロードバランサの検証

内部ロードバランサを実行した後、そのステータスを調べて内部ロードバランサが正常なインスタンスを検出できることを確認し、フェイルオーバーを再度テストできます。

  1. GCP Console の [負荷分散] ページに戻ります。

    [負荷分散] を開く

  2. ロードバランサの名前(wsfc-lb)をクリックします。

    要約の [バックエンド] セクションに、インスタンス グループのリストが表示されます。

    [正常] 列には [1 / 2] と表示されるはずです。

    これは期待される結果です。2 つのクラスタノードのうち、フェイルオーバー クラスタ内でアクティブになるのは常に 1 つだけであり、そのノードのみがロードバランサのヘルスチェックに合格します。

    [正常] 列に示された結果が適切でない場合でも、次のステップに進んでください。場合によっては、ロードバランサに IP アドレスを検出させるために少なくとも 1 回フェイルオーバー アクションを実行しなければならないことがあります。

  3. フェイルオーバーを実行するため、フェイルオーバー クラスタ マネージャーで [IIS] の役割を右クリックし、[移動] > [最適なノード] をクリックします。これにより、役割が新しいノードに移動します。これは [所有者ノード] フィールドに示されます。

    フェイルオーバー クラスタ マネージャの [所有者ノード] フィールド。

  4. [状態] が [実行中] になるまで待ちます。

  5. [負荷分散] ページに戻って [更新] をクリックし、[正常] 列が依然として [1 / 2] であることを確認します。

    2 つのインスタンスのうち 1 つが正常であることを示すロードバランサのステータス。

ヒント: gcloud ツールを使用して、どのインスタンスが正常であるかを確認できます。[REGION] は使用しているリージョンに置き換えます。

gcloud compute backend-services get-health wsfc-lb --region=[REGION]

出力は次のようになります。

backend: https://www.googleapis.com/compute/v1/projects/[PROJECT_NAME]/zones/us-west1-a/instanceGroups/wsfc-group
status:
  healthStatus:
  - healthState: UNHEALTHY
    instance: https://www.googleapis.com/compute/v1/projects/[PROJECT_NAME]/zones/us-west1-a/instances/wsfc-1
    ipAddress: 10.0.0.4
    port: 80
  - healthState: HEALTHY
    instance: https://www.googleapis.com/compute/v1/projects/[PROJECT_NAME]/zones/us-west1-a/instances/wsfc-2
    ipAddress: 10.0.0.5
    port: 80
  kind: compute#backendServiceGroupHealth

アプリケーションのインストール

これでクラスタが作成されたので、次に各ノードでアプリケーションをセットアップし、クラスタ環境で実行されるように構成できます。

このチュートリアルでは、クラスタが実際に内部ロードバランサと連携していることを実証できるものをセットアップする必要があります。この例では、各 VM に IIS をセットアップして単純なウェブページを提供します。

高可用性 IIS はクラスタにセットアップしません。それぞれ異なるウェブページを提供する別々の IIS インスタンスを作成します。フェイルオーバーの後、ウェブサーバーは共有コンテンツではなく、そのサーバー独自のコンテンツを提供します。

その他のアプリケーションまたは高可用性 IIS をセットアップすることは、このチュートリアルの範囲を超えています。

IIS をセットアップする

  1. 各クラスタノードに IIS をインストールします。

    • [共通の HTTP 機能] で必ず [既定のドキュメント] が選択されていることを確認してください。
    • [確認] ページで、対象サーバーを自動的に再起動するチェックボックスをオンにします。
  2. 各ウェブサーバーが動作していることを確認します。

    1. RDP を使用して、wsfc-dc という名前の VM に接続します。
    2. サーバー マネージャーの上部にある [プロパティ] セクションで、[IE 拡張セキュリティ構成] をオフにします。
    3. Internet Explorer を開きます。
    4. アドレス欄に各サーバーの IP アドレスを入力してウェブサーバーにアクセスします。

      http://10.0.0.4/
      http://10.0.0.5/
      

それぞれのケースで [ようこそ] ページが表示されます。これは IIS のデフォルトのウェブページです。

デフォルトのウェブページを編集する

それぞれのデフォルト ウェブページを変更して、現在どちらのサーバーがページを提供しているか簡単にわかるようにします。

  1. RDP を使用して、wsfc-1 という名前の VM に接続します。
  2. 管理者としてメモ帳を起動します。
  3. メモ帳で C:\inetpub\wwwroot\iistart.htm を開きます。ファイルを開く際のダイアログ ボックスで、テキスト ファイルだけでなく [すべてのファイル] が表示されるようにしてください。
  4. <title> 要素のテキストを現在のサーバーの名前に変更します。次に例を示します。

        <title>wsfc-1</title>
    
  5. HTML ファイルを保存します。

  6. wsfc-2 に対して同じ手順を繰り返し、<title> 要素を wsfc-2 に設定します。

これで、どちらかのサーバーから提供されたウェブページを表示すると、サーバーの名前が Internet Explorer タブのタイトルとして表示されるようになりました。

フェイルオーバーをテストする

  1. RDP を使用して、wsfc-dc という名前の VM に接続します。
  2. Internet Explorer を開きます。
  3. ロードバランサの役割の IP アドレスにアクセスします。

    http://10.0.0.9/
    

    [ようこそ] ページが開き、現在のサーバーの名前がタブのタイトルに表示されます。

  4. 現在のサーバーを停止して障害をシミュレートします。Cloud Shell で次のコマンドを実行します。[INSTANCE_NAME] は前の手順で表示された現在のサーバーの名前(wsfc-1 など)に置き換えます。

    gcloud compute instances stop [INSTANCE_NAME]
    
  5. RDP 接続を wsfc-dc に切り替えます。

    ロードバランサが移動を検出してトラフィックを再ルーティングするまで少し時間がかかることがあります。

  6. 30 秒ほどたったら、Internet Explorer でページを更新します。

    これで、タブのタイトルに新しいアクティブ ノードの名前が表示されます。たとえば、wsfc-1 がアクティブな状態で手順を開始した場合、タイトルの表示は wsfc-2 になります。すぐに変更が表示されない場合や、ページが見つかりませんというエラーが表示された場合は、ブラウザを再度更新してください。

以上でチュートリアルは終了です。これで Windows Server 2016 フェイルオーバー クラスタが GCP 上で正常に機能します。

トラブルシューティング

以下によくある問題を示します。手順がうまくいかない場合はこれらを確認してください。

GCP ファイアウォール ルールによってヘルスチェックがブロックされている

ヘルスチェックが機能しない場合は、ヘルスチェック システムで使用されている IP アドレス(130.211.0.0/2235.191.0.0/16)からの着信トラフィックを許可するファイアウォール ルールがあることを再確認します。

Windows ファイアウォールによってヘルスチェックがブロックされている

各クラスタノードの Windows ファイアウォールでポート 59998 が開いていることを確認します。

クラスタノードが DHCP を使用している

クラスタ内の各 VM に静的 IP アドレスが設定されていることが重要です。VM 上の Windows が DHCP を使用するように構成されている場合は、Windows のネットワーク設定を変更して、その IPv4 アドレスを GCP Console に表示される VM の IP アドレスと一致させます。さらに、ゲートウェイの IP アドレスを GCP VPC 内のサブネットワーク ゲートウェイのアドレスと一致させます。

ファイアウォール ルールの GCP ネットワーク タグ

ファイアウォール ルールでネットワーク タグを使用する場合は、すべての VM インスタンスで正しいタグが設定されていることを確認してください。このチュートリアルではタグは使用しませんが、なんらかの理由でタグを設定した場合は、一貫して使用する必要があります。

クリーンアップ

このチュートリアルで使用するリソースについて、Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。

フェイルオーバー クラスタリングのチュートリアルを完了したら、Google Cloud Platform で作成したリソースをクリーンアップして、今後料金が発生しないようにします。以下のセクションで、このようなリソースを削除または無効にする方法を説明します。

プロジェクトの削除

課金を停止する最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. GCP Console で [プロジェクト] ページに移動します。

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

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

インスタンスの削除

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

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

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

  2. 削除するインスタンスの隣のチェックボックスをオンにします。
  3. ページの上部にある、[削除] ボタンをクリックし、インスタンスを削除します。

永続ディスクを削除する

永続ディスクを削除する手順は次のとおりです。

  1. GCP Console で [ディスク] ページに移動します。

    [ディスク] ページに移動

  2. 削除するディスクの名前の横にあるチェックボックスをオンにします。

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

次のステップ

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

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

Compute Engine ドキュメント