Red Hat Training

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

3.2. ダイレクトルーティングを使った Load Balancer Add-On

「ダイレクトルーティング」 で記載しているように、ダイレクトルーティングでは実サーバーがパケットを処理した後、発信パケットを LVS ルーター経由でルーティングするのではなく、実サーバーが直接、要求元のユーザーにルーティングすることができます。ダイレクトルーティングの場合、実サーバーが LVS ルーターのあるネットワークセグメントに物理的に接続され、発信パケットの処理とルーティングができなければなりません。
ネットワークレイアウト
ダイレクトルーティングを使った Load Balancer Add-On では、LVS ルーターが着信要求を受け取り、それらを処理のために適切な実サーバーにルーティングする必要があります。次に実サーバーがその応答を 直接、クライアントにルーティングする必要があります。例えば、クライアントがインターネット上に存在し、パケットを LVS ルーター経由で実サーバーに送信した場合、実サーバーはインターネット経由で直接クライアントに到達できる必要があります。実サーバーにゲートウェイを設定しパケットをインターネットに渡すことでこれを実現します。サーバープール内の各実サーバーには別々のゲートウェイ (また各ゲートウェイにはインターネットへの接続がある) を持たせることができるため、最大限のスループットとスケーラビリティを実現できます。ただし、標準的な Load Balancer Add-On 設定の場合、複数の実サーバーは1つの ゲートウェイで通信することができます (したがってネットワーク接続も 1 つ)。

重要

LVS ルーターを実サーバーのゲートウェイとして使用することは 推奨されません。そのような使用方法では、LVS ルーターに不要な設定の複雑性とネットワーク負荷を追加することになり、NAT ルーティングにみられるネットワークのボトルネックを戻すことになってしまいます。
ハードウェア
ダイレクトルーティング使用の Load Balancer Add-On システムでのハードウェア要件は、他の Load Balancer Add-On トポロジーと同様のものです。LVS ルーターが着信要求を処理して実サーバー用にロードバランシングを実行するには Red Hat Enterprise Linux の稼働を必要としますが、実サーバーが正常に機能するには Linux マシンである必要はありません。LVS ルーターはそれぞれ 1 つまたは 2 つの NIC を必要とします (バックアップルーターの有無による)。設定を容易にしてトラフィックを明確に分けるために、2 つの NIC を使用することもできます。こうすると、1 つの NIC で着信要求を処理し、実サーバーへのパケット回送はもうひとつの NIC に任せることができます。
実サーバーは LVS ルーターを迂回して送信パケットを直接クライアントに送信するため、インターネットへのゲートウェイが必要となります。パフォーマンスと可用性を最大化するには、クライアントが接続しているキャリアネットワーク (インターネットやイントラネットなど) に専用接続がある独自のゲートウェイに実サーバーを接続します。
ソフトウェア
ダイレクトルーティングで Load Balancer Add-On を使用していて ARP 問題に直面している管理者には特に、 Piranha Configuration Tool の範囲外で必要な設定があります。 詳細情報は、「ダイレクトルーティングおよび arptables_jf または 「ダイレクトルーティングと iptables を参照してください。

3.2.1. ダイレクトルーティングおよび arptables_jf

arptables_jf を使用してダイレクトルーティングを設定するには、実サーバーでそれらの仮想 IP アドレスが設定されており、パケットが直接送信で可能となっている必要があります。VIP 用の ARP 要求は実サーバーでは完全に無視されます。そ例外の、VIP を含んでいて送信される ARP パケットは、mangle 化されて VIP ではなく実サーバーの IP が含まれるようになります。
arptables_jf メソッドを使用すると、アプリケーションは実サーバーが接続している個別の VIP またはポートにバインドします。例えば、arptables_jf メソッドの使用により、Apache HTTP Server の複数のインスタンスはシステム上の異なる VIP に明示的にバインドして実行することが可能になります。また、arptables_jf の使用は、iptables オプションよりもパフォーマンスで大きな利点があります。
しかし、arptables_jf メソッドを使うと、標準の Red Hat Enterprise Linux システム設定ツールを使用して起動時に VIP を開始する設定ができません。
それぞれの仮想 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. ダイレクトルーティング用に Piranha を設定します。詳細情報は 4章Piranha Configuration Tool を使った Load Balancer Add-Onの設定 を参照してください。