EC2がRoute info failedで突然繋がらなくなった場合の対処

AWS 9月 03, 2016

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. おわりに

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

slont

金融ベンチャーでWebエンジニア。美と酒とTechで生きてる。Vue.jsが至高。Elixir好き。個人事業とWebアプリ案件もやってます。 アプリ→https://app.cullet.me Android→https://play.google.com/store/apps/details?id=net.maytry.cullet.android

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.