0. はじめに

ブログにアクセスできなかった障害ですが、先ほどサーバの復旧が完了しました。


昨日からブログが見れなかったようで、訪問された方にはご迷惑をお掛けしました。先ほど復旧が完了しました。


同じような現象でお困りの方へ参考になればと、対処方法を書かせて頂きます。



1. 環境

  • OS: Ubuntu14.04



2. 現象

本日ブログにアクセスした際、503エラーで画面が真っ白になっているのに気付き、何事かとAWSを確認しました。


すると、ELBのヘルスチェックで、インスタンスからの応答がないため、ステータスがOutOfServiceになっていました。ところが、AWS上ではインスタンス自体は正常になっていたため、どうしたものかと色々調べていました。


セキュリティグループをいじって直接インスタンスにアクセスしたところ、確かにpingやsshが通らないことを確認したため、インスタンスを再起動しました(これがいけなかった)。


その後、何度起動してもインスタンスステータスのチェックで引っ掛かるようになりました。シスログを見ると、以下のエラーが吐かれていました。

ci-info: +++++++++++++++++++++++Net device info++++++++++++++++++++++++
ci-info: +--------+-------+-----------+-----------+-------------------+
ci-info: | Device | Up | Address | Mask | Hw-Address |
ci-info: +--------+-------+-----------+-----------+-------------------+
ci-info: | lo | True | 127.0.0.1 | 255.0.0.0 | . |
ci-info: | eth0 | False | . | . | xx:xx:xx:xx:xx:xx |
ci-info: +--------+-------+-----------+-----------+-------------------+
ci-info: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Route info failed!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2016-09-03 13:01:30,245 - url_helper.py[WARNING]: Calling 'http://169.254.169.254/2009-04-04/meta-data/instance-id' failed [0/120s]: request error [HTTPConnectionPool(host='169.254.169.254', port=80): Max retries exceeded with url: /2009-04-04/meta-data/instance-id (Caused by <class 'socket.error'>: [Errno 101] Network is unreachable)]

調べていると、Ubuntu14.04でのcloud-initのバグらしいことが判明。

データの救出とサーバの復旧に取り掛かります。



3. 対処

とりあえず前述の記事を参考に、AMIを作って別インスタンスを立てましたが、同じく起動せず。


インスタンスが立たない→アクセス出来ない→設定を変えられない


という状況のため、以下の手順でデータの救出と設定変更を試みました。

  1. 一旦新しくUbuntuインスタンスを立てる
  2. 現行のインスタンスからボリュームをデタッチ
  3. 2のボリュームを、1で立てたインスタンスにアタッチ
  4. インスタンスを再起動してSSHログイン
  5. 4でアタッチしたボリュームを適当なディレクトリにマウント
  6. /etc/network/interfaces へ以下を追記
    auto eth0
    iface eth0 inet dhcp
  7. 以下をコメントアウト
    source /etc/network/interfaces.d/*.cfg
  8. インスタンスを停止
  9. ボリュームをデタッチし、もとのインスタンスにルートボリュームでアタッチ(Ubuntuは/dev/sda1
  10. インスタンスを再起動

これで、元の環境を復元して、ネットワークの設定も変更することが出来ました。



4. おわりに

ブログ見れなくなったのに気付いた時は焦りました笑
でもまあこういった障害があるととても勉強になるので、良い機会だったかもしれません。