4

これを行うために私が考えることができるテクニックがたくさんあります:

  • 別のポートや IP でレプリカ Web サーバーをセットアップし、DNS をロードバランサーとして使用します。一度に 1 つのサーバーを再起動する
  • より明示的なロード バランシング (Heroku や OpenShift などの PaaS が使用するもの) を暗黙的なレプリカで利用する
  • 組み込みのメカニズムを使用する (例: nginx)

私は IaaS ソリューション内で作業しており、gitこのセットアップ全体を処理するためにいくつかのリスナーをセットアップします。

サイトの訪問者/ユーザー/クライアントに目立った影響を与えずに、Python Web アプリの最新リビジョンを公開できるように、Web サーバーを再起動する最良の方法は何ですか?

4

1 に答える 1

2

シンプルなほど良い、特効薬はありません。

  1. 単一サーバーの場合、グレースフル リスタート メカニズムが役立ちます。新しいプロセスを開始して新しいリクエストを受け入れ、古いリクエストが完了するまで古いプロセスを維持します。Nginx はすでにこれを使用しています。http: //wiki.nginx.org/CommandLine#Stopping_or_Restarting_Nginx を参照してください。

  2. 複数のサーバーの場合、リバース プロキシを使用することをお勧めします。構造の例は次のようになり、Nginx を使用して簡単に構築できます。 ここに画像の説明を入力 バックエンド サーバーの一部が故障した場合、リバース プロキシは他の正常なサーバーにリクエストをディスパッチでき、ユーザーには影響しません。負荷分散戦略をカスタマイズして、きめの細かい制御を行うことができます。また、スケールアップのためにサーバーを柔軟に追加したり、トラブルシューティングやコード更新のためにサーバーを選択したりすることもできます。

于 2013-10-25T04:05:17.393 に答える