web-dev-qa-db-ja.com

Auto Scaling Groupを使用してEC2インスタンスを自動修復しますか?

Auto ScalingGroupとユーザーデータ起動スクリプトを使用して自動修復EC2インスタンスをセットアップしようとしています。現在のサーバーに到達できなくなる問題がある場合、インスタンスは終了し、新しいサーバーが代わりに使用されます。これは十分に簡単ですが、1つの要件が難しいことを証明しています。

交換用サーバーには、前のサーバーと同じプライベートIPが必要です。私の考えでは、セカンダリプライベートIP(これはVPC内にあります)を元のサーバーに割り当ててから、それを新しいサーバーに再割り当てします。

  1. ユーザーデータの起動スクリプト中にインストールされたaws-cliを使用してプライベートIPを再割り当てできると思いますが、どのサーバーが置き換えられているかを確認し、そこからIPを再割り当てするにはどうすればよいですか(たとえば、将来的にはサーバーのプールが大きくなり、2つが同時にダウンします)。

  2. 元のサーバーが終了している場合、プライベートIPを再割り当てすることはできますか?

3
James Simpson

多くの調査と試行錯誤の末、私たちがやったことは次のとおりです。

  1. サーバーを完全にセットアップするために、ユーザーデータシェルスクリプトを使用して、すべてのサーバータイプを独自の自動スケーリンググループに配置します。
  2. タグを使用して、転送するサーバー上のリソース(プライベートIP、エラスティックIP、EBSなど)を追跡しました。
  3. 置換インスタンスの起動時に、ユーザーデータスクリプトはAWS CLIにクエリを実行して、リソースタグが使用可能な同じタイプの終了インスタンスを取得します。
  4. これらのタグのデータとAWSCLIを使用して、これらのリソースを代替サーバーに再割り当てしてから、古いサーバーからタグを削除します。
  5. これはすべてVPCに含まれているため、プライベートIPは、インスタンスの終了時にVPCに解放されるため、引き続き利用できます。

これは数日間実行されており、非常にうまく機能しているようです(ただし、テストのためにインスタンスを直接終了する以外の理由でインスタンスが実際に失敗した場合は、まだ確認されていません)。

3
James Simpson

AWS 最近発表されました 「EC2インスタンスの自動リカバリ」機能。私が理解している限り、これは基本的に自動スケーリンググループと同じように機能しますが、インスタンスのIPやボリュームなどは保持されます。

現時点では、この機能は新しいインスタンスでのみ利用可能であり、米国東部地域でのみ利用できます。

0
j0nes