Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

Windows NLB(ウィンドウズエヌエルビー)とは | 意味や読み方など丁寧でわかりやすい用語解説

Windows NLB(ウィンドウズエヌエルビー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

Windowsネットワーク負荷分散 (ウィンドウズネットワークフカブンサン)

英語表記

Windows NLB (ウィンドウズエヌエルビー)

用語解説

Windows NLBは、Windows Serverオペレーティングシステムに標準で搭載されているネットワーク負荷分散機能のことだ。Network Load Balancingの頭文字を取ってNLBと呼ばれる。この機能の主な目的は、複数のサーバーを使って一つのサービスを提供することで、サービスの可用性を高め、サーバーへのアクセス負荷を分散することにある。例えば、Webサイトを公開する際、たった一台のサーバーで運用していると、そのサーバーが故障した途端にWebサイトが見られなくなってしまう。また、アクセスが集中するとサーバーの処理能力が限界に達し、Webサイトの表示が遅くなったり、最悪の場合はサービスが停止したりすることもある。Windows NLBは、このような問題を解決するために、複数のサーバーを連携させて、あたかも一台のサーバーであるかのように見せかける技術だ。これにより、もし一台のサーバーが故障しても、残りのサーバーが自動的に処理を引き継ぎ、サービスを継続できる。さらに、アクセス負荷を複数のサーバーに分散させることで、個々のサーバーへの負担を軽減し、全体の処理能力を向上させることができるのだ。これは、システムエンジニアを目指す上で、サービスの安定運用と効率化を実現するための重要な技術の一つである。

Windows NLBの詳細な仕組みを見ていこう。まず、NLBを使用する複数のサーバーは「NLBクラスター」と呼ばれるグループを構成する。このクラスター内のすべてのサーバーは、仮想IPアドレス(VIP)と呼ばれる共通のIPアドレスを共有する。クライアントからのサービスへのアクセスは、このVIPに対して行われるため、クライアントは複数のサーバーが存在することを意識することなく、あたかも単一のサーバーにアクセスしているかのように感じる。NLBクラスター内の各サーバーは「ホスト」と呼ばれ、それぞれに固有のIPアドレス(専用IPアドレス)も持つ。

クライアントからVIP宛にパケットが送られてくると、NLBクラスター内のすべてのホストがそのパケットを受け取る。ここで、NLBドライバーが各パケットを分析し、どのホストがそのパケットを処理すべきかを決定する。この決定は、設定された「ポートルール」と「負荷分散アルゴリズム」に基づいて行われる。ポートルールとは、特定のポート番号(例えばWebサービスのHTTPであれば80番ポート)に対して、どのホストにトラフィックを分散させるか、あるいは処理を許可するかを定義するものだ。負荷分散アルゴリズムには、一般的にラウンドロビン(順番に割り振る)、重み付け(設定した比率で割り振る)などがあり、これによってアクセス負荷が複数のホストに均等、または指定された割合で分散される。また、「アフィニティ」という設定も重要だ。これは、特定のクライアントからの接続を常に同じホストで処理させるかどうかを決定するもので、例えばユーザーのセッション情報がサーバー側に保持されるようなステートフルなアプリケーションの場合、単一のアフィニティを設定して、同じクライアントからの要求は常に同じサーバーで処理されるようにする必要がある。

可用性の観点から見ると、NLBクラスター内の各ホストは、定期的に「ハートビート」と呼ばれる信号を送り合うことで、他のホストが正常に動作しているかを確認している。もし、あるホストからのハートビートが一定期間途絶えると、NLBはそのホストが故障したと判断し、自動的にクラスターから切り離す。これにより、故障したホストへトラフィックが送られることを防ぎ、残りの健全なホストでサービスが継続される。この動作は「フェイルオーバー」と呼ばれ、サービスの中断を最小限に抑えることができる。逆に、故障していたホストが復旧したり、新たにホストがクラスターに追加されたりした場合も、NLBはそれを検知し、自動的にトラフィックの分散対象に含める(フェイルバック)。

NLBには主に二つの動作モードがある。「ユニキャストモード」と「マルチキャストモード」だ。ユニキャストモードでは、NLBクラスター内のすべてのホストが仮想IPアドレスに対応する仮想MACアドレスを共有する。これにより、クライアントからのパケットは仮想MACアドレス宛に送信され、すべてのNLBホストがそれを受け取る。しかし、このモードはネットワークスイッチに問題を引き起こすことがある。スイッチは通常、MACアドレスとポートのマッピングを学習するが、複数のポートから同じMACアドレス(仮想MACアドレス)が検出されると、スイッチが混乱し、パケットをすべてのポートにフラッディング(不特定多数に送信)してしまう可能性があるため、ネットワーク効率が低下することがある。一方、マルチキャストモードでは、仮想IPアドレスに対してユニキャストMACアドレスではなくマルチキャストMACアドレスを使用する。これにより、スイッチは仮想MACアドレスを学習しないため、フラッディングの問題は発生しにくい。ただし、マルチキャスト通信を許可するようにルーターやスイッチの設定変更が必要になる場合がある。どちらのモードを選択するかは、既存のネットワークインフラや要件によって慎重に検討する必要がある。

Windows NLBは、主にWebサーバー(IIS)、FTPサーバー、VPNサーバー、その他ステートレスなアプリケーションサーバーなど、各リクエストが独立して処理され、特定のサーバーにセッション情報が強く依存しないサービスに適している。データベースサーバーや、ユーザーセッションが特定のサーバーにしか存在しないようなステートフルなアプリケーション(例えば、クラスタリング機能を持たないアプリケーションのセッション情報)には、そのままでは適用しにくい。そのような場合には、共有ストレージを用いたWindows Server フェイルオーバー クラスタリング(WSFC)などの別のクラスタリング技術や、アプリケーションレベルでのセッション管理が必要となる場合が多い。

Windows NLBの設定は、Windows Serverの機能として簡単に有効化でき、NLBマネージャーという管理ツールを使ってクラスターの作成やホストの追加、ポートルールの設定などを行うことができる。導入にあたっては、各ホストのネットワーク構成、ファイアウォール設定、IPアドレスの計画など、ネットワーク環境を考慮した適切な設計が求められる。適切に導入・運用することで、サービスの可用性とパフォーマンスを大幅に向上させることが可能となる。

関連コンテンツ