Windows Server 2016 Windows NLBの構築

みなさん、こんにちはMiyaです。

前回の記事では、Windows NLBの概要部分や各設定値についてご紹介しました。

本記事では、前回の記事の続きとして、Windows NLBの構築を紹介します。

スポンサーリンク:

Windows NLBの構成

本記事では、HTTP通信を前提としたIISを2台用意して、それぞれをNLBクラスターとして構成します。

Microsoft Internet Information Services (IIS) は、Microsoft Windowsの標準Webサーバーアプリケーションサーバーサービスである。HTTP/HTTPSFTPSMTPNNTP等の基本的なプロトコルはサポートしている。クライアント版に付属するIISでは機能制限が行われている[1]

引用 – Wikipedia:Internet Information Services

 

HTTP通信であるため、いわゆるステートレスな通信となります。そのため、サーバー⇔クライアント間の通信においてセッション維持などの難しいことは考えず、単純な負荷分散を設定します。

NLB

 

上図環境を構築し、実際に負荷分散される様子と、NLBクラスターの片系がダウンした時の動作などを確認します。よろしければ本記事を参考に皆さんも手を動かしてみてください。

前提条件

Windows NLBを構築するにあたって、以下の要件を満たす必要があります。

  • NLBクラスターの各ノードのIPアドレスは同一サブネットかつ静的
  • マルチキャスト・ユニキャスト モードの混在は不可
  • ユニキャストを使用する場合は、MACアドレスのスプーフィングがサポートされたNICが必要

ユニキャスト/マルチキャストについては、前回の記事をご参照ください。
Title:Windows NLBの構成 – Windows NLBの通信モード

Hyper-Vなどの仮想環境でユニキャストを利用する場合は、[MACアドレスのスプーフィングを有効にする]にチェックを入れ、各ノードで共同利用する仮想MACアドレスを静的に設定しておきましょう。

また、ユニキャストは元々のMACアドレスを保持せずに、共有されたMACアドレスで通信するため、NICを2枚用意してNLB用LANと業務NW用LANのように分ける必要があります。

本記事では、マルチキャストモードでWindows NLBを構築します。サーバー⇔クライアント間の経路において、ルーター・スイッチは挟まないシンプルな構成であるため、静的エントリの追加構成は必要としませんが、組織のインフラに導入する場合、通信モードの選定は慎重に。

用意するもの

今回は、IISをインストールするために、ADドメインに参加しているWindows Serverを2台を用意します。(ドメイン参加は必須ではありません)

それぞれのサーバーのサーバーマネージャーからIISの役割をインストールしておきましょう。

NLB

 

適当な端末のブラウザから、IISのホスト名、もしくはIPアドレスでアクセスして、IISのTOPページが表示されることを確認します。

NLB

 

各ノードの名前が解決できるようDNSのレコードを追加しておきましょう。

NLB

 

さて、IISのデフォルトTOPページはおなじみのページですが、どちらも同じページですと、負荷分散の様子がクライアントから確認しずらいので、片系の背景画像をに色塗りしておきます。

NLB

 

尚、IISの既定の背景画像は[C:\inetpub\wwwroot\]にあるiisstart.pngです。ペイントで適当に色塗りしましょう。

Windows NLBの構築

それでは、実際にWindows NLBを構築していきます。インストール~構成まで簡単に出来るので、皆様も是非お試しあれ。

まずは、2台のIISサーバーの[サーバーマネージャー]の[役割と機能の追加]から、[ネットワーク負荷分散]をインストールします。

NLB

 

インストールが完了したら、どちらかのサーバーの[管理ツール]から、[ネットワーク負荷分散マネージャー]をクリックします。

NLB

 

[ネットワーク負荷分散クラスター]を右クリック→[新しいクラスター]をクリックします。

NLB

 

[ホスト名]に自身のホスト名を入力、[接続]をクリックします。Ethernetが表示されたら[次へ]で進みます。

NLB

 

ここは特に変更せず、そのまま[次へ]で進みます。

NLB

 

次に、NLBクラスターの仮想IPアドレスを決めます。本記事では、先の構成図に従って「192.168.11.60/24」としておきます。

NLB

 

[フル インターネット名]には、NLBクラスターのサービス名を入力しましょう。今回は、portalsite.itbeginnergroup.comとしておきます。通信モードは、「マルチキャスト」を選択して、[次へ]で進みます。

NLB

 

既定では負荷分散の規則はアフィニティが単一で設定されています。単一の場合、送信元IPアドレスと接続先サーバーのMappingによって、セッション維持の働きをしますが、今回はHTTP通信であるため何も考えずに[アフィニティなし]にします。アフィニティについては前回記事を参考にしてください。
Title:Windows NLBの構成 – 3.2 アフィニティとは?

NLB

 

あとは[OK]→[完了]でNLBクラスターを作成します。

構成が完了すると、ネットワーク負荷分散マネージャーに構成したホストが[収束済み]として表示されているのが確認出来ます。

NLB

 

次に、構成したNLBクラスターに2台目のIISを追加します。

<クラスター名>を右クリック、[ホストをクラスターに追加]をクリックして、もう一方のIISに接続、追加します。

NLB

 

そのまま[次へ]→[完了]でクラスターへホストを追加します。[収束済み]として表示されれば、NLBクラスターの構成は完了です。

NLB

 

内部DNSには「portalsite.itbeginnergroup.com」でNLBクラスターにアクセスできるようAレコードを追加しておきます。

NLB

 

動作確認

さて、先の手順でNLBクラスターが構成出来たので、早速クライアントからの接続を確かめたいと思います。

今回は、[アフィニティなし]として構成しているため、クライアントからのHTTPリクエストに対して、NLBクラスターはランダムに接続先サーバーを決定します。

つまり、F5連打していれば、のIISがランダムに表示されるということです。

負荷分散状況の確認

クライアント端末のブラウザから、「http://portalsite.itbeginnergroup.com」へアクセスしてみます。

最初はのIISが表示されましたが、何度かF5しているとのIISへ接続されたことが確認できました。

NLB

 

もちろん、その後も更新をかけるとになったりになったりと、ランダムに接続先サーバーが決定されているのが分かります。

片系ダウン時の確認

次に、障害時を想定して、片系のノードを完全にシャットダウンしたいと思います。

Windows NLBでは、ハートビートによる死活監視が動いており、pingが5回連続で失敗するとダウンとみなされNLBクラスターから外されます。

Windows NLB

 

それでは、に接続しているクライアント端末がいる環境の中で、のノードをシャットダウンしてみます。

その後、IIS(をブラウザで開いているクライアントから、ページを更新するとIIS()に切り替わるのが確認できるかと思います。

NLB

 

また、[ネットワーク負荷分散マネージャー]からは、ダウンしたホストが[到達負荷]として表示されているのが確認できます。

NLB

 

尚、Windows NLBは到達不能後も死活監視は行っており、復旧した時点でNLBクラスターに自動で戻す動きします。そのため、シャットダウンしたIIS()の電源をつけると、[収束済み]で復元されているのが確認出来るかと思います。

NLB

 

前回の記事でも書きましたが、これはあくまでハードウェアレベルの死活監視であるため、アプリケーションレベルでの障害検知は出来ません。

そのため、IISに障害が発生しようがNLBクラスターはそのサーバーに引き続き接続させるので、結果的にクライアントはHTTPエラーを受け取る可能性があります。

アプリケーションレベルでの障害検知はサードパーティのシステムを導入することをお勧めします。

Windows NLBはハートビートによるハードウェアレベルの障害は検知し、自動的にNLBクラスターからの除外と復旧をしてくれる。しかし、アプリケーションレベルの障害を検知することは出来ない。

ドレイン停止によるメンテナンス

最後におまけとして、[ドレイン停止]についても紹介します。

ドレイン停止とは、既存のセッション接続は終了せずに、すべての新しい接続をブロックする状態を意味します。

つまり、ドレイン停止したノードはクライアントからの新規セッションには応答せずに、既存セッションのみを相手する状態となります。

これは、一部ノードをメンテナンスする際にNLBクラスターからノードを除外する時の操作の一つで、「既存セッションが終了するまで相手するけど、全部終了したらNLBクラスターから切断しますよ」という意味です。

ドレイン停止したいノードを右クリック、[ホストの制御] – [ドレイン停止]を選択すると、ドレイン停止状態となります。

NLB

 

完全に停止すると、ネットワーク負荷分散マネージャーでは、[停止]と表示されます。

NLB

ドレイン停止とは、既存セッションを保持しつつ、段階的に停止状態へ移る停止方法である。

停止やシャットダウンはアクセスしたタイミングによってはクライアントにHTTPエラーを返すが、ドレイン停止は新規セッションを別サーバーに振り分けるためクライアントは障害に気づかない。

 

おわりに

かなり簡易な構成ではりますが、Windows NLBを構成することが出来ました。

機会があればユニキャストモードでの構成や、HTTPSのアプリケーションに対する負荷分散の構成方法を記事にできればと思っております。

それでは、良いWindows Serverライフをっ♪

 

 

 

 

 

スポンサーリンク