「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>冗長化アーキテクチャ]] * 目次 [#q93b7a98] #contents *概要 [#s6e55500] サービスの「負荷分散・拡張性」・「冗長性・可用性」の向上を図るためのサービス -ステートレス・システムの負荷分散が可能。 -負荷分散装置等のフロントのアプライアンスが不要。 **特徴 [#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] 分散処理方式に -[[ユニキャスト・モード>#pa9274d9]] -[[マルチキャスト・モード>#nba7db72]] が存在する。 **ユニキャスト・モード [#pa9274d9] ユニキャスト・モードの分散処理方式 -サーバの物理ノードに同じIPアドレス(MACアドレス)を付与し、 -全ての物理ノードでパケットを受信。 -次いで、ハッシュ関数を使用して要求フィルタする。 **マルチキャスト・モード [#nba7db72] マルチキャスト・モードの分散処理方式 -サーバの物理ノードに異なるIPアドレスを付与し、 -マルチ・キャストを使用して全ての物理ノードでパケットを受信。 -次いで、ハッシュ関数を使用して要求フィルタする。 *ハッシュ関数によるパーシステンス [#eec2ccc1] Source address affinity persistenceのaffinityとして、~ 下記の2つのアフィニティが存在する。 **アフィニティ [#wa7fd840] -[[単一モード>#ff785102]] -[[なしモード>#u231372a]] ***単一モード [#ff785102] 単一モードのハッシュ関数は、クライアントのIPアドレスから物理ノードが選択する。 -クライアントは、常に同じノードに振り分けられる。 -プロキシサーバーを経由すると、偏りが発生することがある。 ***なしモード [#u231372a] なしモードのハッシュ関数は、クライアントの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]], [[:冗長化]]