NLBみなさん、こんにちはMiyaです。NLBの概要部分や各設定値についてご紹介しました。NLBの構築を紹介します。本記事では、HTTP通信を前提としたIISを2台用意して、それぞれをNLBクラスターとして構成します。Windowsの標準Webサーバー(アプリケーションサーバー)サービスである。HTTP/HTTPS、FTP、SMTP、NNTP等の基本的なプロトコルはサポートしている。クライアント版に付属するIISでは機能制限が行われている[1]。ServicesHTTP通信であるため、いわゆるステートレスな通信となります。そのため、サーバー⇔クライアント間の通信においてセッション維持などの難しいことは考えず、単純な負荷分散を設定します。上図環境を構築し、実際に負荷分散される様子と、NLBクラスターの片系がダウンした時の動作などを確認します。よろしければ本記事を参考に皆さんも手を動かしてみてください。NLBを構築するにあたって、以下の要件を満たす必要があります。モードの混在は不可ユニキャストを使用する場合は、MACアドレスのスプーフィングがサポートされたNICが必要ユニキャスト/マルチキャストについては、前回の記事をご参照ください。NLBの通信モードHyper-Vなどの仮想環境でユニキャストを利用する場合は、[MACアドレスのスプーフィングを有効にする]にチェックを入れ、各ノードで共同利用する仮想MACアドレスを静的に設定しておきましょう。ユニキャストは元々のMACアドレスを保持せずに、共有されたMACアドレスで通信するため、NICを2枚用意してNLB用LANと業務NW用LANのように分ける必要があります。サーバー⇔クライアント間の経路において、ルーター・スイッチは挟まないシンプルな構成であるため、静的エントリの追加構成は必要としませんが、組織のインフラに導入する場合、通信モードの選定は慎重に。Serverを2台を用意します。(ドメイン参加は必須ではありません)それぞれのサーバーのサーバーマネージャーからIISの役割をインストールしておきましょう。適当な端末のブラウザから、IISのホスト名、もしくはIPアドレスでアクセスして、IISのTOPページが表示されることを確認します。各ノードの名前が解決できるようDNSのレコードを追加しておきましょう。IISのデフォルトTOPページはおなじみの青ページですが、どちらも同じページですと、負荷分散の様子がクライアントから確認しずらいので、片系の背景画像を緑に色塗りしておきます。IISの既定の背景画像は[C:\inetpub\wwwroot\]にあるiisstart.pngです。ペイントで適当に色塗りしましょう。NLBを構築していきます。インストール~構成まで簡単に出来るので、皆様も是非お試しあれ。2台のIISサーバーの[サーバーマネージャー]の[役割と機能の追加]から、[ネットワーク負荷分散]をインストールします。インストールが完了したら、どちらかのサーバーの[管理ツール]から、[ネットワーク負荷分散マネージャー]をクリックします。[ネットワーク負荷分散クラスター]を右クリック→[新しいクラスター]をクリックします。[ホスト名]に自身のホスト名を入力、[接続]をクリックします。Ethernetが表示されたら[次へ]で進みます。ここは特に変更せず、そのまま[次へ]で進みます。次に、NLBクラスターの仮想IPアドレスを決めます。本記事では、先の構成図に従って「192.168.11.60/24」としておきます。インターネット名]には、NLBクラスターのサービス名を入力しましょう。今回は、portalsite.itbeginnergroup.comとしておきます。通信モードは、「マルチキャスト」を選択して、[次へ]で進みます。既定では負荷分散の規則はアフィニティが単一で設定されています。単一の場合、送信元IPアドレスと接続先サーバーのMappingによって、セッション維持の働きをしますが、今回はHTTP通信であるため何も考えずに[アフィニティなし]にします。アフィニティについては前回記事を参考にしてください。アフィニティとは?あとは[OK]→[完了]でNLBクラスターを作成します。構成が完了すると、ネットワーク負荷分散マネージャーに構成したホストが[収束済み]として表示されているのが確認出来ます。次に、構成したNLBクラスターに2台目のIISを追加します。<クラスター名>を右クリック、[ホストをクラスターに追加]をクリックして、もう一方のIISに接続、追加します。そのまま[次へ]→[完了]でクラスターへホストを追加します。[収束済み]として表示されれば、NLBクラスターの構成は完了です。内部DNSには「portalsite.itbeginnergroup.com」でNLBクラスターにアクセスできるようAレコードを追加しておきます。動作確認さて、先の手順でNLBクラスターが構成出来たので、早速クライアントからの接続を確かめたいと思います。今回は、[アフィニティなし]として構成しているため、クライアントからのHTTPリクエストに対して、NLBクラスターはランダムに接続先サーバーを決定します。F5連打していれば、緑や青のIISがランダムに表示されるということです。負荷分散状況の確認クライアント端末のブラウザから、「http://portalsite.itbeginnergroup.com」へアクセスしてみます。最初は青のIISが表示されましたが、何度かF5していると緑のIISへ接続されたことが確認できました。その後も更新をかけると青になったり緑になったりと、ランダムに接続先サーバーが決定されているのが分かります。次に、障害時を想定して、片系のノードを完全にシャットダウンしたいと思います。NLBでは、ハートビートによる死活監視が動いており、pingが5回連続で失敗するとダウンとみなされNLBクラスターから外されます。それでは、青に接続しているクライアント端末がいる環境の中で、青のノードをシャットダウンしてみます。その後、IIS(青)をブラウザで開いているクライアントから、ページを更新するとIIS(緑)に切り替わるのが確認できるかと思います。[ネットワーク負荷分散マネージャー]からは、ダウンしたホストが[到達負荷]として表示されているのが確認できます。NLBは到達不能後も死活監視は行っており、復旧した時点でNLBクラスターに自動で戻す動きします。そのため、シャットダウンしたIIS(青)の電源をつけると、[収束済み]で復元されているのが確認出来るかと思います。前回の記事でも書きましたが、これはあくまでハードウェアレベルの死活監視であるため、アプリケーションレベルでの障害検知は出来ません。そのため、IISに障害が発生しようがNLBクラスターはそのサーバーに引き続き接続させるので、結果的にクライアントはHTTPエラーを受け取る可能性があります。アプリケーションレベルでの障害検知はサードパーティのシステムを導入することをお勧めします。NLBはハートビートによるハードウェアレベルの障害は検知し、自動的にNLBクラスターからの除外と復旧をしてくれる。アプリケーションレベルの障害を検知することは出来ない。ドレイン停止によるメンテナンス最後におまけとして、[ドレイン停止]についても紹介します。ドレイン停止とは、既存のセッション接続は終了せずに、すべての新しい接続をブロックする状態を意味します。ドレイン停止したノードはクライアントからの新規セッションには応答せずに、既存セッションのみを相手する状態となります。これは、一部ノードをメンテナンスする際にNLBクラスターからノードを除外する時の操作の一つで、「既存セッションが終了するまで相手するけど、全部終了したらNLBクラスターから切断しますよ」という意味です。[ドレイン停止]を選択すると、ドレイン停止状態となります。完全に停止すると、ネットワーク負荷分散マネージャーでは、[停止]と表示されます。ドレイン停止とは、既存セッションを保持しつつ、段階的に停止状態へ移る停止方法である。停止やシャットダウンはアクセスしたタイミングによってはクライアントにHTTPエラーを返すが、ドレイン停止は新規セッションを別サーバーに振り分けるためクライアントは障害に気づかない。NLBを構成することが出来ました。機会があればユニキャストモードでの構成や、HTTPSのアプリケーションに対する負荷分散の構成方法を記事にできればと思っております。2019.02.11皆さんこんにちは、Miyaです。ProPlusをIISで更新管理する方法についてご紹介したいと思います。Serverの役割の一つである「ネットワーク負荷分散(NLB)」です。Business(WhfB)のご紹介と、実際に構成した際のメモ書きになります。AM殆どNLB知識無い状態で、仕事で構築する環境がまんまこの通りで、とても助かりました。ホントありがとうございます。PMお役に立てたようで光栄です。コメントをキャンセルメールアドレスが公開されることはありません。date*日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)プロフィールこんにちは、Miya(@miya_microsoft)です。高校~大学では情報科学部としてプログラミングを学び、SEとして某Sierに入社しました。Microsoftプロダクトをメインに設計から構築までを担当しております。本ブログは筆者の業務範囲の中で得た学びをより深めることと、その情報が皆さまのお役に立てればという思いから設立しました。キャンセル投稿を送信できませんでした。メールアドレスを確認してください。メール送信チェックに失敗しました。このブログではメールでの投稿共有はできません。