AWS には ELB (Elastic LoadBalancer) があります。 非常に優れているので、誰もが使っていることかと思います。
このELBですが、EC2 Instance を 何らかの意図で応答ファイル (health.txt など) を外してOut Of Service にして作業することがしょっちゅう発生しますが、稀に ELB に紐づいた EC2Instance がずっと Out Of Service になる場合があります。
今回は、その対処方法についてです。
結論
ELBにRegisterされたまま通信が阻害される作業は行わない
原因
当然といえば当然ですが、これが原因です。
ELB応答ファイル (health.txt) への 仮想ディレクトリへの不通とは 例えば、 IIS をお使いの場合はサイトの停止が該当します。 その他 Apache や nginx を使っていても同様ですね。この操作をELBに紐づいたまま行ってると発生することがあります。
作業例
特に、ELBに紐づけられたインスタンスを Registerされた状態で停止したりを通して行っていると起こります。
- OS再起動
- 応答ファイル への 仮想ディレクトリへの不通 等
対応
この状況になると、通常応答ファイルを操作するのと同様の処理を繰り返し行っても復旧しません。
- 応答ファイルの設置し直し(health.txt)
- IIS など ELB応答ファイルへの経路を再度繋がるようにW3SVCサービスやデーモン再起動
解決方法は簡単です。
1. ELB からOut Of Service のインスタンスを Remove
2. 応答ファイルへのアクセスができる状態で再度 Register
参考
気付かないと復旧まで余計な時間を喰うのでお気をつけて
https://forums.aws.amazon.com/thread.jspa?threadID=81118