3.2.2. ダイレクトルーティングと iptables
iptables
ファイアウォールルールを作成することで、 ダイレクトルーティングメソッドを使用した場合の ARP 問題を回避することもできます。iptables
を使用してダイレクトルーティングを設定するには、VIP アドレスがシステム上に存在しなくても VIP アドレスに送信されたパケットを実サーバーが扱うように透過プロキシを作成するルールを追加する必要があります。
iptables
メソッドは arptables_jf
メソッドよりも 設定が簡単です。仮想 IP アドレスがアクティブ LVS ディレクタ上にのみ存在するため、このメソッドでは LVS ARP 問題も完全に回避できます。
しかし、パケットの転送/マスカレードでのオーバーヘッドがあるため、
arptables_jf
と比較すると、iptables
メソッドの使用にはパフォーマンスの問題があります。
また、
iptables
メソッドを使用してポートを再利用することはできません。例えば、二つの別々の Apache HTTP Server サービスは 両方とも仮想 IP アドレスではなく INADDR_ANY
にバインドする必要があるため、ポート 80 にバインドされた二つの別々の Apache HTTP Server サービスを実行することはできません。
iptables
メソッドを使用してダイレクトルーティングを設定するには、以下の手順を実行します。
- 実サーバーでの実行が意図された 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
設定をリロードします。