0

Amazon Beanstalk の複数のアプリケーション インスタンス間でメッセージを同期したいと考えています。すべてのインスタンスは、他のすべてのインスタンスにメッセージを認識せずに送信できる必要があります。そこで、SNS と SQS を使用してパブリッシュ/サブスクライブ パターンを構築することにしました。

新しいアプリケーション インスタンスが開始されると、新しい SQS キューが作成され、トピックにサブスクライブされます。ここまでは順調ですね。しかし、オートスケーラーがインスタンスをシャットダウンした場合はどうなるでしょうか?

シャットダウンイベントをキャッチする可能性はありますか? または、他の実装のアイデアはありますか?

4

2 に答える 2

1

CloudWatchを介してアラームを設定できる既存のメトリクス、または独自のカスタム メトリクスを作成することで十分に機能するように思えます。たとえば、各 EC2 インスタンスには、定期的なステータス チェックを監視するためのいくつかのメトリクスがあります。サブスクライバーの状態に基づいて通知を送信するアラームを定義できます。ステータス チェックに X 分以上失敗したインスタンスは、調査する価値があるかもしれません... アプリケーション監視アラームがある場合、これは自動的に発生する可能性があります。

それだけでは不十分な場合は、カスタム メトリックを確認することをお勧めします。独自のメトリクスとアラームを作成して、(たとえば) インスタンスごとにアプリケーションに ping を実行し、メッセージを同期する前にアプリケーションが応答していることを確認できます。アラームには、「OK」、「ALARM」、「INSUFFICIENT DATA」の 3 つの状態があり、それらを聞いて適切に対応できます。たとえば、メトリクスがアプリケーションと同じインスタンスでポーリングされ、インスタンスがダウンした場合、「INSUFFICIENT DATA」メッセージが表示されるようになります。

カスタム メトリックは、以前は単純なアプリケーション モニターとして役に立ちました... アプリケーションに頻繁に ping を実行できる場合は、1 または 0 を報告します。ping が失敗した場合に通知を送信し、データが不十分な場合に通知を送信します。うまくいきました。

于 2013-11-12T16:06:06.937 に答える