4

Node、Express、Mongoでプロジェクトを開始しようとしていますが、最初に解決しなければならない重要な質問が1つあります。

実行中のアプリケーションがあるとします。遅かれ早かれ、私は再度コーディングし、変更をデプロイしたいと思います。これまでは開発モードでしか作業していなかったので、^Cを実行してサーバーを再起動しても問題ありません。

制作はどうですか?もちろん、サーバーとすべてのユーザーを一度にゴミ箱に捨てることはできません。サービスを中断せずに変更をデプロイする方法はありますか?

upstartなどのシステムを調べましたが、問題は解決しません(または何かを見逃しましたか?)。私は現在、一種のフェイルオーバーを構築することを検討していますが、誰かが私の前にそれを行ったに違いありません...

4

3 に答える 3

1

まあ、私はおそらくnginxのようなリバースプロキシを使用します。メモリフットプリントが低く、多数の同時接続を処理でき、最終的に複数のサーバーが存在する場合のフェイルオーバーをサポートします。

このnginxリバースプロキシを使用すると、更新されたソースを使用して新しいノードプロセスを開始し、nginxに新しいノードに切り替えて、古いバージョンを破棄することができます。

これにより、新しいバージョンのクラッシュが早すぎた場合に備えて、以前のバージョンのアプリをサーバーに保持することもできます...

リンク: http: //nginx.org/en/docs/control.html

于 2012-06-23T21:29:18.167 に答える
1

NodeJitsuによる永遠のチェックアウト。プロセスをデーモン化し、何かが失敗したときにサーバーを自動的に再起動します。また、CWDを監視するオプションもあるため、リポジトリで「git pull」を実行すると、サーバーは新しいコードで再起動されます。

私はこれを本番環境でプルベースのサーバーモデルとして1年以上使用しており、問題はほとんどまたはまったくありませんでした。

于 2012-06-25T12:54:31.183 に答える
0

可用性を重視する場合は、サービスを複数のサーバーで、できれば物理的に異なる場所で実行する必要があります。デプロイ以外の多くのイベントにより、単一のサーバーがオフラインになる可能性があります。したがって、問題はありません。各サーバーをオフラインにして、サーバーにデプロイし、オンラインに戻します。

可用性を気にしない場合でも、問題はありません。

于 2012-06-23T11:23:57.290 に答える