1

いくつかのジョブの AWS スポット インスタンスを調べていましたが、SQS から動作し、メイン サーバーで cronjob (または並べ替え) によって維持される静的クラスターを使用する代わりに、実行中のサーバーとジョブの数などを確認しています。私がしなければならない仕事ごとにサーバーを作成および解体させます。

これで、特定の AMI を指定して新しいスポット インスタンスをスピンアップする方法がわかりました。この AMI には、/home/ubuntu/ に do_job.php という名前の PHP スクリプトがありますが、いくつかのパラメーターが必要です (SQS メッセージからのように)。 .

私のサーバースポナーで、スポナーをロックしない実際に実行されていることを確認したら、新しいスポットインスタンスに非同期コマンドを呼び出す良い方法はありますか?

多分私はこれを間違った視点から見ていますか?私は aws クラスターに少し慣れていないので、ここで間違ったツリーを吠えている可能性があります...

4

1 に答える 1

0

この質問をフォローアップしようと思いました。

いいえ、これを行う簡単な方法はありません。現在最も簡単な方法は、基本的な Apache や lightttp などの Web サーバーをサーバーにインストールし、内部のパブリック DNS を取得して、生成中の EC2 インスタンスから非同期 cURL メソッドなどを介して呼び出すことです。

同様のことを行うためのより受け入れられる方法は、SQS のような MQ を使用して、ジョブ サーバーに可視性ロックを作成することです。ワーカー サーバーまたは情報を処理するために実行しているスポット/オンデマンド インスタンスで MQ を処理する場合は、スクリプト実行の長さの可視性を設定します。バックグラウンド プロセスがまだ実行されていることを検出するたびに、メッセージの可視性をリセットする while() ループに入る間、情報の処理をバックグラウンド プロセスに変換する単純なディスパッチャーを使用してこれを行うことができます。これにより、メッセージの単一サーバーの整合性が可能になります。

これを機能させるには、Amazon Cloudwatch メトリクス内の MessagesVisible のサイズと深さに基づいてスケーリングする必要があります。これは、キューに表示されてしばらく経過しているメッセージの数を示します。このメトリクスに遅延期間を設けるのが最善です。

  • 60 秒ごとにメトリックを確認します
  • 10 分ごとに、平均が 10 を超える可視メッセージがサーバーをスケールアップします。

これは、ジョブ クラスターをスケーリングするためのより受け入れられる方法です。

于 2012-06-13T07:53:09.363 に答える