私は、Webアプリケーションのごく一部でnodejsを評価していますが、それが適切だと思われます。ノードが若くて動きが速いことは知っていますが、ようやく「製品化の準備ができた」カテゴリに到達したようです。ただし、グーグルで調べてみると、実稼働環境で見られるほとんどの情報は1年前のものであり、ノードがいかに壊れやすく、予期せずエラーになる可能性があるかについてまだ警告しており、その後に再起動するためのいくつかの解決策が続きます. これだけで私を怖がらせることはありませんが、ノードを確実に公開するための「正しい方法」に関する公式の言葉がないようです。
2 に答える
cluster
OS によっては負荷分散のパフォーマンスが低下する可能性がありますが、これは良いオプションのようです。非常に単純なバージョンは次のようになります。
var cluster = require('cluster')
if(cluster.isMaster) {
var i, worker, workers;
for(i = 0;i < numWorkers;i++) {
worker = cluster.fork();
workers[worker.process.pid] = worker;
}
cluster.on("exit", function(deadWorker) {
delete workers[deadWorker.process.pid];
worker = cluster.fork();
workers[worker.process.pid] = worker;
});
}
else {
//be a real server process
}
これは、デッド プロセスを再起動することである程度の安定性を確保し、負荷を共有する複数のプロセスを提供するため、優れたオプションです。cluster
基本的に server.listen を変更して、リスニングを行っているマスターからのイベントをすべてのワーカーがリッスンするようにすることに注意してください。これが、「無料の」負荷分散の由来です。
クラスタのドキュメントは次の場所にあります: http://nodejs.org/api/cluster.html
すべてのプロセスを強制終了して再起動する、またはすべてのプロセスを強制終了してシャットダウンするなど、特定のイベントをトリガーできるようにする場合は、マスタープロセスにいくつかのシグナルを処理させることも価値があります。
私は現在、非常にスケーラブルなソーシャル メディア アプリケーションのために、node.js アプリケーションを本番環境に持ち込む作業を行っています。重要な展開ソリューションを作成するために、現在 AWS Elastic Beanstalk を使用しています。ノード AWS のドキュメントは [http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.html] にあります。
私は自分のテスト環境でこれを試してみましたが、うまくいきますが、プロセスが単純でも簡単でもありません。特に、自分の環境で Virtual Private Cloud を使用した構成で問題が発生しました。また、このサービスはやや新しいため、自由に利用できる情報やトラブルシューティングのアドバイスは多くありません。もちろん、Amazon からサポートを購入することで解決できます.
Elastic Beanstalk のデプロイでは、次のものが提供されるようです。
- 無料利用枠の開発環境の資格がある場合。
- ノード アプリケーションとノード アーキテクチャ向けのスケーラブルな EC2 展開。
- 環境全体での一貫した展開 (つまり、開発、テスト、uat、本番)。
- モニタリング。
- 展開の再現性と自動化。