22

Amazon の ECS のような docker とスケジューリングおよびオーケストレーション サービスの出現により、Node API をデプロイする最適な方法を決定しようとしています。Docker と ECS はさておき、ノード クラスター ライブラリを利用して、マスター プロセスと複数のワーカー プロセッサを作成することにより、ドキュメントで提案されているように、非同期エラーが発生した場合にノード アプリのクラッシュを適切に処理したいと考えました。

クラスタ アプローチの利点の 1 つは、エラーを適切に処理することに加えて、使用可能な CPU ごとにワーカー プロセッサを作成することです。しかし、これは docker の世界では意味があるのでしょうか? ECS 上の EC2 インスタンスのクラスターにスケーリングされる単一の Docker コンテナーで複数のノード プロセスを実行することは理にかなっていますか?

ノード クラスターのアプローチがなければ、エラーを適切に処理する能力が失われるため、少なくとも、Docker コンテナーごとにマスター プロセスと 1 つのワーカー プロセスを実行する必要があると思います。ECS のタスク定義で定義する CPU の数については、まだ混乱しています。ECSのドキュメントには、各コンテナー インスタンスが CPU あたり 1024 ユニットを持っていることが記載されています。しかし、それは EC2 コンピューティング ユニットと同じではありませんね。そうは言っても、この権利を達成するには、適切な量の vCPU を備えた EC2 インスタンス タイプを選択する必要がありますか?

最適な構成を実現するには、特定の Node API アプリケーションのベンチマークをある程度行う必要があることは理解していますが、どこから始めればよいかをよりよく理解できれば素晴らしいと思います。たぶん、私がしなければならない勉強/研究がありますか?パスまたは推奨事項について私を導くための指針は、非常に高く評価されます!

編集:私の特定の質問を要約するには:

  1. ここで説明されているように、docker コンテナー内でマスター/ワーカー クラスターを実行して、適切なクラッシュを実現することは理にかなっていますか?

  2. クラスターのドキュメントで説明されているのとほぼ同じコードを使用して、使用可能な CPU に「スケーリング」することは理にかなっていますrequire('os').cpus().lengthか?

  3. ECS タスク定義のドキュメントで Amazon が意味することは何cpusですかcontainer instance has 1024 units per CPU? そして、この設定の良い出発点は何ですか?

  4. 上記に基づいてノード API を提供することを目的とした ECS クラスターに使用するインスタンス タイプの出発点として適切なものは何ですか? また、利用可能な vCPU は前の質問にどのように影響しますか?

4

3 に答える 3

1

なかなか良いパターンに思えます。これは、Erlang/OTP で行われていることと似ており、これが地球上で最も堅牢なシステムの 1 つであると主張する人はいないと思います。さて、問題は実装方法です。

Heroku や、もう少し成熟した同様の PaaS システムのパターンを活用します。アマゾンがこれを行うのに間違った場所だと言っているわけではありませんが、単に翻訳できる他の分野で多くの作業が行われているということです. たとえば、この記事にはレシピがあります: https://devcenter.heroku.com/articles/node-cluster

vCPU とコンピューティング ユニットの関係に関しては、1/1024 の単純な比率のように見えます。これは、CPU 使用率に基づくマイクロチャージへの移行です。彼らは、ラムダ作業でこれらをさらに進めています。彼らは、あなたが利用したほんの一瞬に基づいてあなたに請求しています.

于 2014-12-25T19:37:16.463 に答える