Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
サービスの「負荷分散・拡張性」・「冗長性・可用性」の向上を図るためのサービス
- ステートレス・システムの負荷分散が可能。
- 負荷分散装置等のフロントのアプライアンスが不要。
特徴 †
- 各構成ノードは、仮想的なネットワークカードを持つ。
- 各ノードのネットワークカードは、NLBグループ毎に同一のMACアドレスを持ち、クライアントはNLBの各ノードを区別できない。
- 仮想ネットワークカードは、受信したTCP/IPネットワーク・トラフィックを均等に分散させたり、重み付けして分散させたりすることができる。
- リクエストを自ノードで処理するべきと判断した場合、NLBはデータ・パケットを上位層へ送る。
- NLBは、各構成ノードを常に監視しており、
- 障害を起こしたサーバは自動的にNLBから離脱する。
- また、サーバが復帰した時は自動的にNLBに復帰する。
- この作業はクラスタよりも迅速に動作する。
適合するシステム †
- ステートレスなシステム
- データの更新があまり発生しないシステム(コンテンツの手動更新のレベル)
方式 †
要約していうと、
- 複数のサーバに共通の仮想IP・MACアドレスを持たせクラスタを構成する。
- クライアントからは単一のIPアドレスとコンピュータ名を持つシステムに見える。
処理の振り分け方式は、
- (後述の)分散処理方式によりパケットをWebファームのNICに重複して着信させ、
- (後述の)ハッシュ関数で着信したパケットをフィルタする
という方式である。
((後述の)ハッシュ関数の再構築による)フェイル・オーバーも可能になっている。
分散処理方式 †
パケットをWebファームのNICに重複して着信させる分散処理の方式に以下の2つがある。
ハッシュ関数 †
NLBのハッシュ関数は、パーシステンスの種類として、
以下のサイトで説明されている、
- ロードバランサ - パーシステンスの種類
http://www.infraexpert.com/study/loadbalancer5.html
- Source address affinity persistence
- Cookie persistence
- SSL persistence
- Destination address affinity persistence
- Hash persistence
- SIP persistence
- Universal persistence
- Microsoft Remote Desktop Protocol persistence
Source address affinity persistence
を採用している。
プロトコル †
がある。
分散処理方式 †
分散処理方式に
が存在する。
ユニキャスト・モード †
ユニキャスト・モードの分散処理方式
- サーバの物理ノードに同じIPアドレス(MACアドレス)を付与し、
- 全ての物理ノードでパケットを受信。
- 次いで、ハッシュ関数を使用して要求フィルタする。
マルチキャスト・モード †
マルチキャスト・モードの分散処理方式
- サーバの物理ノードに異なるIPアドレスを付与し、
- マルチ・キャストを使用して全ての物理ノードでパケットを受信。
- 次いで、ハッシュ関数を使用して要求フィルタする。
ハッシュ関数 †
アフィニティ †
Source address affinity persistenceのaffinityとして、
が存在する。
単一モード †
ハッシュ関数は、クライアントのIPアドレスから物理ノードが選択する。
- クライアントは、常に同じノードに振り分けられる。
- プロキシサーバーを経由すると、偏りが発生することがある。
なしモード †
ハッシュ関数は、クライアントのIPアドレス+ポートから物理ノードが選択する。
∴ クライアントのTCP/IP接続が異なると、異なるノードに振り分けられる。
その他 †
ASP.NETでは、SessionState?を使用するステートフルなアプリケーションでも、
ステートサーバやSQL Serverに状態を一時退避する事で、以下を可能にしている。
- [なしモード]での負荷分散([単一モード]なら不要)
- [単一モード]でフェイル・オーバした後の業務続行(不可能なら不要)
- ただし、ステートサーバやSQL Serverはシングル・ポイントになり得る。
参考 †