Amazon Linux 2023でALBヘルスチェックを通す最小設定

Amazon Linux 2023でALBヘルスチェックを通す最小設定

Clock Icon2025.06.24

この記事の目的

Amazon Linux 2023 で、ALBのヘルスチェックを通すための最小限の設定を行います。
具体的には、Apache で80番ポートにリクエストが来た時ステータスコード200が返るEC2インスタンスを作ります。

また、Amazon Linux 2 まで使用できていた yum が Amazon Linux 2023 から dnf に変更されたこともあり、最新の情報を残しておく目的もあります。

バージョン情報など

  • OS: Amazon Linux 2023
  • httpサーバー: Apache 2.4
  • ロードバランサ: Application Load Balancer

コマンド

早速ですが、最終的なコマンドは以下のとおりです。上から順番に実行すれば、ヘルスチェックに通過するEC2が作成されます。

$ sudo dnf upgrade -y           # dnf(AL2023のパッケージマネージャ)の更新
$ sudo dnf install -y httpd     # Apache のインストール 
$ sudo systemctl start httpd    # httpd の起動
$ sudo systemctl enable httpd   # インスタンス起動時に自動で起動するよう設定
$ echo "Hello World" | sudo tee /var/www/html/index.html  # index.html の作成

シェルスクリプト

ユーザーデータなどで実行したい場合は、以下のシェルスクリプトを使います。コマンドは同じです。

#!/bin/bash

sudo dnf upgrade -y
sudo dnf install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd
echo "Hello World" | sudo tee /var/www/html/index.html

動作確認

これだけだと味気ないので、インスタンスにユーザーデータを設定してヘルスチェックが通ることを確認してみます。

まず、インスタンスの作成画面を開きます。
EC2_インスタンス作成

「インターネットからのhttpトラフィックを許可」にチェックを入れ、セキュリティグループの80番ポートを開けます。

インターネットからのhttpトラフィックを許可

次に、「高度な詳細」を開きます。

EC2起動_高度な詳細フィールド

スクロールすると「ユーザーデータ」のフィールドがあるので、ここに上記のスクリプトを添付します。

EC2起動_ユーザーデータ_スクリプト記入

この状態で、インスタンスを起動します。

起動が完了したら、インスタンスの詳細画面の「パブリックIPv4アドレス」をコピーしてブラウザに貼り付けます。
(オープンアドレスは HTTPS でアクセスされるため、正しく開けません。)

起動後_パブリックIPv4アドレス

IPアドレスにアクセスすると、以下の画面が表示されApacheの起動に成功していることがわかります。

Apache_起動成功

では、最後にこのインスタンスをALBに紐づけてHealthyとなることを確認します。

まずターゲットグループの画面から、ターゲットグループの作成を行います。
ターゲットグループ_一覧画面

ターゲットタイプはインスタンス、プロトコルとポートは HTTPの80 であることを確認し、そのほかはデフォルトで設定を進めます。
ターゲットグループ名は任意のもので問題ありません。今回は test-tg としました。

ターゲットグループ作成画面_グループの詳細

ターゲットの登録画面では先ほどのEC2が表示されているはずです。
チェックを入れ、「保留中として以下を含める」を選択します。
ターゲットグループ_ターゲットを登録

すると、以下のような表示になります。この状態でターゲットグループを作成します。

ターゲットを登録_保留中

これでターゲットグループの作成が完了しました。ただ、この状態ではヘルスチェックが行われないので、検証にはロードバランサーまで作成する必要があります。
今作成したターゲットグループの画面から、「新しいロードバランサーに関連付け」をクリックします。
新しいロードバランサーに関連付け

ロードバランサーのスキームは「インターネット向け」を選択します。
ALB_基本的な設定

ネットワークマッピングは、EC2インスタンスを選択したVPCとサブネットを選択します。
ALB_ネットワークマッピング

リスナーとルーティングで、先ほど作成した test-tg を選択します。
※ここでターゲットグループが出てこない場合は、VPCの選択が誤っている可能性があります。
ALB_リスナーとルーティング

これでALBの作成をクリックし、以下の成功メッセージが表示されることを確認します。
ロードバランサーが正常に作成されました

ALBの作成まで完了すると、ターゲットグループの登録済ターゲットでインスタンスの初期化が始まります。

登録済ターゲット_初期化中

初期化が完了し、Healthy になることが確認できました。

登録済ターゲット_正常

詰まったポイント: ヘルスチェックに失敗する

Apache にはドキュメントルートにファイルが存在しない場合は自動で表示されるページ(以下)があります。
Apache_初期画面

最初は「ブラウザから見れてるな、200ヨシ!」と思って進めていたのですが、ヘルスチェックが通らず調査を行いました。
結果的には、上記の画面は 200 ではなく 403 コードでレスポンスが返って来るようで、ブラウザから見れていてもヘルスチェックには通らないという状況が起きていました。

なので、ヘルスチェックに失敗する場合はドキュメントルートに index.html が配置されているかを確認すると解決につながるかもしれません。

終わりに

インスタンスの設定自体は簡単なので、動作確認まで含めて検証してみました。
ユーザーデータであれば簡単にセットアップできるので、検証の際に活用してもらえると嬉しいです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.