AWS EC2 のインスタンスで、Create Image で AMI を作成し、別のインスタンスタイプでインスタンスを起動したところ、Unreachable で接続できない状態となってしまった。
再度同じAMIで起動しても現象は変わらず。
AMIを作り直しても現象は変わらず。
システムログを見てみたところ、
cloud-init[2555]: url_helper.py[WARNING]: Calling ‘http://169.254.169.254/2009-04-04/meta-data/instance-id’ failed [13/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)]
なエラーが出て止まっている模様。
AWSのサーバにインスタンスIDを問い合わせようとしているのだが、ネットワークがつながっていないのでできない。といったところか。
さらにログを見ていったところ
udev: renamed network interface eth0 to eth1
という一行を発見。
ネットワークデバイスの名前を eth0 から eth1 に変えといたよ!
いやいや変えちゃだめでしょ。eth0 で設定しているんだから。
つまり、ネットワークデバイスは eth1 という名前になったのだが、設定はeth0 で探しに行っているので、ネットワークデバイスが見つからず、ネットワークがつながらず、インスタンスIDが取得できず、インスタンスが正しく起動しない。
ということのようだ。
調べたら
/etc/udev/rules.d/70-persistent-net.rules
というファイルに
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”01:23:45:68:89:ab”, KERNEL==”eth*”, NAME=”eth0″
というような設定があり、ここのMACアドレスがハードのものと違うとリネームされてしまうようでした。
この行の先頭に # をつけてコメントアウトし、Create Image で AMI を再作成した後、再度インスタンスを起動したら問題なく起動できました。