概要

このページでは、負荷分散装置(ロードバランサー)で、サーバへのリクエストを負荷分散するための基本的な仕組みについて解説します。

負荷分散装置(ロードバランサー)は、「アプリケーションスイッチ」、「L4/L7スイッチ」などとも呼ぶことがあります。

負荷分散装置(ロードバランサ)のポイント 負荷分散装置の仕組みのポイントは、宛先IPアドレスの変換です。クライアントからのリクエストは、宛先IPアドレスが負荷分散装置になっています。そして、負荷分散装置で宛先IPアドレスを実サーバに変換します。

基本的なシステム構成

負荷分散装置でサーバの負荷分散を行うためには、次の機器が必要です。

  • 負荷分散装置
  • 負荷分散するサーバ群
  • DNSサーバ

負荷分散装置でサーバの負荷分散を行うときの基本的なシステム構成は次の図のようになります。

図 負荷分散装置のシステム構成
図 負荷分散装置のシステム構成

サーバ1、サーバ2、サーバ3の3台のWebサーバでwww.example.comへのWebアクセスを負荷分散するものとします。負荷分散装置は、スイッチのように複数のイーサネットポートを持ち、負荷分散するサーバ群を集約して接続します。負荷分散装置には、www.example.comの仮想IPアドレスを設定します。そして、DNSサーバにはwww.example.comのAレコードとして負荷分散装置の仮想IPアドレスを登録しておきます。

負荷分散装置の通信フロー

負荷分散装置で、PC1とPC2の複数のクライアントPCからwww.example.comへのWebアクセスを負荷分散する際の通信フローを考えます。

  1. PC1がDNSサーバに対してwww.example.comのDNSリクエストを送信する
  2. DNSサーバは、DNSリプライとしてwww.example.comのIPアドレス192.168.1.100を返答する
  3. PC1はサーバ1(192.168.1.100)へWebアクセスを行う
  4. SLBが192.168.1.100へのWebアクセスを負荷分散アルゴリズムによって実サーバであるサーバ1を選択。
  5. SLBはサーバ1へWebアクセスを転送する
  6. PC2がDNSサーバに対してwww.example.comのDNSリクエストを送信する
  7. DNSサーバは、DNSリプライとしてwww.example.comのIPアドレス192.168.1.100を返答する
  8. PC2はサーバ1(192.168.1.100)へWebアクセスを行う
  9. SLBが192.168.1.100へのWebアクセスを負荷分散アルゴリズムによって実サーバであるサーバ2を選択。
  10. SLBはサーバ2へWebアクセスを転送する
図 PC1からのWebアクセス
図 PC1からのWebアクセス
図 PC2からのWebアクセス
図 PC2からのWebアクセス

負荷分散の仕組みのポイントは、宛先IPアドレスの変換

このような通信フローをもう少し詳細に考えます。負荷分散装置はクライアントPCからのWebアクセスを実サーバへ転送します。このような動作はIPアドレスの変換によって実現します。

図 負荷分散装置でのIPアドレス変換
図 負荷分散装置でのIPアドレス変換

クライアントPCからwww.example.comへのWebアクセスのパケット1のアドレス情報は次の通りです。

  • 宛先IP:192.168.1.100(負荷分散装置の仮想IPアドレス)
  • 送信元IP:10.1.1.1
  • 宛先ポート番号:80
  • 送信元ポート番号:50000(ランダムポート)

これが負荷分散装置に届き、負荷分散装置でサーバ1を選択すると、パケット2としてサーバ1へ転送します。そのときのアドレス情報は次の通りです。

負荷分散装置で実サーバを選択するためのアルゴリズムにはいくつかの種類があります。

  • 宛先IP:192.168.1.1 (サーバ1のIPアドレス)
  • 送信元IP:10.1.1.1
  • 宛先ポート番号:80
  • 送信元ポート番号:50000(ランダムポート)

負荷分散装置で宛先IPアドレスを仮想IPアドレスからサーバ1の実IPアドレスへ変換します。

この例では実サーバはTCP80番ポートで待ち受けているものとしています。実サーバが待ち受けているポートがTCP80番でなければ、宛先ポート番号の変換も行います。

そして、サーバ1は返事としてパケット3.を返します。パケット3.のアドレス情報は次のようになります。

  • 宛先IP:10.1.1.1
  • 送信元IP:192.168.1.1 (サーバ1のIPアドレス)
  • 宛先ポート番号:50000(ランダムポート)
  • 送信元ポート番号:80

パケット3は負荷分散装置を経由します。負荷分散装置はパケット3のIPアドレスを次のように変換してパケット4としてPC1へ転送します。

  • 宛先IP:10.1.1.1
  • 送信元IP:192.168.1.100 (負荷分散装置の仮想IPアドレス)
  • 宛先ポート番号:50000(ランダムポート)
  • 送信元ポート番号:80

このように負荷分散装置では、IPアドレスの変換を行うことでクライアントPCからのWebアクセスを実サーバへ振り分けています。

IPルーティング応用