負荷分散IP

まず、誰もがよく知っているTCP / IPプロトコルスイートの次の階層図を見てみましょう。
ここに画像の説明を挿入します

ネットワークデータパケット送信のプロセスで各層が果たす役割は、この記事の焦点では​​ありません。この記事では、主にネットワーク層でIPを使用してサーバークラスターの負荷分散を行う方法と、で負荷分散を実行できる理由について説明します。このレイヤー。IPプロトコルのヘッダー形式を見てみましょう。

ここに画像の説明を挿入します

赤いボックス内の送信元アドレスと宛先アドレスは、IPロードバランシング機能の鍵です。IPロードバランシングは、ネットワーク層ロードバランシングとも呼ばれます。そのコア原則は、IPの宛先アドレスを変更してデータロードバランシングを完了することです。カーネルドライバ。、以下に示すように:

ここに画像の説明を挿入します

上の図に示すように、ユーザー要求データパケット(送信元アドレス200.110.50.1)が負荷分散サーバー114.100.20.200に到達すると、負荷分散サーバーはカーネルプロセスでネットワークデータパケットを取得し、それに応じて内部実サーバーを取得します。特定の負荷分散アルゴリズム192.168.1.1に変換し、データパケットの宛先IPを192.168.1.1に変更すると、データパケットは192.168.1.1のサーバーに送信されます。サーバーが処理した後、データパケットは戻ります。対応するデータパケットを負荷分散サーバーに送信します。負荷分散サーバーは、送信元アドレスを114.100.20.200に変更した後、データパケットをユーザーのブラウザーに送信します。このプロセス全体では、データパケットはユーザーのアプリケーションプロセスを通過しないため、負荷分散のパフォーマンスは非常に高くなります。
上記の図と上記の説明によると、これは簡単に実装できると思うかもしれませんが、そうではありません。ここで扱う重要なポイントは、クラスターの内部サーバーによって処理されたデータを負荷分散サーバーに戻す方法です。 。負荷分散サーバーに到達する前にユーザーが要求したデータパケットの宛先アドレスは114.100.20.200、送信元アドレスは200.110.50.1、負荷分散サーバーによって変更された宛先アドレスは192.168.1.1、送信元アドレスはまだ200.110.50.1なので、処理されます。返されるデータパケットの宛先アドレスは200.110.50.1になり、送信元アドレスは192.168.1.1になります。最終的に返されるデータパケットが負荷分散に戻るのは問題になります。サーバ。おそらく次の2つの解決策があります:1。負荷分散サーバーはデュアルネットワークカードを使用します。1つは内部用、もう1つは外部用です。要求パケットの宛先IPを変更すると、送信元アドレスも変更され、送信元アドレスを独自のIP、つまり送信元アドレス変換(SNAT)に変換します。これにより、内部クラスターサーバーの応答が負荷分散サーバーに返されます。次に、負荷分散サーバーが実際の物理サーバーのゲートウェイサーバーとして使用されます。サーバークラスター。すべての応答が負荷分散サーバーを通過するようにします。
IP負荷分散により、カーネルプロセスでのデータ分散が完了し、処理パフォーマンスが大幅に向上しました。ただし、すべての要求と応答は負荷分散サーバーを通過するため、クラスターの最大応答データスループットは、負荷分散サーバーネットワークカードの帯域幅によって制限されます。これは、大量のデータを送信する必要があるサイトでは困難です。ダウンロードサービスやビデオサービスなど。需要に応えます。応答データパケットが負荷分散サーバーをバイパスしてユーザーのマシンに直接送信できる場合はどうなりますか?それを行う方法はありますか?もちろん、それはリンク層での負荷分散です。これについては、次のブログ投稿で説明します。

参照:
[1]「TCP / IP詳細説明、第1巻:プロトコル」
[2]「大規模なWebサイトの技術アーキテクチャ-コア原則とケーススタディ」

おすすめ

転載: blog.csdn.net/qq_26249609/article/details/102455269