Open棟梁Project - マイクロソフト系技術情報 Wiki
目次  †
概要  †
サービスの「負荷分散・拡張性」・「冗長性・可用性」の向上を図るためのサービス
- ステートレス・システムの負荷分散が可能。
 
- 負荷分散装置等のフロントのアプライアンスが不要。
 
特徴  †
- 各構成ノードは、仮想的なネットワークカードを持つ。
- 各ノードのネットワークカードは、NLBグループ毎に同一のMACアドレスを持ち、クライアントはNLBの各ノードを区別できない。
 
- 仮想ネットワークカードは、受信したTCP/IPネットワーク・トラフィックを均等に分散させたり、重み付けして分散させたりすることができる。
 
- リクエストを自ノードで処理するべきと判断した場合、NLBはデータ・パケットを上位層へ送る。
 
 
- NLBは、各構成ノードを常に監視しており、
- 障害を起こしたサーバは自動的にNLBから離脱する。
 
- また、サーバが復帰した時は自動的にNLBに復帰する。
 
- この作業はクラスタよりも迅速に動作する。
 
 
適合するシステム  †
- ステートレスなシステム
 
- データの更新があまり発生しないシステム(コンテンツの手動更新のレベル)
 
方式  †
要約していうと、
- 複数のサーバに共通の仮想IP・MACアドレスを持たせクラスタを構成する。
 
- クライアントからは単一のIPアドレスとコンピュータ名を持つシステムに見える。
 
処理の振り分け方式は、
- (後述の)分散処理方式によりパケットをWebファームのNICに重複して着信させ、
 
- (後述の)ハッシュ関数で着信したパケットをフィルタする
 
という方式である。
((後述の)ハッシュ関数の再構築による)フェイル・オーバーも可能になっている。
IPアドレス  †
「仮想サーバ」を構成するNICには、
の設定が必要。
専用IPアドレス  †
「物理サーバ」のデータ送受信に利用される。
仮想IPアドレス  †
「仮想サーバ」のデータ送受信に利用される。
分散処理方式  †
パケットを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接続が異なると、異なるノードに振り分けられる。
フェイルオーバー  †
「仮想サーバ」を構成するNICは、互いの動作を調整するためにクラスタ内で定期的に「ハート ビート」を交換している。
- 「仮想サーバ」を構成する「物理サーバ」で障害が発生したり、
「物理サーバ」が追加・削除されたりして、「ハート ビート」に変化が生じた場合、
NLBはクラスタ構成の変更を検出し「収束」と呼ばれるプロセスを開始する。 
- 「収束」プロセスでは、「仮想サーバ」を構成する「物理サーバ」間でメッセージが交換され、
入力トラフィックをフィルタするハッシュ テーブルを再生成し、「物理サーバ」間に展開・共有する。 
- これにより「仮想サーバ」が再構築され、クライアント要求は「物理サーバ」に再分散される。
 
操作モードとNIC枚数  †
ユニキャスト・モード  †
NIC1枚  †
- 短所
- 負荷によっては、2枚目のNICが必要
 
- クラスタ ホスト間の通信は不可能
ユニキャスト・モードでは、「仮想サーバ」を構成する全てのNICに
同じMACアドレスを割り当てるため、これらNIC間での通信ができない。 
 
NIC2枚以上  †
- 長所
- 全てのルータで機能する
 
- クラスタ ホスト間の通信が可能
 
- トラフィックの分離により、全体的な性能が向上する
- フロントエンド、バックエンドとの通信の分離
 
- 管理操作の分離
 
 
 
マルチキャスト・モード  †
NIC1枚  †
- 長所
- 1枚のNICでも動作する
 
- クラスタ ホスト間の通信が可能
 
 
- 短所
- 負荷によっては、2枚目のNICが必要
 
- ルータによっては特別な設定が必要
 
 
NIC2枚以上  †
- 長所
- クラスタ ホスト間の通信が可能
 
- トラフィックの分離により、全体的な性能が向上する
- フロントエンド、バックエンドとの通信の分離
 
- 管理操作の分離
 
 
 
- 短所
- 2枚以上のNICが必要
 
- ルータによっては特別な設定が必要
 
 
その他  †
ASP.NETでは、SessionState?を使用するステートフルなアプリケーションでも、
ステートサーバやSQL Serverに状態を一時退避する事で、以下を可能にしている。
- [なしモード]での負荷分散([単一モード]なら不要)
 
- [単一モード]でフェイル・オーバした後の業務続行(不可能なら不要)
 
- ただし、ステートサーバやSQL Serverはシングル・ポイントになり得る。
 
参考  †