はじめに
前回は、heartbeatに付属しているldirectordを使ってmasquerading型の負荷分散システムを構築するための方法について解説しました。今回はgatewaying型の負荷分散システムについて解説します。
以下の図は、今回LVSのgatewayingを使って構築する負荷分散システムのイメージです。
前回のmasqueradingの構成では、負荷分散サーバをルータのように使用していました。よって、サービスを提供するWWWサーバについては、負荷分散サーバとは別のネットワークを作成し、そちらに配置してあげる必要がありました。一方、今回の構成では負荷分散サーバとWWWサーバは同じネットワーク内に並列に配置されています。すでにWWWサーバがある場合には、その設定を少し変更するだけで負荷分散システムに移行することが可能です。
実サーバの設定
gatewaying型の構成では、実サーバにサービス用のIPアドレスがそのまま転送されます。そのため、実サーバでは自サーバのものではないIPアドレスを受け取って処理を行うように設定する必要があります。実サーバがNetfilterをサポートしたLinuxである場合、iptablesを使って簡単に設定を行うことができます。
# iptables -t nat -A PREROUTING -p tcp -m tcp -d 172.16.10.5 --dport 80 -j REDIRECT --to-ports 80
各オプションには次のように意味があります。
- -t nat
NATチェインにルールを設定します。
- -A PREROUTING
パケットを処理する前の段階でNATを実施します。
- -d 172.16.10.5 --dport 80
代表IPアドレスである172.168.10.5のポート80へのパケットを、処理対象とします。
- -j REDIRECT --to-ports 80
自サーバの80番ポートへNATを掛けて転送します。
ところで、このiptablesの設定は再起動すると失われてしまいます。毎回起動時に自動的に設定を有効化したい場合は、各システムのiptablesの自動起動設定への追加を行う必要があります。