【AWS】なぜかLightsailインスタンスにアクセス出来なくなって困った件

Amazon Lightsail
解決した今でもはっきりとした原因がわからないのですが、どこかの誰かが今日も困っているかもしれないということで状況と対応について共有します






状況:起きたこと(その1)

  1. アクセス出来ていたドメインに接続できない。「応答がない」と言われるのでサーバに到達できていない?
  2. 静的IPでアクセスしてみても「応答がない」と言われる
  3. ローカルからSSH接続してみても「ssh: connect to host gg port 22: Connection timed out」といわれて接続できない
  4. Lightsailコンソールにログインし、ブラウザSSHで接続してみようとしても「UPSTREAM_NOT_FOUND [519]」とでて接続できない
  5. スナップショットから新しいインスタンスを作ってみても同じ


SSH接続出来ない問題についてはAWSのこの辺りに有益そうな情報があったのですが、一通り試してみても上手くいきませんでした。


ブラウザベースの SSH コンソールを使用して Lightsail インスタンスにアクセスするときに、「 UPSTREAM_ERROR」、「UPSTREAM_NOT_FOUND」 または「CLIENT_UNAUTHORIZED」というエラーが表示されるのはなぜですか?

Lightsail ブラウザーベースの SSH コンソールのエラーを解決する


解決は突然に

そんなわけで問題のあったインスタンスを停止したり起動したり、最新のまたは1週間前のスナップショットを使って新しいインスタンスを作ってみたりいろいろしてみたんですが、どれもこれも改善せず。半ば諦め気味に追加の情報を探してしばらくほったらかして戻ってきたら、SSH接続出来るようになってました。なんてことだ。


ちょっと裏付けできてなくて曖昧で申し訳ないのですが、もしかすると「インスタンスを停止後に起動し起動処理が完全に終わるまで20分程度放置」ということだったのかもしれません。起動までにそんなに時間掛かる?という気もしないでもないですが。


ただ、SSH接続できるようになってもサイトは正常化しませんでした。



状況:起きたこと(その2)

  1. Debianのデフォルト画面が表示されてしまう(OSはAmazon Linux2だったはすなのに……)
  2. そもそもbitnamiのapacheが起動していないように見える(bitnamiのconfファイルは正しい)
  3. bitnamiの再起動をしようとすると「System has not been booted with systemd as init system (PID 1).」と怒られる


なぜこんなことが起きてしまったのかはわからないので後回しにして、それぞれについて考えると、どうやらサーバにはサーバに元々入っているapacheと、ミドルウェアとしてのbitnamiが持ってきたapacheの2つが入っているようで、通常はbitnamiのものだけが起動するはずなのになぜかサーバに元々入っている方が起動しているみたいです。

元々入っている方を停止しbitnamiのapacheを起動してやることも出来ますが、それをやると今度は「503 Service Unavailable」となって接続できず。これは恐らく……bitnamiのDBも動いてないんじゃないかと思うんですけど確かめるのが難しい。ステータスを確認しようとすると、

$ sudo /opt/bitnami/ctlscript.sh status

つれないお答え。

Cannot find any running daemon to contact. If it is running, make sure you are pointing to the right pid file (/var/run/gonit.pid)

じゃあって言うんでbitnamiそのものを再起動しようと思って次のコマンドを入力すると、

sudo /opt/bitnami/ctlscript.sh restart

この返答。

Restarting services..
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

この意味は、

再起動するとシステムの立ち上げに systemd ではなく SysVinit が使われてしまう

EC2にgitをインストールして再起動したらサイトが立ち上がらなくなった

ということのようで、対応策は、

こちらは、削除されてしまった systemd のパッケージを改めてインストールすることで対処しました。 インストールして再起動するだけで、SysVinit から systemd に変わるようで楽でした。

EC2にgitをインストールして再起動したらサイトが立ち上がらなくなった

ということで、以下のコマンドを実行。

$ sudo apt-get install systemd-sysv libpam-systemd

インストール完了後、Lightsailコンソールからインスタンスを再起動。5分ほど待ってからSSH接続、OK。試しにもう一度以下のコマンドで起動できているか確認すると、

$ sudo /opt/bitnami/ctlscript.sh status

今度はこんな返事が。

apache already running
mariadb already running
php-fpm already running

キタ!!


この段階でドメインにアクセスしてみると無事サイトが表示されました。良かった……



まとめと推測

先に引用した記事はEC2においてご自身がされた更新によって影響が出てしまったという事例でしたが、こちらはLightsail。自由度があまり高くない上にそもそもコンソールでなんらかの更新をしようとは考えない環境での作業。やってもcomposerぐらい。そんな中でのこのエラーなので原因はまったく不明です。前回アクセス出来たときから今日まで、SSH接続すらしてませんから。もちろん不正アクセスがあったという可能性は捨てきれませんけど、AWSのサービスにSSHで不正アクセスできるもんなんでしょうか。

特にアナウンスがあるわけではないので話半分で聞いてもらいたいですけど、なんとなーーくAWS側でなんらかのアップデートがあったんじゃないのかなと思ってたりします。通常、起動中のインスタンスに対してアップデートがあるってことはないので緊急事態か、それか僕がなんらかの通知を見逃していたか。ハードウェアが壊れたので移行したとかそういうヤツ。見た感じそんなお知らせないけどなあ……


ともあれまだ開業してないECサイトにおける障害だったので、僕の時間とエネルギーを失っただけで済んでホントに良かったです。僕のせいではないけれどこれがもしバリバリ動いてる会社のECサイト(あんな会社やこんな会社)だったらどんな面倒くさいことになっていたことか。。やれやれだぜ。どこかで再発しないことを祈ります。