マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

サービスの「負荷分散・拡張性」・「冗長性・可用性」の向上を図るためのサービス

  • ステートレス・システムの負荷分散が可能。
  • 負荷分散装置等のフロントのアプライアンスが不要。

特徴

  • 各構成ノードは、仮想的なネットワークカードを持つ。
    • 各ノードのネットワークカードは、NLBグループ毎に同一のMACアドレスを持ち、クライアントはNLBの各ノードを区別できない。
    • 仮想ネットワークカードは、受信したTCP/IPネットワーク・トラフィックを均等に分散させたり、重み付けして分散させたりすることができる。
    • リクエストを自ノードで処理するべきと判断した場合、NLBはデータ・パケットを上位層へ送る。
  • NLBは、各構成ノードを常に監視しており、
    • 障害を起こしたサーバは自動的にNLBから離脱する。
    • また、サーバが復帰した時は自動的にNLBに復帰する。
    • この作業はクラスタよりも迅速に動作する。

適合するシステム

  • ステートレスなシステム
  • データの更新があまり発生しないシステム(コンテンツの手動更新のレベル)

方式

要約していうと、

  • 複数のサーバに共通の仮想IP・MACアドレスを持たせクラスタを構成する。
  • クライアントからは単一のIPアドレスとコンピュータ名を持つシステムに見える。

処理の振り分け方式は、

  • (後述の)分散処理方式によりパケットをWebファームのNICに重複して着信させ、
  • (後述の)ハッシュ関数で着信したパケットをフィルタする

という方式である。

((後述の)ハッシュ関数の再構築による)フェイル・オーバーも可能になっている。

IPアドレス

「仮想サーバ」を構成するNICには、

  • 「専用IPアドレス」
  • 「仮想IPアドレス」

の設定が必要。

専用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

を採用している。

プロトコル

  • TCP
  • UDP
  • (TCP/UDPの)両方

がある。

分散処理方式

分散処理方式に

が存在する。

ユニキャスト・モード

ユニキャスト・モードの分散処理方式

  • サーバの物理ノードに同じIPアドレス(MACアドレス)を付与し、
  • 全ての物理ノードでパケットを受信。
  • 次いで、ハッシュ関数を使用して要求フィルタする。

マルチキャスト・モード

マルチキャスト・モードの分散処理方式

  • サーバの物理ノードに異なるIPアドレスを付与し、
  • マルチ・キャストを使用して全ての物理ノードでパケットを受信。
  • 次いで、ハッシュ関数を使用して要求フィルタする。

ハッシュ関数によるパーシステンス

Source address affinity persistenceのaffinityとして、
下記の2つのアフィニティが存在する。

アフィニティ

単一モード

単一モードのハッシュ関数は、クライアントのIPアドレスから物理ノードが選択する。

  • クライアントは、常に同じノードに振り分けられる。
  • プロキシサーバーを経由すると、偏りが発生することがある。

なしモード

なしモードのハッシュ関数は、クライアントのIPアドレス+ポートから物理ノードが選択する。

∴ クライアントのTCP/IP接続が異なると、異なるノードに振り分けられる。

フェイルオーバー

「仮想サーバ」を構成するNICは、互いの動作を調整するためにクラスタ内で定期的に「ハート ビート」を交換している。

  • 「仮想サーバ」を構成する「物理サーバ」で障害が発生したり、
    「物理サーバ」が追加・削除されたりして、「ハート ビート」に変化が生じた場合、
    NLBはクラスタ構成の変更を検出し「収束」と呼ばれるプロセスを開始する。
  • 「収束」プロセスでは、「仮想サーバ」を構成する「物理サーバ」間でメッセージが交換され、
    入力トラフィックをフィルタするハッシュ テーブルを再生成し、「物理サーバ」間に展開・共有する。
  • これにより「仮想サーバ」が再構築され、クライアント要求は「物理サーバ」に再分散される。

操作モードとNIC枚数

ユニキャスト・モード

NIC1枚

  • 長所
    • 1枚のNICでも動作する
    • 全てのルータで機能する
  • 短所
    • 負荷によっては、2枚目のNICが必要
    • クラスタ ホスト間の通信は不可能
      ※ ユニキャスト・モードでは、「仮想サーバ」を構成する全てのNICに同じMACアドレスを割り当てるため、これらNIC間での通信ができない。

NIC2枚以上

  • 長所
    • 全てのルータで機能する
    • クラスタ ホスト間の通信が可能
    • トラフィックの分離により、全体的な性能が向上する
      • フロントエンド、バックエンドとの通信の分離
      • 管理操作の分離
  • 短所
    • 2枚以上のNICが必要

マルチキャスト・モード

NIC1枚

  • 長所
    • 1枚のNICでも動作する
    • クラスタ ホスト間の通信が可能
  • 短所
    • 負荷によっては、2枚目のNICが必要
    • ルータによっては特別な設定が必要

NIC2枚以上

  • 長所
    • クラスタ ホスト間の通信が可能
    • トラフィックの分離により、全体的な性能が向上する
      • フロントエンド、バックエンドとの通信の分離
      • 管理操作の分離
  • 短所
    • 2枚以上のNICが必要
    • ルータによっては特別な設定が必要

その他

ASP.NETでは、SessionState?を使用するステートフルなアプリケーションでも、
ステートサーバやSQL Serverに状態を一時退避する事で、以下を可能にしている。

  • [なしモード]での負荷分散([単一モード]なら不要)
  • [単一モード]でフェイル・オーバした後の業務続行(不可能なら不要)
  • ただし、ステートサーバやSQL Serverはシングル・ポイントになり得る。

参考


Tags: :Windows, :冗長化


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-10 (水) 18:30:44 (696d)