Open棟梁Project - マイクロソフト系技術情報 Wiki
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>冗長化アーキテクチャ]]

* 目次 [#q93b7a98]
#contents

*概要 [#s6e55500]
サービスの「負荷分散・拡張性」・「冗長性・可用性」の向上を図るためのサービス
-ステートレス・システムの負荷分散が可能。
-負荷分散装置等のフロントのアプライアンスが不要。
-(後述のハッシュ関数の再構築による)~
フェイル・オーバーも可能になっている。

*プロトコル [#e9f06347]
**特徴 [#gb6dfa71]
-各構成ノードは、仮想的なネットワークカードを持つ。
--各ノードのネットワークカードは、NLBグループ毎に同一のMACアドレスを持ち、クライアントはNLBの各ノードを区別できない。
--仮想ネットワークカードは、受信したTCP/IPネットワーク・トラフィックを均等に分散させたり、重み付けして分散させたりすることができる。
--リクエストを自ノードで処理するべきと判断した場合、NLBはデータ・パケットを上位層へ送る。

-NLBは、各構成ノードを常に監視しており、
--障害を起こしたサーバは自動的にNLBから離脱する。
--また、サーバが復帰した時は自動的にNLBに復帰する。
--この作業はクラスタよりも迅速に動作する。

**適合するシステム [#d45aa5ff]
-ステートレスなシステム
-データの更新があまり発生しないシステム(コンテンツの手動更新のレベル)

*方式 [#yd917694]
要約していうと、

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

処理の振り分け方式は、

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

という方式である。

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

**IPアドレス [#v9a116d3]
「仮想サーバ」を構成するNICには、
-「専用IPアドレス」
-「仮想IPアドレス」

の設定が必要。

***専用IPアドレス [#m680025e]
「物理サーバ」のデータ送受信に利用される。

***仮想IPアドレス [#caee43d4]
「仮想サーバ」のデータ送受信に利用される。

**分散処理方式 [#mdb80856]
パケットをWebファームのNICに重複して着信させる分散処理の方式に以下の2つがある。
-[[ユニキャスト・モード>#pa9274d9]]
-[[マルチキャスト・モード>#nba7db72]]

**ハッシュ関数によるパーシステンス [#i56f376b]
上記の[[分散処理方式>#mdb80856]]を実現するため、~
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''

を採用している。

**プロトコル [#e9f06347]
-TCP
-UDP
-(TCP/UDPの)両方
-([[TCP, UDP]]の)両方

がある。

*分散方法 [#x6107af6]
分散方法に[ユニキャスト・モード]、[マルチキャスト・モード]が存在する。
*分散処理方式 [#x6107af6]
分散処理方式に
-[[ユニキャスト・モード>#pa9274d9]]
-[[マルチキャスト・モード>#nba7db72]]

が存在する。

**ユニキャスト・モード [#pa9274d9]
サーバの物理ノードに同じIPアドレス(MACアドレス)を付与し、~
全ての物理ノードでパケットを受信。~
次いで、ハッシュ関数を使用して要求フィルタする。
ユニキャスト・モードの分散処理方式

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

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

*アフィニティ [#wa7fd840]
アフィニティに[単一モード]と[なしモード]が存在する。
-サーバの物理ノードに異なるIPアドレスを付与し、
-マルチ・キャストを使用して全ての物理ノードでパケットを受信。
-次いで、ハッシュ関数を使用して要求フィルタする。

**単一モード [#ff785102]
ハッシュ関数は、クライアントのIPアドレスから物理ノードが選択する。
*ハッシュ関数によるパーシステンス [#eec2ccc1]
Source address affinity persistenceのaffinityとして、~
下記の2つのアフィニティが存在する。

**アフィニティ [#wa7fd840]
-[[単一モード>#ff785102]]
-[[なしモード>#u231372a]]

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

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

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

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

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

-「仮想サーバ」を構成する「物理サーバ」で障害が発生したり、~
「物理サーバ」が追加・削除されたりして、「ハート ビート」に変化が生じた場合、~
NLBはクラスタ構成の変更を検出し「収束」と呼ばれるプロセスを開始する。

-「収束」プロセスでは、「仮想サーバ」を構成する「物理サーバ」間でメッセージが交換され、~
入力トラフィックをフィルタするハッシュ テーブルを再生成し、「物理サーバ」間に展開・共有する。

-これにより「仮想サーバ」が再構築され、クライアント要求は「物理サーバ」に再分散される。

*操作モードとNIC枚数 [#a61dd8da]

**ユニキャスト・モード [#h84394b9]
***NIC1枚 [#d29f2634]
-長所
--1枚のNICでも動作する
--全てのルータで機能する

-短所
--負荷によっては、2枚目のNICが必要
--クラスタ ホスト間の通信は不可能~
&color(red){※ ユニキャスト・モードでは、「仮想サーバ」を構成する全てのNICに同じMACアドレスを割り当てるため、これらNIC間での通信ができない。};

***NIC2枚以上 [#b8f4be10]
-長所
--全てのルータで機能する
--クラスタ ホスト間の通信が可能
--トラフィックの分離により、全体的な性能が向上する
---フロントエンド、バックエンドとの通信の分離
---管理操作の分離

-短所
--2枚以上のNICが必要

**マルチキャスト・モード [#t002042c]
***NIC1枚 [#acb554f6]
-長所
--1枚のNICでも動作する
--クラスタ ホスト間の通信が可能

-短所
--負荷によっては、2枚目のNICが必要
--ルータによっては特別な設定が必要

***NIC2枚以上 [#e80d8424]
-長所
--クラスタ ホスト間の通信が可能
--トラフィックの分離により、全体的な性能が向上する
---フロントエンド、バックエンドとの通信の分離
---管理操作の分離

-短所
--2枚以上のNICが必要
--ルータによっては特別な設定が必要

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

-[なしモード]での負荷分散([単一モード]なら不要)

-[単一モード]でフェイル・オーバした後の業務続行(不可能なら不要)

-ただし、ステートサーバやSQL Serverはシングル・ポイントになり得る。

*参考 [#p36ba3a4]
-[[NLB?MSCS/WSFC?]]

-Network Load Balancing Deployment Guide~
https://technet.microsoft.com/ja-jp/library/cc754833.aspx

----
Tags: [[:Windows]], [[:冗長化]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS