今回はロードバランサー機能について解説致します。
ロードバランサーを訳すと負荷分散ということになりますが、負荷を分散することのメリット(=ロードバランサーの導入目的)は、パフォーマンスの向上と可用性の確保です。
ロードバランサー機能を導入することで、同一のコンテンツや機能を持った複数のオリジンサーバを用いて1つのサイトを構成することが可能になります。
ロードバランサーは、サイトのアクセスを受け付ける地点となり、受信したトラフィックを複数のオリジンサーバへ振り分けます。
そのため、単一のオリジンサーバではさばき切れない量のトラフィック量をさばけるようになったり、レスポンスタイムが向上するなどの効果が得られます。
2つ目のメリットはサイトの可用性向上です。
ロードバランサーでは、オリジンサーバへの死活監視を常時行っています。Cloudflareではこの死活監視機能のことをMonitorと呼んでいます。
モニターにより、あるオリジンサーバが機能停止したことを検知した場合に、そのオリジンサーバへはトラフィックを振り分けなくなります。
こうすることで、1台のオリジンサーバが機能停止しても他のオリジンサーバが稼働していれば、サイト自体は停止することなくサービスを継続し続けることが出来ます。
以上がロードバランサーの導入メリットです。
ここからはロードバランサーについてもう少し詳細な説明をしたいと思います。
同一の目的をもった1つのサーバ群をPoolという単位でまとめます。Poolの設定では、各オリジンサーバへの振り分け比率を指定します。
Poolは複数のオリジンサーバをまとめ、Pool内のオリジンサーバへトラフィックを振り分けるものですが、複数Poolを振り分ける機能もあります。 複数のPoolがある場合は、Traffic Steering(Poolをどう振り分けるのか)を設定します。
Traffic Steeringの選択肢には、以下のようなものがあります。
名称 | 意味 |
---|---|
Off | Poolへ設定したOrder値に基づいて優先するPoolが利用不可能になったら次候補のPoolへ切り替える |
Dynamic Steering | 死活監視の通信で観測された各オリジンサーバのレイテンシーに基づいて最も高速なPoolを選択する |
Dynamic Steering | 各Poolにリージョンを設定しておき、クライアントの位置に基づいてPoolを選択する |
Dynamic Steering | 生存しているPoolの中からランダムに選択する |
設定例を2つ挙げたいと思います。 1つ目はシンプルな例です。単一のPoolがあり、Pool内にサーバが2つあり、トラフィックを平等に振り分ける例です。
2つ目は少し複雑な例です。Geo Steeringによって北東アジア用Poolと東ヨーロッパPoolのうち、地理的に近いPoolが選択され、選択されたPool内で指定された比率に従ってトラフィックが振り分けられます。
Monitorでは、TCPの3ウェイハンドシェイクのみ行うことや、HTTPやHTTPSを使ってアプリケーションレイヤーで実施することなどが可能です。 HTTPやHTTPSを用いたモニターでは、単純にオリジンサーバが何らかの応答を返すことが出来るかではなく、どのようなコンテンツが応答内に含まれていれば正常と見なすのか、といったことが設定できます。 そのため、静的なコンテンツでなく、アプリケーションサーバやDBサーバも関与して生成する動的ページをモニターへ指定することで、複数のミドルウェアやネットワークの正常性を含めて確認することが出来ます。
以下の例では、全てのサーバが稼働していますが、アプリケーションサーバへ通じることが出来ないサーバをMonitorにて利用不可の判断をしています。
CDNやWAFを使って高速化やセキュリティ向上を図っても単一の障害でサイトが利用不可になっては元も子もありません。 また、Cloudflareのロードバランサーなら各オリジンサーバが地理的に離れていても同一Poolのメンバーにすることが可能で、単一の拠点内で稼働する物理や仮想のロードバランサーで出来ない構成を取ることが可能です。 WAFやCDNの導入やリプレース時に合わせてご検討頂ければと思います。
本記事ではCloudflareのロードバランサー機能についてご紹介させていただきましたが、いかがでしたでしょうか。 当社ではCloudflareのPoCご相談も承っておりますので、「PoCのご相談」からお気軽にご連絡ください!(※PoCは法人のお客様に限ります。あらかじめご了承ください)
執筆者:角田 貴寛
三井情報株式会社
ソリューション技術本部 次世代基盤第二技術部 第一技術室
CISSP、CEH
現在、セキュリティ関連調査研究・教育業務に従事