3.4. マルチポートサービスとロードバランサー


マルチポートのロードバランサーサービスを作成する場合、LVS ルーターはどのトポロジーでも追加の設定が必要になります。HTTP (ポート 80) および HTTPS (ポート 443) などの異なる関連するプロトコルをバンドル化するファイアウォールマークを使用したり、FTP などの実際のマルチポートプロトコルを用いてロードバランサーを使用したりする場合、マルチポートサービスは人為的に作成されます。どちらの場合でも、LVS ルーターはファイアウォールマークを使用して異なるポートに送信されるパケットを認識しますが、同じファイアマークが付けられているため同様に処理する必要があります。また、ファイアウォールマークを永続性と組み合わせると、永続性パラメーターによって指定された期間内に接続が発生する限り、クライアントマシンからの接続は同じホストへルーティングされます。
実サーバー上で負荷を分散するために使用されるメカニズムである IPVS は、パケットに割り当てられたファイアウォールマークを認識しますが、IPVS 自体はファイアウォールを割り当てできません。ファイアウォールマークの 割り当て は、ネットワークパケットフィルターである iptables が行う必要があります。Red Hat Enterprise Linux 7 のデフォルトのファイアウォール管理ツールは、firewalld で、iptables の設定に使用できます。iptables を直接使用することもできます。Red Hat Enterprise Linux 7 で iptables を使用する方法については、Red Hat Enterprise Linux 7 セキュリティーガイド を参照してください。

3.4.1. firewalld を使用したファイアウォールマークの割り当て

管理者は firewalldfirewall-cmd ユーティリティーを使用して、特定のポートに送信されるパケットにファイアウォールマークを割り当てることができます。
必要に応じて、firewalld が実行されていることを確認します。
# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
   Active: active (running) since Tue 2016-01-26 05:23:53 EST; 7h ago
firewalld を開始するには、以下を入力します。
# systemctl start firewalld
システム起動時に firewalld が有効な状態で開始するようにするには、以下を実行します。
# systemctl enable firewalld
ここでは、HTTP と HTTPS をバンドルする方法を例を用いて説明しますが、FTP も一般的に使用されるクラスター化されたマルチポートプロトコルです。
ファイアウォールマークを使用する場合の基本ルールとして、Keepalived でファイアウォールマークを使用する各プロトコルには、ファイアウォールマークをネットワークパケットに割り当てるための同等のファイアウォールルールが必要になります。
ネットワークパケットのフィルタールールを作成する前に、すでに他のルールが存在しないか確認します。これを行うには、シェルプロンプトを開いて、root でログインして以下のコマンドを実行します。
# firewall-cmd --list-rich-rules
リッチルールが存在しない場合は、プロンプトがすぐに再表示されます。
firewalld がアクティブでリッチルールが存在する場合は、ルールのセットが表示されます。
すでに存在するルールが重要である場合は、/etc/firewalld/zones/ の内容をチェックし、維持するルールを安全な場所にコピーしてから手順を続行します。次の形式のコマンドを使用して、不要なリッチルールを削除します。
firewall-cmd --zone=zone --remove-rich-rule='rule' --permanent
--permanent オプションは設定を永続化しますが、コマンドは次回のシステム起動時にのみ有効になります。設定を即座に反映する必要がある場合は、--permanent オプションを省略してコマンドを繰り返し実行します。
最初に設定するロードバランサーに関連するファイアウォールルールは、Keepalived サービスの VRRP トラフィックを許可します。ターミナルで以下のコマンドを入力します。
# firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
ゾーンを省略すると、デフォルトのゾーンが使用されます。
以下のルールは、ファイアウォールマーク 80 をポート 80 および 443 上でフローティング IP アドレス n.n.n.n が宛先となる受信トラフィックに割り当てます。
# firewall-cmd --add-rich-rule='rule family="ipv4" destination address="n.n.n.n/32" port port="80" protocol="tcp" mark set="80"' --permanent
# firewall-cmd --add-rich-rule='rule family="ipv4" destination address="n.n.n.n/32" port port="443" protocol="tcp" mark set="80"' --permanent
# firewall-cmd --reload
success
# firewall-cmd --list-rich-rules
rule protocol value="vrrp" accept
rule family="ipv4" destination address="n.n.n.n/32" port port="80" protocol="tcp" mark set=80
rule family="ipv4" destination address="n.n.n.n/32" port port="443" protocol="tcp" mark set=80
ゾーンを省略すると、デフォルトのゾーンが使用されます。
firewalld のリッチ言語コマンドの使用に関する詳細は、Red Hat Enterprise Linux 7 セキュリティーガイド を参照してください。

3.4.2. iptables を使用したファイアウォールマークの割り当て

特定ポート宛のパケットにファイアウォールマークを割り当てる場合、管理者は iptables を使用できます。
ここでは、HTTP と HTTPS をバンドルする方法を例を用いて説明しますが、FTP も一般的に使用されるクラスター化されたマルチポートプロトコルです。
ファイアウォールマークを使用する場合の基本ルールとして、Keepalived でファイアウォールマークを使用する各プロトコルには、ファイアウォールマークをネットワークパケットに割り当てるための同等のファイアウォールルールが必要になります。
ネットワークパケットのフィルタールールを作成する前に、すでに他のルールが存在しないか確認します。これを行うには、シェルプロンプトを開いて、root でログインして以下のコマンドを実行します。
/usr/sbin/service iptables status
iptables が実行されていない場合、すぐにプロンプトが再出現します。
iptables がアクティブな場合は、一連のルールが表示されます。ルールが存在する場合は、以下のコマンドを実行します。
/sbin/service iptables stop
すでに存在するルールが重要である場合は、/etc/sysconfig/iptables の内容をチェックし、維持するルールを安全な場所にコピーしてから手順を続行します。
ファイアウォールルールの設定に関連する最初のロードバランサーは、Keepalived サービスの VRRP トラフィックを許可します。
/usr/sbin/iptables -I INPUT -p vrrp -j ACCEPT
以下のルールは、ファイアウォールマーク 80 をポート 80 および 443 上でフローティング IP アドレス n.n.n.n が宛先となる受信トラフィックに割り当てます。
/usr/sbin/iptables -t mangle -A PREROUTING -p tcp -d n.n.n.n/32 -m multiport --dports 80,443 -j MARK --set-mark 80
初めてルールを発行する前に、root としてログインし、iptables のモジュールをロードする必要があります。
上述の iptables コマンドの n.n.n.n は、使用中の HTTP および HTTPS 仮想サーバーのフローティング IP で置き換える必要があります。これらのコマンドは、該当するポート上の VIP が送信先となっている全トラフィックをファイアウォールマーク 80 に割り当てることと同様の効果があります。これが IPVS に認識され、適切に転送されます。
警告
上記のコマンドは即座に有効になりますが、システムを再起動すると保持されません。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.