3.2.2. ダイレクト Routing 及び iptables
iptables
ファイアウォールルールを作成することにより、 ダイレクト routing メソッドを使用して ARP 問題を迂回することも出来ます。iptables
を使用してダイレクト routing を設定するには、 VIP アドレスがシステム上に存在しなくても VIP アドレスに送信されたパケットを実サーバーが サービスするように透過的なプロキシーを作成するルールを追加する必要があります。
iptables
メソッドは arptables_jf
メソッドよりも 設定が 簡単です。仮想 IP アドレスがアクティブ LVS ディレクタ上にのみ存在するため、 このメソッドでは LVS ARP 問題も完全に回避します。
しかし、各パケットの転送/マスカレードでのオーバーヘッドがあるため、
arptables_jf
に 比較すると、iptables
メソッドの 使用にはパフォーマンス問題があります。
また、
iptables
メソッドを使用してポートの再使用は出来ません。例えば、二つの別々の Apache HTTP Server サービスは 両方共、仮想 IP アドレスではなく、INADDR_ANY
にバインドする必要があるため、ポート 80 にバインドされた二つの別々の Apache HTTP Server サービスは稼働できません。
iptables
メソッドを使用してダイレクト routing を設定するには、以下の手順を 実行します:
- 各実サーバー上で、実サーバーの為に意図されたサービスの VIP 、ポート、プロトコル(TCP か UDP)の 全ての組み合わせ用に以下のコマンドを実行します:
iptables -t nat -A PREROUTING -p <tcp|udp> -d <vip> --dport <port> -j REDIRECT
このコマンドは実サーバーが VIP とその与えられたポートを目的地としたパケットを処理するように します。 - 各実サーバー上で設定を保存します:
#
service iptables save
#chkconfig --level 2345 iptables on
上記のコマンドは、システムが起動時に — ネットワークが開始する前に、iptables
設定を リロードするようにします。