1.4.2. ダイレクトルーティング
ダイレクトルーティングを使用する Load Balancer Add-On 設定を構築すると、他の Load Balancer Add-On のネットワークトポロジーよりもパフォーマンス性が高くなります。発信パケットを LVS ルーター経由で渡すのではなく、実サーバーでパケットを処理、要求元のユーザーに直接ルーティングすることができます。ダイレクトルーティングは、LVS ルーターのジョブを着信パケットの処理だけに特化させることで、ネットワークパフォーマンスの問題が発生する可能性を低減します。
図1.4 ダイレクトルーティングで実装した Load Balancer Add-On
一般的なダイレクトルーティングによる Load Balancer Add-On の設定では、LVS ルーターは仮想 IP (VIP) を使って着信サーバー要求を受け取り、スケジューリングアルゴリズムを使用してこの要求を実サーバーにルーティングします。実サーバーはこの要求を処理すると LVS ルーターを迂回して直接クライアントに応答を送信します。実サーバーからクライアントへの発信パケットのルーティングを LVS ルーターに行わせると、ネットワーク負荷が高い環境ではボトルネックとなる可能性があります。ダイレクトルーティングメソッドの場合には、この負担を LVS ルーターにかけることなく実サーバーを追加できるという拡張性を備えています。
1.4.2.1. ダイレクトルーティングと ARP 制限
Load Balancer Add-On でダイレクトルーティングを使用すると役に立つ利点が多くありますが、一方で制限もあります。ダイレクトルーティングでの Load Balancer Add-On に関する最も一般的な問題として アドレス解決プロトコル (ARP) に関する問題があります。
インターフェース上のクライアントは要求を IP アドレスに送信します。ネットワークルーターは ARP を使って IP アドレスをマシンの MAC アドレスに関連付けることで要求を宛先に送信します。ARP 要求がネットワークに接続されているすべてのマシンにブロードキャストされ、IP アドレスと MAC アドレスの正しい組み合わせを持つマシンがパケットを受け取ることになります。IP と MAC の関連性は ARP キャッシュに保存され、定期的に消去と再保存が行われます (通常 15 分ごと)。
任意の IP アドレスに送信されるクライアント要求はそれを処理する MAC アドレスに関連付けられなければなりません。Load Balancer Add-Onシステムの仮想 IP アドレスも MAC アドレスに関連付けなければなりません。これがダイレクトルーティングによる Load Balancer Add-On 設定での ARP 要求で問題になります。LVS ルーターと実サーバーはいずれも同じ VIP が与えられているため、ARP 要求はこの VIP に関連付けられているマシンすべてに対してブロードキャストされます。このため、VIP が実サーバーのいずれか 1 台に直接関連付けられてしまい要求を直接処理してしまったり、LVS ルーターを完全に迂回してしまい Load Balancer Add-Onを設定している意味がなくなってしまうなどの問題の原因となることがあります。
この問題を解決するには、着信要求が実サーバーではなく、必ず LVS ルーターに送信されるようにすることです。
arptables_jf
または iptables
パケットフィルタリングツールを使用すると以下の理由でこれを行うことができます。
arptables_jf
は ARP が VIP と実サーバーを関連付けないようにします。iptables
メソッドの場合、実サーバー上での VIP 設定はまったく行わないため ARP に関する問題を完全回避することができます。
ダイレクトルーティングによる Load Balancer Add-On 環境で
arptables
や iptables
を使用する方法については 「ダイレクトルーティングおよび arptables_jf
」 または 「ダイレクトルーティングと iptables
」 を参照してください。