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サービスやデーモン再起動
解決方法は簡単です。
- ELBからOut Of ServiceのインスタンスをRemove
- 応答ファイルへのアクセスができる状態で再度Register