Web サイトのパーティショニングと URL スペース
-
06-07-2019 - |
質問
私のウェブサイトは成長しています。すべての機能を単一のサーバー コピーで実行するのではなく、機能セットを異なるサーバー グループに分割する必要があります。Windows ネットワーク負荷分散セットアップに同一のサーバーが 8 台あります。
問題は:URL スペースを同じに保つ必要があります。実行可能な解決策は何でしょうか?機能セット用に新しいドメインを開始したくありません。URL ベースの書き換え/ルーティング機能 (?!?) を備えたある種のリバース プロキシを考えています。ソフトウェアまたはハードウェアに関する推奨事項はありますか?これは、必要な機能がないため、WNLB セットアップを置き換える予定です。
解決
実際には、負荷分散を実装するためのいくつかのソリューションがあります。
- DNSラウンドロビン
- DNS負荷分散(lbnamedを使用)
- プロキシラウンドロビン
- ハードウェア/ TCPラウンドロビン
1)と2)はここでは選択肢ではないことを理解しました...お金があり、本当に高いパフォーマンスが必要の場合は、4)に進みます。それ以外の場合は、3)に進みます。
プロキシラウンドロビンの場合も、いくつかの解決策が可能です: Apache mod_rewrite 、 Apache mod_proxy 、 Squid (そして確かに私が知らない他の多くの人)。
-
「ダム」の場合ロードバランス、Apache mod_rewriteの URL書き換えガイド(プロキシスループットラウンドロビンセクションを参照)。
-
Apache mod_proxyは、クライアントをインターネットに接続するためのプロキシとして機能できますが、通常 URLを別のサーバーにリダイレクトするためのリバースプロキシとして使用されます。キャッシュ機能はありません(ただし、mod_cacheおよびmod_rewriteで使用できます)。
-
Squidはプロキシキャッシュであり、通常はクライアントをインターネットに接続するために使用されます。ただし、リバースプロキシとして使用し、リクエストをキャッシュしてコンテンツ配信を高速化するように構成することもできます。
ご覧のとおり、どれを選択するかは、プロキシする対象と方法によって異なります。あなたの場合、Linuxでキャッシュする場合(オプションの場合)、Apache mod_proxyまたはSquidの実行を検討します。
ハードウェアに関しては、私は専門家ではありませんが、「小さい」と思います。 「中」へ専用サーバーで十分です。すべてのリクエストがこのマシンを通過することを忘れないでください。そのため、そのサイズ設定はトラフィックに大きく依存します。これには、実際のデータを掘り下げる必要があります。
他のヒント
サーバーが 8 台ある場合は、そのうちの 7 台を使用して作業負荷を共有し、1 台のフロントエンド サーバーをプロキシとして使用することをお勧めします。
フロントエンド サーバーは Apache を実行し、mod_proxy を使用して各 HTTP リクエストを 7 つのバックエンド サーバーのいずれかに委任できます。必要に応じて、受信 URL に基づいて作業を委任するように mod_proxy を設定できます。これにより、たとえば、1 台のサーバーでビデオを配信し、2 台のサーバーでブログ エントリを配信し、残りのサーバーでその他の処理を行うことができます。
フロントエンド サーバーは非常に軽量になります。Apache とそれ以外はほとんど実行していません。また、Squid または Apache の mod_cache を使用して静的コンテンツをこのフロント サーバーにキャッシュし、画像、js、css、その他の静的コンテンツのリクエストが一度キャッシュされるとバックエンド 7 サーバーにヒットすることがなくなります。
編集:パスカルのコメントを読んだところですが、彼も同じことを示唆しています。彼を +1 改造してみます