Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3.2. ダイレクト Routing 経由の LVS

As mentioned in 「ダイレクト Routing」, direct routing allows real servers to process and route packets directly to a requesting user rather than passing outgoing packets through the LVS router. Direct routing requires that the real servers be physically connected to a network segment with the LVS router and be able to process and direct outgoing packets as well.
ネットワークレイアウト
ダイレクト routing LVS のセットアップでは、LVS router は来信の要求を受け取り、それらを 処理の為に正しい実サーバーに回送する必要があります。実サーバーはそれから、その反応を 直接クライアントに回送しなければなりません。その例として、 クライアントがインターネット上に存在し、パケットを LVS router を通じて実サーバーに 送った場合、実サーバーはインターネットを通じて直接クライアントに到達できる必要が あります。これは、実サーバー用のゲートウェイがインターネットへパケットを送るように 設定することで達成できます。サーバー群の各実サーバーは独自の個別ゲートウェイ(及び、 各ゲートウェイがインターネットへの独自接続を持つ)を持つことが出来るため、最大の 処理能力と拡張性が可能になります。しかし、標準的な LVS 設定では、実サーバーは1つの ゲートウェイ(故に、1つのネットワーク接続)を通じて通信します。

重要

LVS router を実サーバーの為のゲートウェイとして使用することは推薦できません。 そのように使用した場合は、LVS router に不要な複雑性とネットワーク負荷を追加してしまい、それが NAT routing 内に存在するようなネットワークの問題点ネックを再導入してしまいます。
ハードウェア
ダイレクト routing を使用した LVS システムのハードウェア要件は、他の LVS トポロジーに 似ています。LVS router は来信する要求を処理する為に Red Hat Enterprise Linux を実行していて、 実サーバー用にロードバランシングを実行する必要がありますが、実サーバーは 正常に機能するかぎりは、Linux マシンである必要はありません。LVS router はそれぞれが 1つ、又は2つの NIC を必要とします。(バックアップ router の有無により決定)各設定用に 2つの NIC を使用し、完全にトラフィックを分割することが可能です。— 1 つの NIC で 来信要求を処理して、実サーバーへのパケット回送は2つめの NIC に任せることが出来ます。
実サーバーは LVS router を迂回して、出向くパケットを直接クライアントに送信するため、 インターネットへのゲートウェイが必要となります。最大パフォーマンスと可用性のためには、 各実サーバーはそれぞれ独自のゲートウェイに接続して、そのゲートウェイが更に独自にクライアントの接続されているキャリヤーネットワーク(インターネットやイントラネット)に接続するようにします。
ソフトウェア
There is some configuration outside of Piranha Configuration Tool that needs to be done, especially for administrators facing ARP issues when using LVS via direct routing. Refer to 「ダイレクト Routing 及び arptables_jf or 「ダイレクト Routing 及び iptables for more information.

3.2.1. ダイレクト Routing 及び arptables_jf

In order to configure direct routing using arptables_jf, each real server must have their virtual IP address configured, so they can directly route packets. ARP requests for the VIP are ignored entirely by the real servers, and any ARP packets that might otherwise be sent containing the VIPs are mangled to contain the real server's IP instead of the VIPs.
arptables_jf メソッドを使用すると、アプリケーションは 実サーバーがサービスをしている各個別の VIP 又は、ポートにバインドすることができます。 例えば、arptables_jf メソッドの使用により、Apache HTTP Server の複数のインスタンスは、システム上の異なる VIP に明示的にバインドして実行することができます。また、arptables_jf の使用には、iptables オプション以上の明確なパフォーマンス利点があります。
しかし、arptables_jf メソッドの使用では、VIP は。標準の Red Hat Enterprise Linux システム設定ツールを使用した起動時の開始が設定できません。
それぞれの仮想 IP アドレスの為の ARP 要求を無視するように 各実サーバーを設定するには、 以下の手順を実行します:
  1. 各実サーバー上で各仮想 IP アドレス用に ARP 表のエントリを作成します( real_ip とは実サーバーと通信するためにディレクタが使用する IP、多くの場合、これは eth0 にバインドされた IP ):
    arptables -A IN -d <virtual_ip> -j DROP
    arptables -A OUT -s <virtual_ip> -j mangle --mangle-ip-s <real_ip>
    
    これは実サーバーが仮想 IP アドレス用の全ての ARP 要求を無視するようにして、他の方法では、 仮想 IP を含むはずの出向する ARP 反応を変化させて、それらが代わりにサーバー用の実 IP を含むようになります。いずれかの VIP 用の ARP 要求に反応すべき唯一のノードは現在 アクティブな LVS ノードです。
  2. これが各実サーバー上で完了すると、実サーバー上で以下のコマンドを入力して ARP 表のエントリを保存します:
    service arptables_jf save
    chkconfig --level 2345 arptables_jf on
    chkconfig コマンドは システムが起動時に — ネットワークが開始する前にarptables 設定をリロードするようにします。
  3. ifconfig を使用して実サーバー上で仮想 IP アドレスを設定し、 IP エイリアスを作成します。例えば:
    # ifconfig eth0:1 192.168.76.24 netmask 255.255.252.0 broadcast 192.168.79.255 up
    又は、iproute2 のユーティリティ ip を使用します。 例えば:
    # ip addr add 192.168.76.24 dev eth0
    以前に記述してあるように、仮想 IP アドレスは、Red Hat システム設定ツールを使用しては、 起動時に開始するように設定はできません。この問題を迂回する1つの手段は /etc/rc.d/rc.local 内にこららのコマンドを配置することです
  4. Configure Piranha for Direct Routing. Refer to 4章Piranha Configuration Tool で LVS Router を設定 for more information.