😽

Cloudflare のLoad Balancer をやってみる 基本編

2024/09/11に公開

前日Cloudflareが提供するHealth Check機能についてまとめました。
https://zenn.dev/kameoncloud/articles/0557c808f42a4f
今日はこれと連携するクラウド型リージョンレスのロードバランサーをやっていきます。

Cloudflare のロードバランサーの特徴

Cloudflareはリージョン地球を標榜しており特定地域のネットワークに依存しないサービス構築が可能なプラットフォームを目指しています。このためロードバランサーの地域や国をまたいだルーティングを得意としております。AWSのサービスと比較する場合、ALBよりはGlobal Load Balancer に近いと言えます。(ちなみにGlobal Load Balancer も IP Anycastで動作しています。)

### さっそくやってみる
ではいつも通り以下の記事を参考にAWS 東京リージョンに2つのウェブをnginx/EC2で構築します。
https://zenn.dev/kameoncloud/articles/6d2dec59232917

57.180.30.41 : Web A
43.207.142.106 : Web B
(同じVPC/同じAZ)
トップページにはAかBかわかるようindex.htmlを少し書き換えておきます。

Poolの作成

LoadBalancerを作成していきます。

まずManage Poolsをクリックします。

EndPointsのCreateをクリックします。

適当な名前を付けた後ルーティングアルゴリズムにRandomを設定します。以下の通りロードバランサの下にぶら下げるEC2インスタンスのIPアドレスを設定します。今回の設定ではIPアドレスを直接指定していますが、勿論商用環境では例えばDNS名を指定することでそのDNS名に対してさらに複数のIPアドレスをぶら下げる、もしくはALBのDNSをセットする、など多段の冗長化が可能です。

以下のWeightの数字を変更することで重みづけルーティングの設定が可能となります。

以下の通りPoolが設定されましたがまだステータスはNot monitoredのままです。

Manage Monitor の設定

先ほど作成したリソースプールに対してManager Monitorを設定していきます。

Createをクリックします。

以下の内容に従い監視パラメータを設定していきます。


まずはほぼデフォルトのままSaveをクリックします。

Manage PoolsEditから先ほど作成したPoolの編集画面に移動すると以下の通りMonitorが設定可能となっていますので、選択してSaveをクリックします。

ステータスがunknownになっています。

暫く待つとhealthyに代わります。

Load Balancer の作成

ではいよいよLoad Balncerの作成です。Create Load Balancerをクリックします。

ホスト名はドメインエンドポイントを入力します。

画面右側のオレンジのトグルは、CloudflareのCDNを使うのであればオン、使わないのであればオフを設定します。デフォルトのままNextをクリックします。
次の画面で先ほど設定したリソースプールを選択しNextを2回クリックします。


トラフィックの分散方式を設定します。

先ほどPoolの設定の際にもトラフィックの分散方式を設定しました。この2つの違いですがPoolで設定する物は複数のEndpointがPoolに含まれる場合有効です。Load Balancerでのトラフィック分散の設定は複数のPoolがLoad Balancerに含まれる際に有効です。今回はRandomを選んでNextを2回クリックし、最後にSave and Deployをクリックします。

今回の手順ではPoolを1個して設定していないためFall backloopにも同じものが自動でセットされていますが、ここは本来オリジンが全ダウンした場合に使用されるリソースを使用します。例えばS3上にあるSorryページをPoolとしてセットしここに組み込むなどの用途が本来の使い方です。
作成できればLoadBalancerのエンドポイントにアクセスを複数環境やブラウザで行うとAとBが交互に現れます。

この状態で1台だけインスタンスを停止すると以下となりルーティング対象から切り離されます。

Discussion