マルチポートLVSサービスを作成する場合、すべてのトポロジでLVSルータに追加の設定が必要になります。マルチポートサービスは、ファイアウォールマークを使って、たとえばHTTP(ポート80)とHTTPS(ポート443)など、複数の異なるプロトコルで関連性のあるものを人為的にバンドルすることにより、作成されます。あるいは、FTPなど真にマルチポートのプロトコルをクラスタ処理するためにLVSを使用する場合に、マルチポートサービスが行われます。どちらの場合でも、LVSルータはファイアウォールマークを使って、異なるポート宛てのパケットを認識しますが、同じファイアウォールマークが付いている場合には、同一のものとして処理します。また、パーシステンスと組み合わせた場合、ファイアウォールマークは、パーシステンスパラメータに指定されている期間内に行われたクライアントマシンからの接続については、同じホストにルーティングします。仮想サーバに対するパーシステンスの指定に関する詳細は、項12.6.1を参照してください。
残念ながら、リアルサーバ(IPVS)間の負荷を調整する機構は、パケットに指定されているファイアウォールマークを認識することはできますが、それ自体がファイアウォールマークを指定することはできません。 ファイアウォールマークを指定するジョブは、 ネットワークフィルターのiptablesにより、 Piranha 設定ツールの外部で実行する必要があります。
ファイアウォールマークを、特定のポート宛のパケットに指定するには、 管理者がiptablesを使用する必要があります。
クラスタ処理が一般に行われるマルチポートプロトコルの一例としてFTPがありますが、ここでは例として、HTTPとHTTPSをバンドルする方法を説明します。FTPサービス用のLVSクラスタでの最適なクラスタ設定の詳細については、項11.4を参照してください。
ファイアウォールマークを使用する際に覚えておくべき基本ルールは、Piranha 設定ツール内でファイアウォールマークを使用するすべてのプロトコルについて、マークをネットワークパケットに指定するには 相応のiptablesルールが必要であるということです。
ネットワークパケットフィルタールールの作成に着手する前に、すでに使われているルールがないか確認してください。確認するには、rootユーザーでログインして、以下のコマンドを入力します。
/sbin/service iptables status |
iptablesが稼働していない場合は、プロンプトが直ちに再表示されます。
iptablesがアクティブなら、ルールセットを表示します。 ルールが存在する場合、次のコマンドを入力します。
/sbin/service iptables stop |
すでに使用されているルールが重要である場合、作業を始める前に、/etc/sysconfig/iptablesの内容を確認し、 重要なルールを安全な場所にコピーしておいてください。
以下に示すのは、 浮動IPアドレスn.n.n.n宛のポート番号80とポート番号443上の着信トラフィックに、同じファイアウォールマーク80を指定するルールです。公衆ネットワークインターフェイスにVIPを指定する方法に関する説明は、項12.6.1を参照してください。また、初めてルールを発行する前に、rootユーザーでログインして、 iptablesのモジュールをロードする必要があることに注意してください。
/sbin/modprobe ip_tables /sbin/iptables -t mangle -A PREROUTING -p tcp \ -d n.n.n.n/32 --dport 80 -j MARK --set-mark 80 /sbin/iptables -t mangle-A PREROUTING -p tcp \ -d n.n.n.n/32 --dport 443 -j MARK --set-mark 80 |
上記のiptablesコマンドで、n.n.n.nは、 HTTPとHTTPSの仮想サーバの浮動IPアドレスに置き換えてください。これらのコマンドは、VIP宛の該当するポート番号上のすべてのトラフィックにファイアウォールマーク80を指定し、その結果としてIPVSによって認識され、適切に転送されるようにする効果があります。
![]() | 警告 |
---|---|
上記のコマンドは直ちに反映されますが、システムのリブート後は保持されません。リブート後もネットワークパケットフィルター設定が復元されるようにするには、項11.5を参照してください。 |