« コネクションプールが可能な開発言語を使うべし | Main | HTTP圧縮を実現するアプライアンスサーバ »

November 10, 2004

L4スイッチはDSR構成にすべし

ネットワーク今昔物語

大規模サイトではL4スイッチをDSR(Direct Server Return)構成で組むことはもはや常識です。しかし国内には大規模サイトが少ないためかDSR構成についての情報が不足しているのが現状です。L4スイッチを扱っているベンダーさんもDSR構成でネットワークを構築したという例をほとんど聞かないとのことです。そこで今回はDSR構成の紹介とメリット&デメリットをご紹介します。

【一般的な構成とDSR構成の違い】
一般的な構成ではスイッチとサーバの間にL4スイッチを挟み込む構成を取ります。それに対してDSR構成ではスイッチに直接L4スイッチを接続します。
DSR1.gif

これを踏まえてパケットの流れを見てみましょう。一般的な構成では行きのパケットがL4スイッチを流れサーバに到達し、帰りのパケットもL4スイッチを流れていきます。それに対してDSR構成では行きのパケットはL4スイッチを通りますが、帰りのパケットはサーバから直接スイッチを通っていきます。
DSR2.gif

DSRの詳しい設定方法はL4スイッチのベンダーさんに譲るとして、1つ注意としてはサーバのNICにVIPをIPアドレスとしたloopbackを必ず設定してください。以下設定例です。(netmask、network、broadcastの設定値も注意です)


DEVICE=lo:0
IPADDR=172.16.0.120
NETMASK=255.255.255.255
NETWORK=172.16.0.120
BROADCAST=172.16.0.120
ONBOOT=yes
NAME=loopback:0

【DSR構成のメリット】
DSR構成のメリットは3点あります。

①L4スイッチがネットワークトポロジーから独立することによりネットワーク構成が比較的自由になる
一般的な構成ではスイッチとサーバの間にL4スイッチを挟まなければならないという制約がありました。これはサーバ構成を変更するときやL4スイッチが故障した時にいちいちネットワーク構成まで変更しなければなりませんでした。その制約がDSR構成ではなくなります。図のように基本的にどのスイッチにL4スイッチを接続してもロードバランシングが可能です。
DSR3.gif


②リクエスト量に対するL4スイッチのキャパシティが増える
通常WEBサーバではin-boundとout-boundのトラフィックに圧倒的な差があります。通常WEBサーバは数バイトのリクエストに対して数10~数100kバイトのレスポンスを返すからです。一般的な構成の場合L4スイッチが上りも下りもトラフィックを処理します。例えばin-boundが20Mbpsでout-boundが120Mbpsだとしましょう。L4スイッチが100MのFastEtherポートを持っていた場合、in-bound側はまだ80Mbpsも余裕があるのに、out-bound側の20Mbpsの不足のためポートをギガビット化しなければなりません。図を見てください。上図は一般的構成の場合、下図はDSR構成の場合です。DSR構成ではin-bound量とout-bound量がほぼイコールになります。out-bound量が大幅に節約できたことによりリクエスト量に対するL4スイッチのキャパシティが大幅に増えることになります。
DSR4.gif

DSR5.gif


③ポート数が1ポートで良い
一般的な構成ではL4スイッチにたくさんのスイッチかもしくはたくさんのサーバを接続するためポート数がたくさん必要になります。しかしポート数が多いL4スイッチは非常に高価なので通常はL4スイッチの下にL2スイッチをぶらさげそこにサーバを取り付ける構成を取ります。それに対してDSR構成では上位スイッチに1ポートだけ取り付ければよいので非常に経済的です。(無論ニ重化やトランキングをする場合はもっと必要ですけど)


【DSR構成のデメリット】
一件良いことずくめのDSR構成ですがこれまで様々な実験や実稼動を経験してきてDSR構成にはいろいろなクセがあることがわかっています。そのクセを自分のものにしない限りは安心して本番系に投入できないかもしれないですね。デメリットは3つあります。

①DSR構成時の内部の動きが理解しにくい
サーバのloopback設定が鍵になるのはなんとなく理解していただいたと思いますが、L4スイッチ内でどのように動いているのか等100%完全に理解できないところが気持ち悪いところです。

②上位L3スイッチにサーバのMACアドレスが残ってしまうことがある
DSR構成にしてしばらくはきちんとロードバランスされていても時間が経つと特定サーバにロードが偏ってきてしまう場合はおそらくこれです。我々の調査ではどうやらLinux Kernel2.4の場合この現象が起こるようです。Linux Kernel2.6にすれば大丈夫っぽいですが、応急処置として上位L3スイッチのMACテーブルをstaticに書くという方法もあります。

③全WEBサーバにloopback設定をする必要がある
サーバ台数が少ないサイトはよいですが、うちのように600台以上サーバがあるだけでなく、OSだけでも5~6種類、バージョンも千差万別なサイトではかなり大変です。テストしながら少しずつ適用していったのでたぶん1年近くかかったのではないかな・・・。

■他の関連記事
Windows serverでDSRを行う方法

■参考文献
http://www.cisco.com/japanese/warp/public/3/jp/solution/slbguide/slb_03.shtml


PS: CISCOのアイコンライブラリーをクリップ素材として使わせてもらいました。

|

« コネクションプールが可能な開発言語を使うべし | Main | HTTP圧縮を実現するアプライアンスサーバ »

ネットワーク 【人気】」カテゴリの記事

Comments

そもそも、L4スイッチ何使ってます?
言えないかもしれませんが...

Posted by: next | November 15, 2004 at 11:21 AM

会社として何を使っているかは言えませんが、
Foundry ServerIronシリーズとNortel ALTEON AD3では
検証で(条件さえ満たせば)DSRができることを実験で確認しています。
(こんな回答でよかったでしょうか?>nextさん)

Posted by: sanonosa | November 15, 2004 at 04:30 PM

ま、そうですよねー。

ServerIron、便利なんだけど謎が多い...

トラヒックがすげえ多いとかいうわけではないのでDSRなどは使っておりませんが、一応マニュアル見て構成考えていたときに実験して悩んだなあ。

Posted by: next | November 17, 2004 at 02:36 PM

というか研究室でL4スイッチ持っているのもすごいですね。
何に使うんですか? とか聞いてみたりして。

Posted by: sanonosa | November 17, 2004 at 04:06 PM

いや、研究室では持ってないです。もちろん。いや村井研は持ってるかもしれませんが...

Posted by: とおやま | November 20, 2004 at 05:38 PM

はじめまして。ぶしつけで申し訳ないのですが質問してもよろしいでしょうか。

>②上位スイッチにサーバのMACアドレスが残ってしまうことがある
>応急処置として上位スイッチのMACテーブルをstaticに書くという方法もあります。

と書かれてますが、上位スイッチのMACテーブルに書くのはLBのMACアドレスでしょうか。とあるシステム屋さんにDSRでとお願いしたら断られてしまって私が設定しているのですがトラフィックが偏ってしまって・・・。ちなみにLBはAD3です。

Posted by: とろん | March 26, 2005 at 02:28 AM

とろんさん、コメントありがとうございます。

> 上位スイッチのMACテーブルに書くのはLBのMACアドレスでしょうか。

はい。VIPに対するMACアドレスなのでLB、だった気がします。(最近触ってないので忘れましたが、理屈を考えるとそう考えるのが自然そうです)

ちなみにここでいう上位スイッチというのは言うまでもなくL3スイッチのことです。一応補足まで。

Posted by: sanonosa | March 26, 2005 at 09:12 AM

>②上位スイッチにサーバのMACアドレスが残ってしまうことがある
>はい。VIPに対するMACアドレスなのでLB、だった気がします。
通常はVIPに対するMAC(ロードバランサのMAC)が上位スイッチに
登録されるますが、
「サーバのMACアドレスが残ってしまう」というのは
通常はVIPに対するMACがのるところを、実サーバのMACを
のせてしまうことがあるという意味でしょうか?

「特定サーバにロードが偏ってきてしまう」という記述から推測しました。

「応急処置として上位L3スイッチのMACテーブルをstaticに書くという方法」
というのは、上位スイッチのMACテーブルにstaticで
「VIP=ロードバランサのMAC」というふうに縛り、
実サーバのMACは上位スイッチに登録されないようにするという意味ですか?

あともう一点、もし上記が正しいとすると
ロードバランサが原因というより、DSRをするときは
上位スイッチ上でVIPに対するMACはロードバランサだと縛るのが
必須条件になる気がしますが、いかがでしょうか?

Posted by: | August 27, 2010 at 12:04 AM

コメントありがとうございます。

> 「サーバのMACアドレスが残ってしまう」というのは
> 通常はVIPに対するMACがのるところを、実サーバのMACを
> のせてしまうことがあるという意味でしょうか?

昔のことなのであまり詳しく覚えてないのですが、
たしかL3スイッチ的にはLBのMACとサーバのMACが交互に切り替わる症状を見せていた気がします。ただそれはLinux Kernel2.4までで2.6になってからは何故かその症状が起きなくなったので最近は大丈夫なようです。

Posted by: sanonosa | August 27, 2010 at 10:16 AM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/32004/1923090

Listed below are links to weblogs that reference L4スイッチはDSR構成にすべし:

» LVSでロードバランサを作る [技術ネタ]
LinuxでLVSを使ってロードバランサを作ってみる。 使用するディストリビューションはCentOS4.0。 カーネルの古いディストリビューションではLVSを使うのにパッチが必要だったりする。 *INDEX - LVSの概... [Read More]

Tracked on June 15, 2005 at 02:46 PM

« コネクションプールが可能な開発言語を使うべし | Main | HTTP圧縮を実現するアプライアンスサーバ »