Closed7

Cloudflare Load Balancing メモ (利用を廃止しました)

ピン留めされたアイテム
voluntasvoluntas

Cloudflare LB で WebSocket が突然切断される問題

現時点で Cloudflare LB で WebSocket を利用する場合は問題が起きる場合がある。充分検証為てから採用する事をオススメします。


Cloudflare Status - Billing issues relating to subscription adjustments

サブスクリプションのアップグレードおよびダウングレード時に機能が失われる問題が発生しております

このサブスクリプションのダウングレードをすると機能が停止し、復旧できなくなる問題の影響を受けて、商用環境で Cloudflare LB が完全に復旧できなくなる状況が発生しました。

ビジネスプラン (年 2400 ドル) 程度のサポート契約では、残念ながらビジネスで利用できるレベルではなかったです。もしビジネスで利用される場合は、必ずエンタープライズプランのサポート契約を検討する事をオススメします。

障害発生後は Cloudflare LB の利用を廃止しています。

Hidden comment
voluntasvoluntas

なぜ採用したのか

マルチクラウドを採用したいが、自前で LB を立てるのはめんどくさい、そこで最初は Cloduflare Workers を使おうと考えていたが、 Cloudflare Load Balancing の存在をしり試してみたところ文句ない機能と性能だったので採用した。

費用はどうなのか

転送量での課金は一切ない。2 オリジンまでは $5/月 という安さも魅力だった。1 オリジン追加する毎に $5/月 かかる。

1か月間のDNSリクエスト(「クエリ」)の数をカウントします。 アカウント内のすべてのロードバランサーで共有される最初の500,000件のクエリは無料です:それを超える使用は、500,000クエリあたり50セントで課金され、次の500,000件のクエリに切り上げられます。

https://support.cloudflare.com/hc/ja/articles/115005254367-Cloudflare-Load-Balancingの請求

実際にどのように利用しているのか

前段に Cloudflare Load Balancing (以下 Cloudflare LB) を置いて、後ろにマルチクラウドのサーバを立てている。 Vultr と Linode で 1 台ずつ立てている。

Cloudflare LB は Edge にいる。Edge 証明書 (自動更新) インストールしておけば後ろに置くサーバは Cloudflare Origin 証明書(15 年)をインストールしておけば良い。

Image from Gyazo

Image from Gyazo

Image from Gyazo

ブラウザ -> Cloudflare DNS -> Cloudflare WAF -> Cloudflare Workers -> Cloudflare LB -> Vultr | Linode

という構成になっている。

Linode と Vultr は Go の Echo フレームワークを利用したサーバで、HTTPS で Listen している。FW を利用し 443 は Cloudflare IP 以外からのアクセスは受け付けないようにしている。

IP Ranges | Cloudflare

ロードバランサーの設定画面

Image from Gyazo

DNS の画面

Image from Gyazo

採用してみてどうか

不満は特になくむしろ、快適でしかない。WAF と Zero Trust と DNS と Workers と LB を Cloudflare で統一できているのは楽でしかない。ベンダーロック様々。Cloudflare が落ちたらどうしようもないと思うがそれは諦めている。

バックエンドが Go ということもあり LB からの HTTPS の処理で遅くなることもない。性能面での懸念も特にない。

何も考えずに HTTP/2 や HTTP/3 や TLS 1.3 になる。

Image from Gyazo

voluntasvoluntas

プール

複数のオリジンを 1 プールとして登録しておき、そのプールすべてがだめになったらフォールバックするプールも用意できる。

https://developers.cloudflare.com/load-balancing/understand-basics/pools/

モニター

LB によくある機能としてオリジンに対してヘルスチェックを行い、応答がなかったらそのサーバは利用しないという標準的な機能はもちろん入っている。

https://developers.cloudflare.com/load-balancing/understand-basics/monitors/

voluntasvoluntas

​​Zero Downtime Failover

https://developers.cloudflare.com/fundamentals/get-started/task-guides/origin-health/pro/#zero-downtime-failover

If you have another A or AAAA record in your Cloudflare DNS or your Cloudflare Load Balancer provides another origin in the same pool, Zero-Downtime Failover automatically retries requests to your origin even before a Load Balancing decision is made.
Cloudflare currently retries only once for HTTP 521, 522, and 523 response codes.

Cloudflare DNSに別のAレコードまたはAAAAレコードがある場合、またはCloudflareロードバランサーが同じプールで別のオリジンを提供している場合、Zero-Downtime Failoverはロードバランスの決定がなされる前でも自動的にリクエストをオリジンに再送信します。
Cloudflareは現在、HTTP 521、522、523レスポンスコードに対して1回のみ再試行を行います。

Cloudflare 5XX エラーのトラブルシューティング – Cloudflareヘルプセンター

エラー521: web server is down (Webサーバーがダウンしています)
エラー522: connection timed out (接続のタイムアウト)
エラー523: origin is unreacheable (オリジンに到達できません)

このスクラップは5ヶ月前にクローズされました