私は、「1 つのマスター - 複数のスレーブ」方式で編成された、EC2 のクラスターで実行する必要があるオープンソース ツールに取り組んでいます。物事を正しく整理する方法、最もシンプルでありながら信頼できる方法についてアドバイスが必要です。
基本的に必要なのは、マスター インスタンス (ユーザーが手動で実行する) で実行され、次のことを行うコードです。
a)Nスレーブインスタンスを実行します(Nはユーザーからのものです)
b) 各インスタンスが起動して実行されたら、SSH で接続して何かを開始します。
c) スレーブ インスタンスが生きていることを追跡する (単純に ping を実行するなど)
d) スレーブ インスタンスが失敗した場合 - 終了していることを確認し、別のインスタンスを実行して手順 b) を繰り返します。
e) ユーザーからのシグナルにより - スレーブインスタンスをシャットダウンします。
これはすべて非常に単純で簡単に見えますが、いくつか質問があります。
1) すぐに使えるソリューション。最初にZookeeperを見てみましたが、その複雑さに怯えていました。私が必要とするような単純なものにはやり過ぎのようです。私が見つけたもう1つのことはStarClusterです。これはPythonにもあります(私のツールもPythonにあります)が、必要なこと(追跡、インスタンスの再実行)を行うかどうかはわかりません。私の質問は、私が知らない単純なツール、ライブラリ、フレームワークはありますか?
2)別の方法は、自分で実装することです。ここでの質問は次のとおりです。私の問題に、私が気付いていない落とし穴はありますか? それはすべて単純に見えます: API へのいくつかの呼び出しといくつかの定期的な ping ですが、ここには何も表示されない可能性があるため、既に作成されたツールを使用するのが本当に正しいでしょうか?
3) すべて自分でコーディングする場合の問題は、CloudWatch を使用するかどうかです。内部計算クラスタの管理に本当に違いがあるのでしょうか、それとも高負荷サイトなどを支援するためだけに優れているのでしょうか?
4) 私の単純なアーキテクチャには、マスター ノードの障害に対する保護がありません。ユーザーはそれを実行し、Web インターフェイス経由で接続してクラスターを実行しますが、マスター ノードに障害が発生すると、すべてが壊れます。スレーブは、マスター ノードの存在を確認し、マスター ノードに障害が発生した場合に自身を終了できます。これにより、ヘッドレス実行のお金のかかるクラスターからの保護が追加されますが、グレースフル リスタートの問題は解決しません。これを解決するには?
5) このプロジェクトのコーディングを開始する前に知っておくべき重要な資料や重要な資料はありますか?
前もって感謝します!