状況
- ターゲットグループに新しいインスタンスを設定するとunhealthyと表示される
AWSで既に設定済みのAMIを変更する必要がありました。新たにAMIをAmazon Linux2(旧)からubuntu(新)にしたインスタンスを作成したところ、ターゲットグループの設定でエラーになることが判明。SSL化済みだったので、ロードバランサーやSSL証明書、DNS面にも関わるのではないかと設定全体を見直してみました。
試したこと
- セキュリティグループの登録し直し
- ロードバランサーの作り直し
- エラスティックIPの関連付けを削除、新たに作成して再関連付け
- Route53のSSL用の設定を解除
もろもろ、旧インスタンスで設定していたものは、全て削除して作り直してみました。(ドメインのDNS、SSL証明書まわりは変更していません。)
しかし、セキュリティグループ等のやり直しでは改善されませんでした。
SSL化済みなのでグローバルIPはそもそも表示されなかったのですが、SSL用の設定を解除してもグローバルIPで何も表示されなかったので、「おや?」と思いました。(この時、テスト表示用のvar/www/html/index.htmlをアップロードしてあります。)
そもそもインスタンスの設定が不十分である可能性が高いと判断。並行してAWSのドキュメントを確認していると、「ウェブサーバーが稼働中で、ポートへのアクセスをブロックする OS レベルのファイアウォールがないことを確認する」の箇所を検証してみます。
EC2 インスタンスでホストされている応答しないウェブサイトのトラブルシューティング方法を教えてください。
新しいインスタンスにSSH接続して以下のコマンドを試してみます。
systemctl status httpd
すると、次のように返ってきました。
Unit httpd.service could not be found.
やはりインスタンスの設定に問題があるようです。
このエラーについて調べてみると、apacheをインストールする必要があるようですね。
参照:Unit httpd.service could not be found.
解決
というわけで、ubuntuサーバーにSSH接続して、apacheをインストール。初期化のため、アップデートの記述も入れています。
sudo -i
apt -y update
apt -y upgrade
sudo apt -y install apache2
これでページが表示されるようになり、タッゲットグループの設定もunhelthyからhealthyに変わりました。
再発防止策
Webサービスの立ち上げ用にAMIにubuntuを選択したら、まずは初期化してapacheをインストールするようにする。また、ブラウザ表示でエラーが出たら、apacheがインストールされているか確認する。
まとめ
私の場合はもろもろ再設定しましたが、同じ状況でこの記事を読んだ方は、新しいインスタンスの設定に切り替えることとubuntuサーバーにapacheをインストールすればインスタンスの切り替えは完了すると思います。