ENGINEER BLOG ENGINEER BLOG
  • 公開日
  • 最終更新日

【ALB】ALBを構築してEC2へ負荷分散してみた

この記事を共有する

目次

はじめに

皆さんこんにちは!パーソル&サーバーワークスの榎本です。

さて、前回の記事ではRDS(以下、Relational Database Service)を構築し、Amazon EC2(以下、EC2)インスタンスからデータベースに接続する手順をお伝えしました。
今回はその構成をさらに発展させて、Application Load Balancer(以下、ALB)を構築し、複数のEC2インスタンスへの負荷分散を実現する手順をお伝えしたいと思います。

本記事の目的

  • ALBを構築し、EC2インスタンスへの負荷分散を実現できるようになること
  • セキュリティグループを適切に設定し、セキュアな構成を理解すること

前提

  • AWSマネジメントコンソールへのログインができること
  • 東京リージョンを利用
  • Amazon VPC(以下、VPC)構築済み(VPCはこちらの記事の構成)
  • EC2構築済み(EC2はこちらの記事の構成)

構築手順

ALB用セキュリティグループ作成

  1. AWSマネジメントコンソールにログインして、右上のリージョン選択箇所にて[東京]リージョンを選択する
    1_SelectTokyoRegion.png

  2. 左上の検索バーにて[EC2]を検索して開く
    2_SelectEC2.png

  3. 左のナビゲーションペインから[セキュリティグループ]を選択し、[セキュリティグループを作成]をクリックする
    3_CreateALBSG.png

  4. 以下設定を入力する
    • ・セキュリティグループ名:<名前>-yyyymmdd-alb-sg(以下例の場合、enomoto-20260128-alb-sg)
    • ・説明:<名前>-yyyymmdd-alb-sg(以下例の場合、enomoto-20260128-alb-sg)
    • ・VPC:<作成したVPCのIDを選択>(以下例の場合、enomoto-20251210-vpcのIDを選択)
  5. [ルールを追加]をクリックし、以下設定を入力して[セキュリティグループを作成]をクリックする
    • ・タイプ:HTTP
    • ・ソース:Anywhere-IPv4
      4_SettingALBSG.png

  6. セキュリティグループが作成されたことを確認する
    5_CheckALBSG.png

プロテクテッドサブネットEC2 セキュリティグループ設定変更

  1. 左のナビゲーションペインから[セキュリティグループ]を選択し、プロテクテッドサブネットEC2用セキュリティグループを選択する
  2. [インバウンドルール]タブを選択し、[インバウンドルールを編集]をクリックする
    101_EditSG.png

  3. [ルールを追加]をクリックして以下設定を入力し、[ルールを保存]をクリックする
    • ・タイプ:HTTP
    • ・ソース:ALB用セキュリティグループのIDを選択(以下例の場合、enomoto-20260128-alb-sg)
      102_AddHTTPSG.png

既存EC2インスタンス接続

  1. 左のナビゲーションペインから[インスタンス]を選択し、過去の記事で作成したプロテクテッドサブネット用EC2インスタンスにチェックを入れて[接続]をクリックする
    17_ConnectEC21a.png

  2. [セッションマネージャー]タブを選択し、[接続]をクリックする
    18_ConnectSSH1a.png

Apacheインストール

  1. 以下画面が表示されたことを確認し、以下コマンドを実行してユーザーを変更する
    sudo su - ec2-user 
  2. 以下コマンドを実行してApacheをEC2にインストールする
    sudo dnf update -y 

    sudo dnf install -y httpd 

    24_installApache.png

  3. 以下コマンドを実行してApacheの自動起動をONにして、Apacheを起動し、ステータスを確認する
    sudo systemctl enable httpd 

    sudo systemctl start httpd 

    sudo systemctl status httpd 

    201_ApacheActivate.png

追加EC2インスタンス作成

AMI&プロテクテッドサブネット用EC2(2台目)作成

  1. 既存のEC2インスタンスからAMIを作成する。左のナビゲーションペインから[インスタンス]を選択し、既存のEC2インスタンスにチェックを入れて[アクション]-[イメージとテンプレート]-[イメージを作成]を選択する
    6_MakingImage.png

  2. 以下設定を入力し、[イメージを作成]をクリックする
    • ・イメージ名:<名前>-yyyymmdd-ami-protected(以下例の場合、enomoto-20260128-ami-protected)
    • ・イメージの説明:<名前>-yyyymmdd-ami-protected(以下例の場合、enomoto-20260128-ami-protected)
    • ・インスタンスを再起動:※チェックを外す
    • ・タグ:イメージとスナップショットに対し一緒にタグを付けます 7_SettingImage.png

  3. 作成したAMIを選択し、[AMIからインスタンスを起動]をクリックする
    8_ActivateAMI.png

  4. 以下設定を入力する
    • ・名前:<名前>-yyyymmdd-ec2-protected-1c(以下例の場合、enomoto-20260128-ec2-protected-1c)
      9_SettingEC22-1.png

    • ・インスタンスタイプ:t3.micro
    • ・キーペア:<既存のキーペアを選択>(以下例の場合、enomoto-20260107-ec2-keypair)
      10_SettingEC22-1-2.png

  5. [ネットワーク設定]で[編集]をクリックし、以下設定を入力する
    • ・VPC:<作成したVPCのIDを選択>(以下例の場合、enomoto-20251210-vpcのIDを選択)
    • ・サブネット:<名前>-yyyymmdd-protected-subnet-1c(以下例の場合、enomoto-20251210-protected-subnet-1c)
    • ・パブリックIPの自動割り当て:無効化
    • ・ファイアウォール(セキュリティグループ):セキュリティグループを作成
    • ・セキュリティグループ名:<名前>-yyyymmdd-ec2-protected-sg(以下例の場合、enomoto-20260126-ec2-protected-sg)
    • ・説明:<名前>-yyyymmdd-ec2-protected-sg(以下例の場合、enomoto-20260126-ec2-protected-sg)
      11_SettingEC22-2.png

  6. [高度な詳細]をクリックして展開し、以下設定を入力し、[インスタンスを起動]をクリックする
    • ・IAMインスタンスプロフィール:<作成したIAMロール>(以下例の場合、enomoto-20260107-iam-role-ec2ssh)
      12_SettingEC22-3.png

  7. 「成功」と表示されていることを確認し、[すべてのインスタンスを表示]をクリックする
    13_CheckEC22.png

追加EC2インスタンスHTMLファイル作成

  1. 作成したEC2インスタンスにチェックを入れて[接続]をクリックする
    14_ConnectEC21c.png

  2. [セッションマネージャー]タブを選択し、[接続]をクリックする
    15_ConnectSSH1c.png

  3. 以下コマンドを実行して識別用のHTMLファイルを作成する
    sudo tee /var/www/html/index.html > /dev/null << 'EOF'
    <!DOCTYPE html>
    <html>
    <head>
    <title>Server 2 - ALB Test</title>
    </head>
    <body>
    <h1>Hello from Server 2!</h1>
    <p>This is the second EC2 instance behind ALB.</p>
    <p>Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)</p>
    </body>
    </html>
    EOF
    

16_HTMLFile1c.png

既存EC2インスタンスHTMLファイル作成

  1. 既存のEC2インスタンスにセッションマネージャーで接続し、以下コマンドを実行して識別用のHTMLファイルを作成する
    17<em>ConnectEC21a.png

    18</em>ConnectSSH1a.png

    sudo su - ec2-user 

    sudo tee /var/www/html/index.html > /dev/null << 'EOF'
    <!DOCTYPE html>
    <html>
    <head>
    <title>Server 1 - ALB Test</title>
    </head>
    <body>
    <h1>Hello from Server 1!</h1>
    <p>This is the first EC2 instance behind ALB.</p>
    <p>Instance ID: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)</p>
    </body>
    </html>
    EOF
    

    19_HTMLFile1a.png

ターゲットグループ作成

  1. 左のナビゲーションペインから[ターゲットグループ]を選択し、[ターゲットグループの作成]をクリックする
    20_CreateTargetGroup.png

  2. 以下設定を入力し、[次へ]をクリックする
    • ・ターゲットタイプ:インスタンス
    • ・ターゲットグループ名:<名前>-yyyymmdd-alb-tg(以下例の場合、enomoto-20260128-alb-tg)
    • ・VPC:<作成したVPCのIDを選択>(以下例の場合、enomoto-20251210-vpcのIDを選択)
      21<em>SettingALBTG1.png

      22</em>SettingALBTG2.png

  3. 作成した2つのEC2インスタンスにチェックを入れ、[保留中として以下を含める]をクリックし、[次へ]をクリックする
    23_SettingALBTG3.png

  4. [ターゲットグループの作成]をクリックする
    24_SettingALBTG4Last.png

  5. もし以下ポップアップが表示された場合は[次へ]をクリックする
    25_Next.png

  6. ターゲットグループが作成されたことを確認する
    26_CheckALBTG.png

Application Load Balancer作成

  1. 左のナビゲーションペインから[ロードバランサー]を選択し、[ロードバランサーの作成]をクリックする
    27_CreateALB.png

  2. [Application Load Balancer]で[作成]をクリックする
    28_ChooseALB.png

  3. [基本的な設定]セクションで以下設定を入力する
    • ・ロードバランサー名:<名前>-yyyymmdd-alb(以下例の場合、enomoto-20260128-alb)
    • ・スキーム:インターネット向け
    • ・IPアドレスタイプ:IPv4
      29_SettingALB1.png

  4. [ネットワークマッピング]セクションで以下設定を入力する
    • ・VPC:<作成したVPCのIDを選択>(以下例の場合、enomoto-20251210-vpcのIDを選択)
    • ・マッピング:ap-northeast-1aにチェックし、<名前>-yyyymmdd-public-subnet-1a(以下例の場合、enomoto-20251210-public-subnet-1a)を選択
    • ・マッピング:ap-northeast-1cにチェックし、<名前>-yyyymmdd-public-subnet-1c(以下例の場合、enomoto-20251210-public-subnet-1c)を選択
  5. [セキュリティグループ]セクションで以下設定を入力する
    • ・セキュリティグループ:<作成したALB用セキュリティグループを選択>(以下例の場合、enomoto-20260128-alb-sg)
    • ・既存のdefaultセキュリティグループは×をクリックして削除する
      30_SettingALB2.png

  6. [リスナーとルーティング]セクションで以下設定を入力する
    • ・デフォルトアクション:ターゲットグループへ転送
    • ・<作成したターゲットグループを選択>(以下例の場合、enomoto-20260128-tg)
      31_SettingALB3.png

  7. [ロードバランサーの作成]をクリックする
    32_SettingALB4Last.png

  8. 「ロードバランサーを正常に作成しました」と表示されたことを確認する
    33_CheckALB.png

  9. ロードバランサーの状態が「アクティブ」になり、リソースマップのターゲットが「正常」になったことを確認し、DNS名をコピーする
    34_ALBDNSCopy.png

ターゲットグループヘルスチェック確認

  1. 左のナビゲーションペインから[ターゲットグループ]を選択し、作成したターゲットグループをクリックする
  2. [ターゲット]タブを選択し、両方のインスタンスのヘルスステータスが「Healthy」になっていることを確認する
    33-2_CheckTG.png

負荷分散動作確認

  1. ブラウザを開き、ALBのDNS名にアクセスする
    35_Access1.png

  2. ページをリロードして、異なるサーバーからのレスポンスが表示されることを確認する
    36_Access2.png

まとめ

今回の記事にてALBを構築し、複数のEC2インスタンスへの負荷分散を実現することができました!
ALBを使用することで、トラフィックを複数のインスタンスに分散し、可用性とスケーラビリティを向上させることができます。
今回までの記事でAWSの基礎的なサービス(VPC、EC2、NATゲートウェイ、RDS、ALB)の構築手順をお伝えできました。
Web三層構造の基本的なアーキテクチャになりますので、ぜひ何度もご覧いただけますと幸いです!
今回もお付き合いいただきありがとうございました!

この記事は私が書きました

榎本 将希

記事一覧

2024,2025 Japan All AWS Certifications Engineers サッカー観戦とサウナが好きです! 機械学習とAIを勉強中です!

榎本 将希

この記事を共有する

クラウドのご相談

CONTACT

クラウド導入や運用でお悩みの方は、お気軽にご相談ください。
専門家がサポートします。

サービス資料ダウンロード

DOWNLOAD

ビジネスをクラウドで加速させる準備はできていますか?
今すぐサービス資料をダウンロードして、詳細をご確認ください。