2011-01-29 11 views
0

私は2つのEC2インスタンスを持っています。もし私が仕事を終えたら、他の人に署名して他のことをしたいと思う。
どうやってコミュニケーションをとるのですか?私はCURLを使いたくない。高価なようだ。私はAWSには単純な解決策があるはずだと思いますが、ドキュメントに関連するヘルプはまだ見つかりません。EC2インスタンスを別のインスタンスに呼び出す方法は?

:(

また、高速な方法でSSH経由giongずに2つのインスタンス間でデータを送信する方法?私はsshが行うことができます知っている。それは遅いようだ。もう一度、EC2を行うために提供任意のツールを?

1)インスタンスAは

    インスタンスAからデータを取得するインスタンスBに指示:その


    は実際に、私は2つの方法が必要

  • これは私がSQSを使うことができるとアドリアンが答えました。私はそれを試みます。

2)インスタンスBが信号を受け取ると、インスタンスAのデータ(EBS)データはインスタンスBに転送する必要があります。データ量は、それをジップしても大きくなることがあります。それは約50 MBです。そして、私はインスタンスBは、次の間隔が入る前にデータを処理するのに十分な時間を持つことになりますように、高速なデータを取得するために、インスタンスBを必要とする

だから、私はこれらのメソッドのいずれかを考えています:。

a)のインスタンスA DBからデータをダンプしてS3にアップロードします。その後、インスタンスBに信号を送る。インスタンスBはS3からデータを取得する。

b)インスタンスAには、DBからのデータダンプがあります。インスタンスBは、インスタンスAにSSH(または任意の接続)を確立し、データを取得します。

データは永続的に保存する必要がありますが、現時点では問題にはなりません。これは、主にインスタンスBが処理するためのものです。

これは簡単なシナリオです。私は、複数のインスタンスでスケーリングした場合、適切なアプローチは何かを考えています。 :)

ありがとうございました。

答えて

0

この通信がどのくらい速く必要ですか? SSHはかなり速いです。私が考えることができるのは、(ジョブを実行しているプログラムの中から)rawソケットだけです。

+0

実際には、S3が高速かSSHが速いのですか?私はSSHが速いと思いますよね?それは直接接続なので、そうですか? – murvinlai

+1

S3はストレージメカニズムであり、通信チャネルではありません。 S3をシグナリングに使用する場合は、最初のマシンが何らかの信号値を保存していたかどうかを常に確認する必要があります。最良の場合、SSHよりも少なくとも1桁遅いでしょう。 Amazonサービス(S3、SQSなど)は、速度ではなくフォールトトレランス用に設計されています。 –

+0

クリスはそれを手に入れました。 :) – murvinlai

3

Amazonは特別なサービスを提供しています。これはSQSと呼ばれ、インスタンスは特別なキューを使用してメッセージを相互に送信できます。 SQS用のSDKは、JavaPHPなど、さまざまな言語で用意されています。これはあなたのシグナル伝達のニーズに役立ちます。

実際に大量のデータを送信するには、S3を使用するのが最善です(SQSメッセージでオブジェクトキーを送信する)。余分な中産者を追加することでレイテンシを導入するのは間違いありませんが、S3は非常にであることがわかります(同じ可用性ゾーンに入れた場合)パフォーマンスより重要なのは、S3が非常に信頼できることです。 SSHを使って自分で転送を管理しようとすると、S3があなたのために処理する多くのエラーチェックと再試行ロジックを実行する必要があります。 S3FSを使用すると、EC2からのS3への読み書きを簡単に行うことができます。

更新された質問に対応するように編集されています。

+0

OPが生のSSHまたはカールが遅すぎると感じたら、SQSは氷河のように見えるでしょうか? –

+0

私はそれを見てみましょう。ありがとう。あなたはSQSを通してどのくらいのデータを送ることができるか知っていますか? – murvinlai

+0

私は彼が現実的にはそれ以上にうまくいくとは思わない。同じアベイラビリティゾーン内の2つのインスタンスが必ず同じ物理ネットワークに存在するという保証はないため、インターネットを経由するよりもはるかに優れたやり方を見出すことはできません。一方、EC2とSQSは、おそらく何らかの直接的な接続を持っているでしょう。 EC2内のSQSは実際にかなり速いです... –

1

SNS ...プッシュSQSのようなものです。

0

分散ワークフロー管理サービスを使用できます。

インスタンスBがすでにタスクを完了している場合は、別のタスクを選択することができます。通常は、インスタンスBがタスクを「選択」して実行していることを通知する必要があります。その後、他のインスタンスはあなたのリスト上の他のタスクを取得しようとする必要があります。どのタスクがすでに選択されているのか、どのタスクが選択されているのかを知る中央サービスが必要です。

インスタンスBがタスクを正常に完了すると、新しいタスクのために空いていることを中央サービスに通知し、何か残っている場合は1つを選択します。

タスクを完了できない場合、セントラルサービスは、定義したハートビートとタイムアウトによって検出し、タスクをリストに戻して、他のインスタンスがそれを受け取るようにする必要があります。

Amazon SWFは、このすべてを提供する中心的なサービスです。

各インスタンスが必要とするデータについては、s3のようなセントラルストアに配置し、s3パスを構成して、各タスクがデータをダウンロードする場所を知り、同期する必要がないようにします。例: タスク1のデータは、s3:// my-bucket/task1のようなものに置くことができます。

関連する問題