MIRACLE LoadBalancerを使用
したネットワーク構成と注意点
ミラクル・リナックス
Agenda
ネットワーク接続パターン
パケット転送方式
NATオプション注意点
負荷分散方式
固定化方式
Cookieオプション注意点
パフォー
マンス
ダイレクト
サーバーリ
ターン(DSR)
対
障害性
対応
レイヤ
備考
接続パターン①
冗長無し
◎
○
×
L4:全て
L7:全て
接続パターン①
冗長有り
◎
○
◎
L4:全て
L7:全て
最も多く使
用される構
成
(推奨)
接続パターン②
○
×
○
L4:NATのみ
L7:全て
L4時:要NAT
オプション
接続パターン③
-
-
-
-
未サポート
ネットワーク構成パターン
ネットワーク接続パターン①(冗長無し)
1アーム
分散ノード クライアント Internet ルータ ファイアウォール L2スイッチ ・ ・ ・ アクティブ◆特 長
最小構成
MLLBを、分散ノード(Webサーバ等)と同じセグメントに1アームで接続するシンプル構成
サーバ単体でサービスの既存環境へのMLLBを追加時、分散ノードのセグメント変更不要
L4負荷分散のMAT方式で分散させると、MLLBを経由せずに、分散ノードから直接クライ
アントへ応答可能
ダイレクトレスポンスによりスループット向上!
◆利用可能なパケット転送方式
1アームでは、
全ての分散方式が使用可能
L4負荷分散 : MAT方式、NAT方式(オプション)
L7負荷分散 : 全て
ネットワーク接続パターン①(冗長あり)
1アーム
分散ノード クライアント Internet ルータ ファイアウォール L2スイッチ ・ ・ ・ アクティブ スタンバイ1アーム(LAN二重化)
分散ノード クライアント Internet ルータ ファイアウォール L2スイッチ ・ ・ ・ アクティブ スタンバイ L2スイッチ◆特 長
MLLBを、分散ノード(Webサーバ等)と同じセグメントに1アームで接続するシンプル構成
サーバ単体でサービスの既存環境へのMLLBを追加時、分散ノードのセグメント変更不要
L4負荷分散のMAT方式で分散することで、MLLBを経由せずに、分散ノードから直接クライアン
トへ応答可能
ダイレクトレスポンスによりスループット向上!
◆利用可能なパケット転送方式
1アームでは、
全ての分散方式が使用可能
L4負荷分散 : MAT方式、NAT方式(オプション)
※L2スイッチおよびルータを二重化するかは要件に応じて判断ください。 ※例では、分散ノードのLANも二重化しています。 分散ノードの二重化は、分散ノードの機能(bonding)を使用します。ネットワーク接続パターン②
2アーム
分散ノード クライアント Internet ルータ ファイアウォール L2スイッチ ・ ・ ・ アクティブ スタンバイ◆特 長
MLLBが、クライアント側とサーバ側のそれぞれのセグメント(2アーム)に接続される構成
クライアント側からは、
分散ノード側セグメントのIPアドレスは見えない
ため、よりセキュア
既存環境がロードバランサを2アームで使用している場合
に、LBを導入しても、
分散ノードのセグメントを変更する必要なし
◆利用可能なパケット転送方式
2アームでは、
MAT方式以外の全ての分散方式が使用可能
L4負荷分散 : NAT方式(オプション)
L7負荷分散 : 全て
L2スイッチ ※LBはルータではありません。 ※eth0をクライアント側にして下さい。 eth0 eth1ネットワーク接続パターン③
◆現在上記構成は対応しておりません。
構成時はご注意ください。
2アーム(LAN二重化)
分散ノード クライアント Internet ルータ ファイアウォール L2スイッチ ・ ・ ・ アクティブ スタンバイ L2スイッチ L2スイッチ L2スイッチ bond0 bond1パフォー
マンス
ダイレクトサーバー
リターン(DSR)
レイヤ
備考
DSR(ダイレクトサー
バリターン)方式
◎
○
L4
最も多く使用され
る構成
(推奨)
NAT方式
○
×
L4
要NATオプション
Webサーバ
固定化方式
○
×
L7
httpのみ対応
パケット転送方式
クライアント
分散ノード
仮想IP :
10.1.1.100
実IP :
10.1.1.11
MAC:
0000AE812211
ループバックIP:
10.1.1.100
実IP:10.1.1.1
MAC:
0000AE812201
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
実IP:
192.168.1.50
MAC:
0000AE801150
L4負荷分散・MAT(MAC Address Translation) )
Source MAC=
0000AE801150
Source IP=
192.168.1.50
Destination MAC=
0000AE812201
Destination IP=
10.1.1.100
MLLB
一連の通信が全て同一のTCPコネクションとして行なわれる(LBはパケットを転送しているのみ)
*1:分散ノードへエージェントプログラムの導入又は、IPTABLES(Linux)やループバックアダプタ
(Windows)の設定が必要です。
MLLBと分散ノードが同一セグメントの必要有り
ネットワーク接続パターン①
オプション
不要
エージェント
必要*1
パケット転送方式1 MLLB標準のDSR(ダイレクトサーバリターン)方式
パケット転送方式2 MLLB NATオプションを使用(NAT)方式
クライアント
分散ノード
仮想IP :
10.1.1.100
Source IP=
192.168.1.50
Destination IP=
172.168.1.11
Source IP=
192.168.1.50
Destination IP=
10.1.1.100
MLLB
Source IP=
10.1.1.100
Destination IP=
192.168.1.50
Source IP=
172.168.1.11
Destination IP=
192.168.1.50
実IP :
172.168.1.11
実IP:10.1.1.1
実IP:
192.168.1.50
一連の通信が全て同一のTCPコネクションとして行なわれる(LBはパケットを転送しているのみ)
[SYN]
[SYN]
[SYN,ACK]
[SYN,ACK]
[ACK]
[ACK]
GET / HTTP/1.1 …
GET / HTTP/1.1 …
MLLBと分散ノードが別セグメントでも対応可能
ネットワーク接続パターン①または②
L4負荷分散・NAT(Network Address Translation)
NATオプション
必要
エージェント
不要
デフォルトゲート
ウェイ設定必要
*1 *2
*1:分散ノードのデフォルトゲートウェイとして仮想IPアドレスの設定が必要です。
*2:LB~分散ノード間の経路上のルータに経路情報の登録が必要な場合があります。
NATオプション注意事項
NATオプションを使用される場合は、分散ノード
(Webサーバ等)のデフォルトゲートウェイに
MLLBを設定されることを推奨します。
NATオプション使用時は分散ノードとクライアント
との間の通信がMLLBを経由するようルーティン
グを行うことが必須です。
MLLBのNATオプションはDNAT(送信先IPアド
レス変換)となっております。
SNAT(送信元IPアドレス変換)は対応しておりま
せん。
パケット転送方式3 MLLB L7分散グループ
(Webサーバ固定化)
を使用した場合
クライアント
分散ノード
仮想IP :
10.1.1.100
Source IP= 10.1.1.1
Destination IP=
10.1.1.11
Source IP=
192.168.1.50
Destination IP=
10.1.1.100
MLLB
Source IP=
10.1.1.100
Destination IP=
192.168.1.50
Source IP=
172.16.1.11
Destination IP=10.1.1.1
実IP :
10.1.1.11
実IP:10.1.1.1
実IP:
192.168.1.50
クライアント側とサーバ側とで、別々のTCPコネクションが張られる(プロキシ動作)
[SYN]
[SYN]
[SYN,ACK]
[SYN,ACK]
[ACK]
[ACK]
GET / HTTP/1.1 …
GET / HTTP/1.1 …
Proxy転送方式(
http専用
)
オプション不要
(cookie固定化では必要)
エージェント
不要
Webサーバ固定化方式には「URL」「クライアントタイプ」
「i-mode」「cookie(要オプション)」の4種類があります。
MLLBと分散ノードが別セグメントでも対応可能
ネットワーク接続パターン①または②
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
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.100
実IP :
10.1.1.11
MAC:
0000AE812211
ループバックIP:
10.1.1.100
実IP:10.1.1.1
MAC:
0000AE812201
実IP:
192.168.1.50
MAC:
0000AE801150
MLLB
L4負荷分散を使用したSSLの分散(パケット転送方式1)
ダイレクト転送方式( L4負荷分散・MAT(MAC Address Translation) )
MLLBと分散ノードが同一セグメントの必要有り
ローカルクライアント
分散ノード
仮想IP :
10.1.1.100
Source IP=
192.168.1.50
Destination IP=
172.168.1.11
Destination Port=443
Source IP=
192.168.1.50
Destination IP=
10.1.1.100
Destination Port=443
MLLB
Source IP=
10.1.1.100
SourcePort=
443
Destination IP=
192.168.1.50
Source IP=
172.168.1.11
SourcePort=
443
Destination IP=
192.168.1.50
実IP :
172.168.1.11
実IP:10.1.1.1
実IP:
192.168.1.50
一連の通信が全て同一のTCPコネクションとして行なわれる(LBはパケットを転送しているのみ)
[SYN]
[SYN]
[SYN,ACK]
[SYN,ACK]
[ACK]
[ACK]
GET / HTTP/1.1 …
GET / HTTP/1.1 …
MLLBと分散ノードが
別セグメントでも対応可能
NAT転送方式( L4負荷分散・NAT(Network Address Translation) )
NATオプション
必要
負荷分散方式
(初回振り分け先の決定方式)
既存コネク
ション考慮
CPU負
荷考慮
エー
ジェント
備考
ラウンドロビン
-
-
-
分散ノードは全て対等、クライアントか
らの要求を分散ノードに順番に割当
最小コネクション ○
-
-
接続されたTCPコネクション数の最も
少ない分散ノードにクライアントからの
要求を割当
静的重み付けラ
ウンドロビン
-
-
-
静的に割当比率を設定可能なラウンド
ロビン
静的重み付け最
小コネクション
○
-
-
静的に割当比率を設定可能な最小コ
ネクション
CPU負荷重み付
けラウンドロビン
-
○
必須
分散ノードのCPU負荷に応じてクライ
アントからの要求を順番に割当
CPU負荷重み付
け最小コネク
ション
○
○
必須
接続されたTCPコネクション数と、分散
ノードのCPU負荷に応じてクライアント
からの要求を割当
レイヤ
パフォー
マンス
静的コ
ンテンツ
PC向け動的
コンテンツ
i-mode向
け動的コ
ンテンツ
備考
クライアン
ト個別
L4
◎
◎
○
×
最も多く使用さ
れる構成
(推奨)
クライアン
トIP
L4
◎
◎
○
×
URL
L7
○
◎
○
△
i-mode
HTML
L7
○
◎
×
○:i-mode
クライアン
トタイプ
L7
○
◎
○
○:i-mode
Cookie
L7
○
◎
○
○
Cookie
オプション必須
セッション維持機能
(接続固定化方式)
要求元クライアント(IPアドレス)単位に、
分散ノード(サーバ)の固定化を行います。
分散ノードの決定は負荷分散方式に従います。
クライアントA
クライアントB
分散ノード固定化
(L4負荷分散)
①クライアントAから1回目のリクエスト
②1回目のリクエストで分散された
サーバに分散
①クライアントBから1回目のリクエスト
②1回目のリクエストで分散された
サーバに分散
固定化方式1 クライアント個別
各分散ノード(サーバ)で受け付けるクライアントのIPアドレスを指定
(個別と範囲指定)することにより、分散ノードの固定化を行います。
実IP:
192.168.1.50
実IP:
192.168.1.55
実IP:
10.1.0.168
クライアントIPが
192.168.1.0/24の場合
クライアントIPが
10.1.0.0/24の場合
分散ノード固定化
(L4負荷分散)
固定化方式2 クライアントIP
分散ノード(Webサーバ)において、
受け付けるURLのパターンを設定することにより
分散先を固定化することが可能
各URLに複数サーバの指定が可能
複数ノード内の固定はクライアントのIPアドレスによる固定
実IP:
192.168.1.50
リクエストURLが
www.miraclelinux.com/mllb
の場合
リクエストURLが
http://www.miraclelinux.com/mllb
http://www.miraclelinux.com/clp
Webサーバ固定化
(L7負荷分散)
URL指定パターン
URL
ディレクトリ
固定化方式3 URL
iモード端末からのリクエストを、
最初のリクエストで分散したノードに固定化する機能
Webサーバ固定化
(L7負荷分散)
i-modeA
i-modeB
①i-modeAから1回目のリクエスト
②1回目のリクエストで分散された
サーバに分散
①i-modeBから1回目のリクエスト
②1回目のリクエストで分散された
サーバに分散
固定化方式4 i-mode HTML
要求元のクライアントがiモード端末か
それ以外(一般のPCなど)かにより分散先を固定化する機能
それぞれ複数のノード(サーバ)を使用することが可能
複数ノード内の固定はクライアントのIPアドレスによる固定
クライアントがPC端末の場合
クライアントがimode端末の場合
Webサーバ固定化
(L7負荷分散)
i-mode
PC
PC
固定化方式5 クライアントタイプ
Cookieを使用して
最初のリクエストで分散したノードに固定化する機能
注意点
:Cookieによる固定化がされるのはWebサーバがCookie
を返す場合のみ、WebサーバがCookieを返さない|場合はクライ
アントのIPアドレスによる固定となる
Webサーバ固定化
(L7負荷分散)
PC A
i-modeA
①PC Aから1回目のリクエスト
②1回目のリクエストで分散された
サーバに分散
①i-modeAから1回目のリクエスト
②1回目のリクエストで分散された
サーバに分散
固定化方式6 Cookie
HTTP/1.1 200 OK
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
④LB→クライアント
CookieによるWebサーバ固定化の仕組み(詳細)
※WebサーバがレスポンスにCookieを含める場合※
①クライアントが リクエストを送信 ②LBは、負荷分散方式 に従って振分先の Webサーバを決定し、 リクエストを転送 ③WebサーバはCookie付きの レスポンスを返信 ④LBは固定化用Cookieを付けて レスポンスを返信クライアント
⑤クライアントはCookie付きの リクエストを送信 ⑥LBは固定化用Cookieから 接続先Webサーバを決定し、 リクエストを転送 「Cookie固定化時間」の間、 Cookieによる接続先を 記憶します①
④
⑤
②
③
⑥
LB
Webサーバ1
Webサーバ2
応答HTTPヘッダの例
Set-Cookie:・・・ Set-Cookie:・・・ Set-Cookie:・・・ Cookie:・・・ Cookie:・・・ Cookie:・・・ Cookie:・・・ HTTP/1.1 200 OKDate: 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