ロードバランサの仕組み – 「さくらのクラウド入門」(4)

こんにちは、さくらインターネット クラウドチームの大喜多です。

「さくらのクラウドでどういうことが出来るのかを知りたい」というご要望にお応えし、「さくらのクラウド入門」と題しまして
さくらのクラウドの基本的な使い方をご説明していきたいと思います。第4回の今回は「ロードバランサの仕組み」についてご説明します。

ロードバランサの役割

ロードバランサは、システムに対するリクエストを複数のサーバに分散させ、処理のバランスを調整するための仕組みです。ロードバランサを導入するすることにより、以下の要件を実現することができるようになります。

スケーラビリティ(拡張性)

ロードバランス対象のサーバ台数を増やすことによって、システムのの能力が不足してきたときに容易に拡張できるようになります。

アベイラビリティ(可用性)

ロードバランサはロードバランス対象のサーバに対してヘルスチェック(死活監視)を行っており、サービスが正常稼働していないサーバにはリクエストを転送しません。このことにより、サーバ障害が発生してもサービス全体の停止を防ぐことができます。また、複数台のサーバにロードバランスしているため、1台づつメンテナンスを行うことで、サービス全体の停止を伴わずに保守作業が行えるようになります。

ロードバランサの仕組み(1)パケット転送

さくらのクラウドでアプライアンスとして提供されているロードバランサはDSR(Direct Server Return)という方式を使用しています。パケットの流れは以下のようになります。

1.ロードバランサの仮想IPアドレスに到着したパケットは、宛先MACアドレスを実サーバのものに書き換えたうえで転送される
2.実サーバは、到着したパケットに対するレスポンスを、直接クライアントへ送信する

ロードバランサがIPパケットを実サーバに転送する際にL3レベルの処理を行わず、且つクライアントへのレスポンスはロードバランサを経由しないため、転送にかかる負荷を低くできることがメリットです。

しかし、実サーバに対してDSR(Direct Server Return)に対応するための追加設定が必要になります。また、ロードバランサと実サーバは同一のネットワークセグメントに配置する必要があります。

※実サーバに対して行う追加設定については、さくらのクラウドニュース - ロードバランサの「3.導入設定」をご参照ください。

ロードバランサの仕組み(2)ロードバランシングの種類

ロードバランサに着信したパケットをサーバへ振り分けるロードバランシングにはいくつかの種類があります。その中でも使用実績が多いものがラウンドロビン(均等負荷分散)とリーストコネクション(最小接続)です。

ラウンドロビン(均等負荷分散)

クライアントからのリクエストをサーバに均等に転送する方式です。以下の図では実サーバが2台のため、実サーバ1→実サーバ2→実サーバ1→実サーバ2…のように交互にリクエストが転送されます。

リーストコネクション(最小接続)

クライアントからのリクエストを現在のコネクション数が最も小さいサーバに転送する方式です。以下の図では実サーバ1のコネクション数が6、実サーバ2のコネクション数が10のため、コネクション数が少ない実サーバ1に転送されます。

さくらのクラウドでアプライアンスとして提供されているロードバランサでは後者のリーストコネクションを採用しています。

ロードバランサの仕組み(3)パーシステンス

パーシステンスとは、同一のクライアントからのリクエストを常に同じサーバへ転送するセッション維持機能のことです。ECサイトのオンラインショッピングなど、クライアントからの連続して発生するリクエストを同一のサーバに転送する必要のあるシステムにおいて求められる機能になります。

よく使用されているパーシステンスはクライアントの送信元IPアドレスによりロードバランサが割り振るサーバを固定する方式と、Cookie情報により割り振るサーバを固定する方式です。

さくらのクラウドでアプライアンスとして提供されているロードバランサはパーシステンスの機能を提供していません。IPパーシステンスが比較的容易に実現可能なロードバランサーとしてZenLoadBalancerをご紹介しておきます。

ZenLoadBalancerはGUI機能を備えたロードバランサーです。Community EditionとEnterprise Editionの2種類があり、Community Editionは無償で利用できます。Debianベースの仮想アプライアンスとして提供されており、ISOイメージをさくらのクラウドにアップロードし、サーバにインストールすることで利用可能になります。詳しい利用方法については公式のKnowledge Baseをご参照ください。