2011年2月1日火曜日

ロードバランサーを構築するまで~基本編~


ある程度の規模になると複数台サーバを準備し負荷を分散させる必要があります。


負荷を分散させると一概に言っても様々な方法があるので紹介したいと思います。




ロードバランサー(LB)


負荷分散を行うための製品がLBです。


LBには負荷分散以外に次のような機能を持っていることが多いです。



  • SSLアクセレーション

  • データ圧縮

  • キャッシュ

  • フィルタリング



LBは多機能かつ高性能ではありますが、非常に高価な製品です。(400万~)


通常であれば冗長化なども必要なので数千万という単位の費用がかかります。



DNSラウンドロビン


1つのドメインに対して複数のIPを割り当てる事で負荷を分散します。


メリット


  • 負荷分散する上でもっとも簡単かつ安価にできる

  • ネットワーク的に離れたサーバにも分散できる

  • DNSサーバのみで動作する


デメリット


  • グローバルIPをサーバの数だけ準備する必要がある

  • 複数のサーバに対して均等に分散しにくい

  • サーバが停止していても振り分けられる


ゾーンファイル


test IN A 127.0.1.1


test IN A 127.0.1.2




上記の場合でも問題無く動作するのですがDNSのキャッシュ機能により一方のサーバに負荷が偏る場合があるのでTTLを明示的に短めにする事が推奨されています。



test 20m IN A 127.0.1.1


test 20m IN A 127.0.1.2




Linux Virtual Server(LVS)


LVSはLinuxを高パフォーマンス、高可用性(HA)を持つサーバを作るプロジェクトや機能です。


その成果としてできたのがロードバランシングです。


今回はLVSを中心に解説していきたいと思います。




LVSのメリット

現在LVSは=ロードバランサーとして表現されることが殆どです。


LBではなくLVSを利用するメリットをいくつかあげます。



  • LBを購入するより1/4程度のコストで運用できる

  • LB自身の冗長化も可能

  • LVSに対応したLinuxさえあればすぐに構築可能

  • ネットワーク的に離れたマシンにも分散可能


このようにローコストかつ、高いパフォーマンスを持ったLBを利用できるのは大きなメリットです。




LBを導入する際に考慮すべき点


LBには大きく分けてL4LB(レイヤー4LB)とL7LB(レイヤー7LB)があります。



L4やL7に関してはOSI参照モデルなどを参考にしてください。



L4LBの特徴

L4LBはクライアントからSYNパケットが到達した段階で振り分けるサーバを選定します。



そのためLBへの負荷は非常に低く、L7LBよりも高速に処理できると言われています。



この点に関しては近年CPUパワーが大きくなってきており殆ど差はないとされていますがスペックの低いLBの場合はL4LBの導入がよいでしょう。


DBやメールサーバなどに向いています。



L7LBの特徴

L7はL4と違い、TCPのトランザクションを全てLBで受け取りパケットの内容を見て振り分けることが可能です。


パケットの内容とは、cookieやHTTPヘッダなどを見て判断するので複数のサービスを1つのLBで受け持つ場合重要な機能になります。



Webサーバなどに向いています。



次は、実際にLVSを構築する前段階まで解説したいと思います。



0 件のコメント:

コメントを投稿