ときどき、Elastic Load Balancer (ELB) が使用できないサーバーの 1 つを追い出します。これは良いことです -- 中断はほとんどありません。
通常、AWS コンソールからインスタンスを再起動するだけで問題が解決します。
EC2 インスタンスが利用できなくなったときに自動的に再起動したいと考えています。
これを行う最善の方法は何ですか?(たまたま Windows インスタンスですが、理想的には問題にならないはずです)
ときどき、Elastic Load Balancer (ELB) が使用できないサーバーの 1 つを追い出します。これは良いことです -- 中断はほとんどありません。
通常、AWS コンソールからインスタンスを再起動するだけで問題が解決します。
EC2 インスタンスが利用できなくなったときに自動的に再起動したいと考えています。
これを行う最善の方法は何ですか?(たまたま Windows インスタンスですが、理想的には問題にならないはずです)
ラムダ関数がこれを行うための優れた方法であるという @agmin に同意します。SNS トピックを介してラムダ関数をトリガーするように CloudWatch アラームを設定できます。
この実装をまとめましたが、うまく機能しているようです。コマンドラインから完全にセットアップおよび構成できます。
自動スケーリング グループを使用して、1 つのライブ インスタンスを保持するように設定します。インスタンスがクラッシュすると、定義済みのインスタンス イメージから新しいインスタンスが生成されます。簡単で便利です。
安価な EC2 マイクロ インスタンスを入手し、EC2 上のすべてのサーバーを一覧表示する簡単なスクリプトを作成し、各サーバーに対して GET を実行して、適切に機能していることを確認しました。サーバーが正常に機能していない場合、私のスクリプトはサーバーを再起動します。スクリプトを 10 分ごとに実行しています。
これを行うサービスがあれば少しは楽だったのですが、システムのセットアップは簡単で、マイクロ インスタンスは安価でした。
一般的に言えば、Auto Scaling グループを使用してロードバランサーをセットアップする必要があります。Auto Scaling グループには、サーバーの構成方法に関する情報が含まれます。たとえば、ユーザーの操作なしで構成できる ami と可能なユーザー データ ファイルがあります。これら 2 つのサービスを連携させると、ロード バランサーは失敗したインスタンスを終了し、すぐに新しいインスタンスを開始します。
Windows インスタンスを使用していると見なすと、powershell スクリプトを記述してサーバーを構成し、CloudInit.NET を使用してサーバーの起動時にスクリプトを実行できます。スクリプトの最後の部分で、ロード バランサーのチェックを有効にする必要があります。
ラムダ関数を書いてください!
マイクロ インスタンスを実行するよりも安価であり、任意の間隔で実行するように設定できます。また、CloudWatch モニタリングも利用できるため、マイクロ インスタンスの状態を個別にチェックすることを心配する必要はありません。
エンドポイントを提供する ElasticBeanstalk を使用していdescribeInstancesHealth
ます。または、ec2 のdescribeInstanceStatus
エンドポイントを使用できます。
次に、不良インスタンスを検出した場合、ec2 はrebootInstances
1 つ以上のインスタンスを再起動させます。