Amazon Lightsailは仮想サーバーを月額3.5ドルから利用でき、ちょっと自分のサーバーを持ちたい時にとても便利です。私もいくつかのサイトをLightsail上で構築していたのですが、ある時突然サーバーに接続できなくなりました。
VPSの要とも言えるsshも使えず苦戦したのですが、なんとか復旧に至ったので、その時取った対処方法をまとめておきたいと思います。
症状
Lightsailインスタンスに対して、http(https)及びsshの接続ができない。(それまでは問題なく接続できていた)
インスタンス上に構築していたウェブサイトにアクセスすることができない
対処方法
インスタンス管理の画面からインスタンスを「停止」した後に「開始」する。
※インスタンスを「再起動」ではダメでした
Image may be NSFW.
Clik here to view.
インスタンスを停止した場合、静的IPアドレスを使っていないと、グローバルIPアドレスが変更されるので、合わせてDNSの設定変更が必要になります。
Lightsailでは、静的IPアドレスが料金に含まれているので(今回初めて知りました)、静的IPアドレスを設定していない場合は、ちょうどいい機会だと思って設定してしまいましょう。Lightsailインスタンスの管理画面の「ネットワーキング」タブから設定できます。
インスタンスの再起動と停止→開始の違い
上にも少し書きましたが、今回インスタンスの「再起動」では問題の解決に至りませんでした。一般的な感覚としては「停止」してから「開始」は「再起動」と同じように思うのですが何が違うのでしょうか。
Lightsailのドキュメントによると、
という違いがあるようです。
Lightsailのインスタンスは仮想的なサーバーであり、物理的なコンピューター上に配置されています。
「再起動」を行った場合は、物理的には同じコンピューター上でインスタンスを起動し直します。このため、例えば、障害の原因が物理マシン上にある場合は、再起動しても解決しない場合があります。
一方で「停止→開始」を行った場合は、物理的なコンピューターをお引越しして、別のコンピューター上でインスタンスが起動します。物理的なマシンに障害があった場合は、別のマシンに乗り換えることで問題が解消される場合があるということになります。
もちろん、仮想サーバーを触る立場では、障害の原因が物理マシン上のものかどうかは知るすべがないのですが、「停止→開始」の方がより真っ白からの「再起動」になるということは覚えておいたほうが良さそうです。
まとめ
sshできないとなると、再起動くらいしか取る手段がなかったわけですが、「再起動」と「停止→開始」は同じという固定観念があったために解決が遅れてしまいました。