Cloudflare のLoad Balancer をやってみる 基本編
前日Cloudflareが提供するHealth Check機能についてまとめました。
今日はこれと連携するクラウド型リージョンレスのロードバランサーをやっていきます。Cloudflare のロードバランサーの特徴
Cloudflareはリージョン地球を標榜しており特定地域のネットワークに依存しないサービス構築が可能なプラットフォームを目指しています。このためロードバランサーの地域や国をまたいだルーティングを得意としております。AWSのサービスと比較する場合、ALBよりはGlobal Load Balancer に近いと言えます。(ちなみにGlobal Load Balancer も IP Anycastで動作しています。)
### さっそくやってみる
ではいつも通り以下の記事を参考にAWS 東京リージョンに2つのウェブをnginx/EC2で構築します。
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 Pools
のEdit
から先ほど作成した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