現在のロードバランシングソリューションをCloudflareと統合する方法を説明します。
概要
Cloudflareと統合する際は、Webサイトのホスト環境でロードバランサーを利用するときのベストプラクティスとして、以下の点を考慮してください:
- CloudflareのDNSロードバランシング
- HTTPキープアライブ
- セッションCookie
- Railgun
DNSロードバランシング
Cloudflareのロードバランシング機能は、オリジンサーバーに対するアクティブなヘルスチェックを使用したDNSベースのロードバランシングをサポートします。 Cloudflareの既存のエニーキャストDNSネットワークを拡張し、DDoSへの耐性があるフェイルオーバー(不健全なオリジンを回避する)とジオステアリング(ユーザーを特定のオリジンのプールに誘導する)を提供します。
HTTPキープアライブ(HTTP持続的接続)
Cloudflareは、エッジネットワークからサイトのオリジンへのお客様のトラフィックをプロキシする際の、リクエストトランザクションでの定期的なTCP接続のパフォーマンスを高めてコストを下げるためにキープアライブ接続を維持します。
オリジンでHTTPキープアライブ接続が有効になっていることを確認します。 Cloudflareは、最後のHTTPリクエストから最大15分間(900秒)オープンTCP接続を再利用します。 開いている接続が多すぎる場合、オリジンはTCP接続を閉じます。 HTTPキープアライブは、Cloudflareによってプロキシされたリクエストの接続の時期尚早のリセットを回避するのに役立ちます。
セッションCookie
ロードバランサ―の特定のアプリケーションサーバーに対するユーザーセッションのトラッキングとバインディングのためにHTTP Cookieを使用している場合、 CookieヘッダーによるHTTPリクエストの解析を行うようロードバランサーを設定し、キープアライブのためにHTTPリクエストが同じTCP接続を共有する場合でも各リクエストを正しいアプリケーションサーバーに送信するよう指示します。
例:F5 BIG-IPロードバランサーは、TCP接続の開始時にセッションCookieを設定し(存在しない場合)、同じTCPソケット上で行われた後続のHTTPリクエストで引き渡されるすべてのCookieを無視します。 Cloudflareは同じTCP接続で複数の異なるHTTPセッションを送信するため、セッションアフィニティが壊れやすくなります。 (HTTP Cookieベースのセッションアフィニティ)。
Railgun(WAN最適化)
Railgunとロードバランサーを使用する場合の理想的な設定は、Railgun受信者をロードバランサーの前に配置することです。 受信者を前に配置することが理想的な設定であるのは、そうすることでロードバランサーがHTTP/S 接続を通常どおりに処理できるからです。送信者/受信者間の長命な(long-lived)TLS接続の負荷分散を行うのは難しいです。

RailgunはHTTPリバースプロキシとして機能しているため、Railgunが有効になっていない場合は、ロードバランサーの設定が有効になっている設定と一致する必要があります(つまり、 HTTPキープアライブ接続を有効にして、90秒のタイムアウトに設定する必要があります)。
Railgunをロードバランサーの後に配置した場合でも、この設定は機能しますが、サイトトラフィックの中断を回避するために次のような追加の手順が必要になります:
- Railgunが最適化するホストの内部アドレスを設定するようにrailgun-nat.confファイルを設定します(リクエストがインターネットに向けて送信されてオリジンに転送するためにロードバランサーに戻される反復処理を回避するため)。
- 受信者とオリジンサーバー間のトラフィックを妨げたり、レート制限したりするファイアウォールルールが設定されていないことを確認します。
- ポート2408が開いていて、受信者と送信者間のTLS接続への支障なしにロードバランサーを通過することを確認します。