1

2つのapache/phpWebサーバーがsquidページキャッシングプロキシと負荷分散されています。イカのキャッシュは、画像送信ページではアクティブではありません。ユーザーが画像を送信できるフォームがあります。

これは2段階のプロセスです。彼らは最初に画像をアップロードします。画像の詳細を入力できる2番目のステップでは、画像の詳細を送信すると、画像は正しいフォルダに移動さ​​れます。

問題は、トラフィックが多い場合、2番目のステップがアップロードされた画像のサーバーとは異なるサーバーから提供される可能性があることです。そのため、2番目のステップではアップロードされた画像が見つからず、アップロードが完了しない可能性があります。

これらのサーバーには何千もの画像ファイルがあるため、サーバー間の同期は遅くなります。とにかく、特定のページを常に特定のサーバーから提供するように強制できることはありますか?基本的に、負荷分散機能をバイパスします。

4

2 に答える 2

1

これにはいくつかの解決策があります。

  1. リバース プロキシとして nginx に切り替えると、クライアントをホストに固定できます
  2. アップロード ディレクトリを両方のホストにマウントされた NFS 共有にする
  3. 両方のサーバーがアクセスできるように、ファイルを mysql テーブルにアップロードします (おそらくハッシュ テーブルを使用するのが最適です)。

個人的にはオプション 1 を使用します。これは、ラウンド ロビンの負荷分散が引き続き行われるためですが、各接続は最初に接続されたホストに固定されます。

オプション 2 には、要求を均等に分散できるという利点がありますが、NFS 共有が単一障害点になるという欠点があります。

オプション 3 では、ハッシュ テーブルを使用する場合、DB サーバーに十分な RAM がない場合に問題が発生する可能性があります。

于 2011-05-28T10:19:30.467 に答える
0

Geoffrey の回答に近い 2 つのオプションが表示されます。
1. rsync で同期されたアップロード ディレクトリに画像をアップロードします。
そうすれば、画像の数がはるかに少なくなり、同期がはるかに速くなります。
プロセス全体を完了したら、画像を適切なフォルダーに移動できます。
2. DB: 画像自体ではなく画像の URL を保存するため、どのサーバーがその画像を保持しており、どのサーバーにアクセスできるかを常に把握できます。
Geogrey の回答を読んで、このトピックに関連する情報を探している 2 つのオプションだけです。

于 2012-04-23T19:04:35.350 に答える