基本的なロードバランサの使い方

コネクションテーブルでパケットを送る

SYNパケットを受け、接続先サーバを決定した後、その後のクライアントからのACKパケットや、HTTP要求をどうしてサーバに割り振る事ができるのかと、疑問に持つ方も多いかと思います。
接続要求のためのSYNパケットを送ったサーバと、別のサーバにその後のHTTP要求を送出したとしても、そのサーバは認識する事ができませんが、これは同一コネクション中のパケットは同一のサーバに送る必要があるためです。
それを実現する仕組みがコネクションテーブルとなっており、あるロードバランサ上でトラフィックを処理中にコネクションテーブルの一つのエントリーを表示すると、出力を見る事ができるようになっています。

 

クライアントからロードバランサに対して初めてのパケットが到着すると、ロードバランサには、コネクションエントリが作成され、クライアントからの後続パケットは、過去のコネクションテーブルにマッチするかどうか判断されて、同一のコネクションであれば、エントリー内のサーバに接続されます。
TCPの場合は、シーケンス番号まで見られて、同一コネクションか否かを判断されますが、UDPの場合、ソースIP、ポート番号が同じであれば、一定期間は同一コネクションと判断されます。

 

サーバロードバランサの基礎知識

 

ロードバランサ入門 基本と導入方法