MIRACLE LoadBalancer を使用したネットワーク構成と注意点 ミラクル リナックス 2015/02/13
Agenda ネットワーク接続パターン パケット転送方式 NATオプション注意点 負荷分散方式 固定化方式 Cookieオプション注意点 2
ネットワーク構成パターン パフォーマンス ダイレクトサーバーリターン (DSR) 対障害性 対応レイヤ 備考 接続パターン 1 冗長無し 接続パターン 1 冗長有り L4: 全て L7: 全て L4: 全て L7: 全て 接続パターン2 L4:NATのみ L7: 全て 最も多く使用される構成 ( 推奨 ) L4 時 : 要 NAT オプション 接続パターン 3 - - - - 未サポート 3
ネットワーク接続パターン 1( 冗長無し ) クライアント 1 アーム Internet ルータファイアウォール L2 スイッチ アクティブ 特長 最小構成 分散ノード MLLB を 分散ノード (Web サーバ等 ) と同じセグメントに 1 アームで接続するシンプル構成 サーバ単体でサービスの既存環境への MLLB を追加時 分散ノードのセグメント変更不要 L4 負荷分散の MAT 方式で分散させると MLLB を経由せずに 分散ノードから直接クライアントへ応答可能ダイレクトレスポンスによりスループット向上! 利用可能なパケット転送方式 1 アームでは 全ての分散方式が使用可能 L4 負荷分散 : MAT 方式 NAT 方式 ( オプション ) L7 負荷分散 : 全て 4
ネットワーク接続パターン 1( 冗長あり ) 1 アーム 1 アーム (LAN 二重化 ) クライアント Internet ルータファイアウォール L2 スイッチ アクティブ クライアント Internet ルータファイアウォール L2 スイッチ アクティブ スタンバイ L2 スイッチ スタンバイ 分散ノード 分散ノード L2 スイッチおよびルータを二重化するかは要件に応じて判断ください 例では 分散ノードの LAN も二重化しています 分散ノードの二重化は 分散ノードの機能 (bonding) を使用します 特長 MLLBを 分散ノード (Webサーバ等) と同じセグメントに1アームで接続するシンプル構成 サーバ単体でサービスの既存環境へのMLLBを追加時 分散ノードのセグメント変更不要 L4 負荷分散のMAT 方式で分散することで MLLBを経由せずに 分散ノードから直接クライアントへ応答可能ダイレクトレスポンスによりスループット向上! 利用可能なパケット転送方式 1アームでは 全ての分散方式が使用可能 L4 負荷分散 : MAT 方式 NAT 方式 ( オプション ) L7 負荷分散 : 全て 5
ネットワーク接続パターン 2 2 アーム クライアント Internet ルータファイアウォール L2 スイッチ アクティブ L2 スイッチ 分散ノード LB はルータではありません eth0 eth1 eth0 をクライアント側にして下さい スタンバイ 特長 MLLB が クライアント側とサーバ側のそれぞれのセグメント (2 アーム ) に接続される構成 クライアント側からは 分散ノード側セグメントの IP アドレスは見えないため よりセキュア 既存環境がロードバランサを 2 アームで使用している場合に LB を導入しても 分散ノードのセグメントを変更する必要なし 利用可能なパケット転送方式 2 アームでは MAT 方式以外の全ての分散方式が使用可能 L4 負荷分散 : NAT 方式 ( オプション ) L7 負荷分散 : 全て 6
ネットワーク接続パターン 3 2 アーム (LAN 二重化 ) クライアント Internet ルータファイアウォール L2 スイッチ アクティブ L2 スイッチ 分散ノード bond0 bond1 L2 スイッチ 現在上記構成は対応しておりません 構成時はご注意ください スタンバイ L2 スイッチ 7
パケット転送方式 パフォーマンス ダイレクトサーバーリターン (DSR) レイヤ 備考 DSR( ダイレクトサーバリターン ) 方式 L4 最も多く使用され る構成 ( 推奨 ) NAT 方式 L4 要 NAT オプション Web サーバ固定化方式 L7 http のみ対応 8
パケット転送方式 1 MLLB 標準の DSR( ダイレクトサーバリターン ) 方式 L4 負荷分散 MAT(MAC Address Translation) ) クライアント MLLB と分散ノードが同一セグメントの必要有りネットワーク接続パターン 1 MLLB 仮想 IP :10.1.1.100 分散ノード オプション不要 エージェント必要 *1 実 IP:192.168.1.50 MAC:0000AE801150 Source MAC= 0000AE801150 Source IP= 192.168.1.50 Destination MAC=0000AE812201 Destination IP=10.1.1.100 実 IP:10.1.1.1 MAC:0000AE812201 実 IP : 10.1.1.11 MAC:0000AE812211 ループバック IP:10.1.1.100 Source MAC= 0000AE812201 Source IP= 192.168.1.50 Destination MAC=0000AE812211 Destination IP=10.1.1.100 Source MAC=0000AE812211 Source IP= 10.1.1.100 Destination MAC=0000AE801150 Destination IP=192.168.1.50 一連の通信が全て同一の TCP コネクションとして行なわれる (LB はパケットを転送しているのみ ) *1: 分散ノードへエージェントプログラムの導入又は IPTABLES(Linux) やループバックアダプタ (Windows) の設定が必要です 9
パケット転送方式 2 MLLB NAT オプションを使用 (NAT) 方式 L4 負荷分散 NAT(Network Address Translation) クライアント 実 IP:192.168.1.50 Source IP= 192.168.1.50 Destination IP=10.1.1.100 MLLB と分散ノードが別セグメントでも対応可能ネットワーク接続パターン 1 または 2 Source IP= 10.1.1.100 Destination IP=192.168.1.50 MLLB 仮想 IP :10.1.1.100 実 IP:10.1.1.1 分散ノード 実 IP : 172.168.1.11 Source IP= 192.168.1.50 Destination IP=172.168.1.11 Source IP= 172.168.1.11 Destination IP=192.168.1.50 一連の通信が全て同一の TCP コネクションとして行なわれる (LB はパケットを転送しているのみ ) [SYN] [SYN] [SYN,ACK] [SYN,ACK] [ACK] [ACK] GET / HTTP/1.1 GET / HTTP/1.1 *1: 分散ノードのデフォルトゲートウェイとして仮想 IP アドレスの設定が必要です *2:LB~ 分散ノード間の経路上のルータに経路情報の登録が必要な場合があります NAT オプション必要 エージェント不要 デフォルトゲートウェイ設定必要 *1 *2 10
NAT オプション注意事項 NAT オプションを使用される場合は 分散ノード (Web サーバ等 ) のデフォルトゲートウェイに MLLB を設定されることを推奨します NAT オプション使用時は分散ノードとクライアントとの間の通信が MLLB を経由するようルーティングを行うことが必須です MLLB の NAT オプションは DNAT( 送信先 IP アドレス変換 ) となっております SNAT( 送信元 IP アドレス変換 ) は対応しておりません 11
パケット転送方式 3 Proxy 転送方式 (http 専用 ) Web サーバ固定化方式には URL クライアントタイプ i-mode cookie( 要オプション ) の 4 種類があります クライアント MLLB L7 分散グループ (Web サーバ固定化 ) を使用した場合 MLLB 仮想 IP :10.1.1.100 MLLB と分散ノードが別セグメントでも対応可能ネットワーク接続パターン 1 または 2 オプション不要 (cookie 固定化では必要 ) 分散ノード エージェント不要 実 IP:192.168.1.50 Source IP= 192.168.1.50 Destination IP=10.1.1.100 Source IP= 10.1.1.100 Destination IP=192.168.1.50 実 IP:10.1.1.1 実 IP : 10.1.1.11 Source IP= 10.1.1.1 Destination IP=10.1.1.11 Source IP= 172.16.1.11 Destination IP=10.1.1.1 クライアント側とサーバ側とで 別々の TCP コネクションが張られる ( プロキシ動作 ) [SYN] [SYN,ACK] [ACK] GET / HTTP/1.1 [SYN,ACK] [SYN] [ACK] GET / HTTP/1.1 12
L4 負荷分散を使用した SSL の分散 ( パケット転送方式 1) ダイレクト転送方式 ( L4 負荷分散 MAT(MAC Address Translation) ) ローカルクライアント MLLB と分散ノードが同一セグメントの必要有りネットワーク接続パターン 1 MLLB 仮想 IP :10.1.1.100 分散ノード 実 IP:192.168.1.50 MAC:0000AE801150 Source MAC= 0000AE801150 Source IP= 192.168.1.50 Destination MAC=0000AE812201 Destination IP=10.1.1.100 Destination Port=443 実 IP:10.1.1.1 MAC:0000AE812201 実 IP : 10.1.1.11 MAC:0000AE812211 ループバック IP:10.1.1.100 Source MAC= 0000AE812201 Source IP= 192.168.1.50 Destination MAC=0000AE812211 Destination IP=10.1.1.100 Destination Port=443 Source MAC=0000AE812211 Source IP= 10.1.1.100 SourcePort=443 Destination MAC=0000AE801150 Destination IP=192.168.1.50 一連の通信が全て同一の TCP コネクションとして行なわれる (LB はパケットを転送しているのみ ) 13
NAT オプションを使用した SSL の分散 ( パケット転送方式 2) NAT 転送方式 ( L4 負荷分散 NAT(Network Address Translation) ) ローカルクライアント MLLB と分散ノードが別セグメントでも対応可能 NAT オプション必要 MLLB 仮想 IP :10.1.1.100 分散ノード 実 IP:192.168.1.50 Source IP= 192.168.1.50 Destination IP=10.1.1.100 Destination Port=443 実 IP:10.1.1.1 Source IP= 10.1.1.100 SourcePort=443 Destination IP=192.168.1.50 実 IP : 172.168.1.11 Source IP= 192.168.1.50 Destination IP=172.168.1.11 Destination Port=443 Source IP= 172.168.1.11 SourcePort=443 Destination IP=192.168.1.50 一連の通信が全て同一の TCP コネクションとして行なわれる (LB はパケットを転送しているのみ ) [SYN] [SYN] [SYN,ACK] [SYN,ACK] [ACK] [ACK] GET / HTTP/1.1 GET / HTTP/1.1 14
負荷分散方式 ( 初回振り分け先の決定方式 ) 既存コネクション考慮 CPU 負荷考慮 エージェント 備考 ラウンドロビン - - - 分散ノードは全て対等 クライアントか らの要求を分散ノードに順番に割当 最小コネクション - - 接続されたTCPコネクション数の最も 少ない分散ノードにクライアントからの 要求を割当 静的重み付けラウンドロビン 静的重み付け最小コネクション CPU 負荷重み付けラウンドロビン CPU 負荷重み付け最小コネクション - - - 静的に割当比率を設定可能なラウンド ロビン - - 静的に割当比率を設定可能な最小コ ネクション - 必須 分散ノードのCPU 負荷に応じてクライ アントからの要求を順番に割当 必須 接続されたTCPコネクション数と 分散 ノードのCPU 負荷に応じてクライアント からの要求を割当 15
セッション維持機能 ( 接続固定化方式 ) レイヤ パフォーマンス 静的コンテンツ PC 向け動的コンテンツ i-mode 向け動的コンテンツ 備考 クライアント個別 クライアント IP L4 最も多く使用さ れる構成 ( 推奨 ) L4 URL L7 i-mode HTML クライアントタイプ L7 :i-mode L7 :i-mode Cookie L7 Cookie オプション必須 16
固定化方式 1 クライアント個別 要求元クライアント (IP アドレス ) 単位に 分散ノード ( サーバ ) の固定化を行います 分散ノードの決定は負荷分散方式に従います 1 クライアント A から 1 回目のリクエスト 分散ノード固定化 (L4 負荷分散 ) クライアント A 21 回目のリクエストで分散されたサーバに分散 クライアント B 1 クライアント B から 1 回目のリクエスト 21 回目のリクエストで分散されたサーバに分散 17
固定化方式 2 クライアント IP 各分散ノード ( サーバ ) で受け付けるクライアントの IP アドレスを指定 ( 個別と範囲指定 ) することにより 分散ノードの固定化を行います 分散ノード固定化 (L4 負荷分散 ) 実 IP:192.168.1.50 クライアント IP が 192.168.1.0/24 の場合 実 IP:192.168.1.55 実 IP:10.1.0.168 クライアント IP が 10.1.0.0/24 の場合 18
固定化方式 3 URL 分散ノード (Web サーバ ) において 受け付ける URL のパターンを設定することにより分散先を固定化することが可能各 URL に複数サーバの指定が可能複数ノード内の固定はクライアントの IP アドレスによる固定 Web サーバ固定化 (L7 負荷分散 ) http://www.miraclelinux.com/mllb リクエスト URL が www.miraclelinux.com/mllb の場合 実 IP:192.168.1.50 http://www.miraclelinux.com/clp URL 指定パターン URL ディレクトリ 拡張子 リクエスト URL が www.miraclelinux.com/clp の場合 19
固定化方式 4 i-mode HTML i モード端末からのリクエストを 最初のリクエストで分散したノードに固定化する機能 Web サーバ固定化 (L7 負荷分散 ) 1i-modeA から 1 回目のリクエスト i-modea 21 回目のリクエストで分散されたサーバに分散 1i-modeB から 1 回目のリクエスト i-modeb 21 回目のリクエストで分散されたサーバに分散 20
固定化方式 5 クライアントタイプ 要求元のクライアントが i モード端末かそれ以外 ( 一般の PC など ) かにより分散先を固定化する機能それぞれ複数のノード ( サーバ ) を使用することが可能複数ノード内の固定はクライアントの IP アドレスによる固定 Web サーバ固定化 (L7 負荷分散 ) PC クライアントが PC 端末の場合 PC i-mode クライアントが imode 端末の場合 21
固定化方式 6 Cookie Cookieを使用して最初のリクエストで分散したノードに固定化する機能注意点 :Cookieによる固定化がされるのはWebサーバがCookie を返す場合のみ WebサーバがCookieを返さない 場合はクライアントのIPアドレスによる固定となる 1PC Aから1 回目のリクエスト Web サーバ固定化 (L7 負荷分散 ) PC A 21 回目のリクエストで分散されたサーバに分散 1i-modeA から 1 回目のリクエスト i-modea 21 回目のリクエストで分散されたサーバに分散 22
Cookie による Web サーバ固定化の仕組み ( 詳細 ) Web サーバがレスポンスに Cookie を含める場合 クライアント Web サーバ 1 4 Set-Cookie: Set-Cookie: 1 2 3 Set-Cookie: 1 クライアントがリクエストを送信 5 Cookie: Cookie: LB 6 Cookie: Cookie: 2LB は 負荷分散方式に従って振分先の Web サーバを決定し リクエストを転送 4LB は固定化用 Cookie を付けてレスポンスを返信 3Web サーバは Cookie 付きのレスポンスを返信 5 クライアントは Cookie 付きのリクエストを送信 応答 HTTP ヘッダの例 Cookie 固定化時間 の間 Cookie による接続先を記憶します HTTP/1.1 200 OK 4LB クライアント Date: Fri, 09 Oct 2009 11:10:42 GMT Server: Apache/2.2.9 (Win32) mod_ssl/2.2.9 OpenSSL/0.9.8h Set-Cookie: key2=123456789; path=/; expires=thu, 07-Jan-2010 11:10:42 GMT Keep-Alive: timeout=5, max=97 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 Set-Cookie:KTCPVS_SID=1; Path=/ Web サーバ 2 6LB は固定化用 Cookie から接続先 Web サーバを決定し リクエストを転送 HTTP/1.1 200 OK 3Webサーバ LB Date: Fri, 09 Oct 2009 11:10:42 GMT Server: Apache/2.2.9 (Win32) mod_ssl/2.2.9 OpenSSL/0.9.8h Set-Cookie: key2=123456789; path=/; expires=thu, 07-Jan-2010 11:10:42 GMT Keep-Alive: timeout=5, max=97 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 23
Cookie による Web サーバ固定化の仕組み Web サーバがレスポンスに Cookie を含めない場合 クライアント Web サーバ 1 4 1 2 3 1 クライアントがリクエストを送信 4LB はクライアントへレスポンスを返信 5 LB 6 2LB は 負荷分散方式に従って振分先の Web サーバを決定し リクエストを転送 3Web サーバはレスポンスを返信 (Cookie は付いていない ) 5 クライアントがリクエストを送信 (Web サーバ固定化の ) 固定化時間 の間 クライアントの IP アドレスを基準にして接続先を記憶します Web サーバ 2 6LB はクライアントの IP アドレスを基準に 前回 (2) 接続した Web サーバを判断し リクエストを転送 24