AWS Builder Labs (セルフペースラボ) の Introduction to Elastic Load Balancing をやってみた

AWS Builder Labs (セルフペースラボ) で提供されている Introduction to Elastic Load Balancing を実際にやってみました。
2023.04.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS Builder Labs (セルフペースラボ) とは

AWS Builder Labs (セルフペースラボ) とは、AWS Skill Builder 内で提供されている AWS の学習コンテンツであり、以下の特徴があります。

  • ハンズオン形式で実践的な学習ができる
  • AWS のラボ環境が提供されるため、コストを気にせずに学習できる
  • オンデマンドで利用可能なため、時間や場所を問わずに学習できる

AWS Builder Labs の利用には、個人またはチームのサブスクリプション契約が必要となります。
私は個人サブスクリプション (29 USD/月) を契約して AWS Builder Labs を使用しています。

詳細は公式サイトをご参照ください。

Introduction to Elastic Load Balancing とは

Introduction to Elastic Load Balancing とは、AWS Builder Labs (セルフペースラボ) で提供されているコースの1つです。

コースの概要は公式サイトより引用いたします。

このラボでは、Elastic Load Balancer について紹介し、Network Elastic Load Balancer の作成とテストについて説明します。このラボを開始すると、2 つの別個のアベイラビリティーゾーンにウェブサーバーが 1 つずつ (合計 2 つ) 作成されます。このラボでは、Network Elastic Load Balancer を作成して、その 2 つのウェブサーバーをターゲットとして使用します。その後、さまざまなシナリオでロードバランサーの機能をテストします。

所要時間は約1時間であり、日本語版のコースも提供されています。
今回は上記の日本語版コースをやってみました。

コースの流れは以下です。

  1. ウェブサーバーへのアクセスをテストする
  2. Elastic Load Balancer を作成する
  3. ロードバランサーをテストする
  4. 障害発生時のロードバランサーをテストする

1. ウェブサーバーへのアクセスをテストする

ラボ側ですでにウェブサーバーとして EC2 インスタンスを2台用意してくれています。
EC2 インスタンスはそれぞれ別 AZ に存在しています。

ブラウザからそれぞれの EC2 インスタンスのパブリック IP アドレスへアクセスして、ウェブサーバーとしてアクセス可能であることを確認します。

EC2 Instance 1

EC2 Instance 2

2. Elastic Load Balancer を作成する

ここでは NLB (Network Load Balancer) を作成していきます。

詳細は割愛しますが、ラボから指定された設定値にしたがって、ロードバランサー、ターゲットグループを作成していきます。
作成後、ターゲットの EC2 インスタンスのステータスがそれぞれ healthy であることを確認します。

3. ロードバランサーをテストする

ここではロードバランサーにアクセスしていきます。

ブラウザからロードバランサーの DNS 名にアクセスします。
今回の場合、複数回ブラウザを更新しても負荷分散されることなく、常に同じ EC2 インスタンス (EC2 Instance 2) へアクセスされました。

NLB では、デフォルトではクロスゾーンロードバランシングが無効になっており、こちらが原因で常に同じ AZ (同じ EC2 インスタンス) へリクエストが割り振られてしまったようです。
よってクロスゾーンロードバランシングを有効化してみましょう。

クロスゾーンロードバランシング有効後、複数回ブラウザを更新してみると、もうひとつの EC2 インスタンス (EC2 Instance 1) へもリクエストが割り振られたことを確認できました。

4. 障害発生時のロードバランサーをテストする

ここでは障害発生時のロードバランサーの挙動を確認してみます。
具体的には EC2 インスタンスを停止することで、どういった挙動になるか確認してみましょう。

まずは現状、ロードバランサーにアクセスすると EC2 Instance 2 へアクセスされました。

ここで EC2 Instance 2 を停止してみましょう。

再度ロードバランサーへアクセスすると EC2 Instance 1 へアクセスされました。
また何度アクセスしても EC2 Instance 1 へのみアクセスされました。
これにより停止中 (unhealthy) の EC2 Instance 2 へリクエストは割り振られないため、アクセスエラーは発生しないことを確認できました。

まとめ

実際に本コースをやってみて、初めて ELB を触るという方には勉強になるコンテンツではないかと思いました。

ラボ側で詳細に手順を提示してくれるため、特につまずくことなく誰でもコースを完走することができるかと思います。
提示される手順と、実際のマネジメントコンソール画面にほとんど差異がないのが本当に良いです。

今後も AWS Builder Labs のコンテンツを試してはブログ化していきたいと考えています。

最後までお読みいただき、ありがとうございました!