Core Tech Blog

株式会社Coreのエンジニアチームが日々習得した技術やTipsを公開するブログです

CloufdFrontからNLBに接続する

はじめまして、株式会社Core開発部の瀧です。

昨年、AWSが新しいロードバランサー、Network Load Balancer(NLB)を発表しました。 AWSの今までのロードバランサーでは対応していなかったいくつかの機能を搭載したことで話題になりました。今回、弊社が開発する新サービスにおいて、NLBを使用する機会がありましたので、NLBの作成とCloudFrontに接続するまでを簡単にご紹介いたします。

Network Load Balancer

Network Load Balancer(NLB) – TCPトラフィックの負荷分散に理想的で、NLBは超低遅延を維持しながら秒間数百万のリクエストを取り扱う能力があります。NLBはAvailability Zone毎に1つの固定IPを使いながら、突発的で変動しやすいトラフィックパターンを取り扱う事に最適化されています。 参考: 新しいNetwork Load Balancer – 秒間数百万リクエストに簡単にスケーリング

固定IP

今回実装されたNLBの特筆すべき点の一つです。 NLB作成時に自動割り当てされたIPアドレス、または所有しているElastic IPのいずれかと紐付けことが可能です。固定IPを使用することで、DNSはAレコードでも設定が可能なため、外部のCDNやFirewallとの併用が容易になります。

高スループット・低レイテンシ

突発的な数百万リクエスト/秒のトラフィックも捌くことができ、固定IPのまま、動的にスケールします。 またNLBは、TCP負荷分散を同一AZ内で行うことで、NLBは他のロードバランサーと比べて、レイテンシをより小さく抑えることが可能です。

NLBの作成

では、実際に作成していきましょう。 EC2コンソールの画面から、[ロードバランサー]を選択し[ロードバランサーの作成]をクリックします。

スクリーンショット_2018-04-06_17_17_51.png (400.9 kB)

Network Load Balancerを[作成]し、ロードバランサーの設定を入力します。

ステップ1: ルーティングの設定

スクリーンショット_2018-04-06_19_29_45.png (313.8 kB)

各アベイラビリティゾーン(サブネット)に固定IPを関連づけるには[Elastic IP]から選択します。

ステップ2: ルーティングの設定

[ターゲットの種類]でインスタンスIDかプライベートIPのどちらを使用してターゲットを登録するかを選択します。 [ヘルスチェックの詳細設定]では、NLBと紐付けるインスタンスが正常に動作しているかを確認するためのしきい値を設定します。ここでの設定により問題のあるインスタンスと判断された場合、NLBはそのインスタンスへのトラフィックを停止し、正常なインスタンスに振り分けます。切り離されたインスタンスは、定期的にヘルスチェックを実施され、パスした段階で再度NLBと紐付けられます。

スクリーンショット 2018-04-06 19.56.38.png (324.1 kB)

ステップ3: ターゲットの登録

先ほど作成したターゲットグループに登録するターゲットを選択します。

スクリーンショット 2018-04-06 20.24.01.png (390.4 kB)

ステップ4: 確認

問題がなければ、[作成]します。

EC2コンソールから[ターゲットグループ]を選択し、先ほど作成したターゲットグループを選択します。[ターゲット]タブを選択し、紐付けたインスタンスのステータスを確認します。 [healthy]と表示される場合、ヘルスチェックをパスしているため、NLBからリクエストがルーティングされます。

注意するべき点として、NLB(ネットワークロードバランスのみ)自体にはセキュリティグループを設定できないということです。 NLBは、インスタンス側に設定するセキュリティグループに影響します。

ELBをオリジンにCloudFrontから接続する

コンソールから[CloudFront]を選択し、[Create Distribution]します。

スクリーンショット_2018-04-09_17_41_57_1.png (101.8 kB)

2種類のディストリビューションから[Web]を選択し、[Get Started]をクリックします。

スクリーンショット 2018-04-09 17.43.33.png (112.0 kB)

[Origin Domain Name]に先ほど作成したNLBのエンドポイントを選択すると、[Origin ID]の項目が自動的に入力されます。

スクリーンショット_2018-04-09_18_13_09.png (72.5 kB)

[Create Distribution]をクリックして、ディストリビューションを作成します。世界中のエッジサーバーにコンテンツを配置しているのもあり、10~15分ほど時間がかかりますが、[status]が[in Progress]と表示されれば作成完了です。

スクリーンショット_2018-04-09_18_29_24.png (120.9 kB)

[Domain Name]にアクセスすると、CloudFrontのエッジサーバーがキャッシュの有無を確認し、キャッシュがない場合はオリジンサーバーからファイルを取得し、ユーザーに配信します。キャッシュがある場合は、オリジンサーバーへはアクセスせず、そのキャッシュをユーザーに配信します。

参考:AWS Black Belt ELB Update Network Load Balaner(NLB)