第3章 Keepalived のロードバランサー要件の設定
keepalived
を使用するロードバランサーは、LVS ルーターと実サーバーの 2 つの基本グループで構成されます。単一障害点を回避するため、各グループに 2 つ以上のメンバーが含まれるようにしてください。
LVS ルーターグループは、Red Hat Enterprise Linux を実行している同一または非常に似ている 2 つのシステムで設定する必要があります。そのうちの 1 つはアクティブ LVS ルーターとして機能し、もう 1 つはホットスタンバイモードで待機するので、この 2 つができるだけ同じ機能を備えている必要があります。
実際のサーバーグループのハードウェアを選択および設定する前に、3 つのロードバランサートポロジーのどれを使用するかを決定します。
3.1. NAT ロードバランサーネットワーク
NAT トポロジーを使用すると、既存のハードウェアを柔軟に活用できますが、プールから送受信されるすべてのパケットはロードバランサールーターを通過するため、大量の負荷を処理する機能が制限されます。
- ネットワークレイアウト
- NAT ルーティングを使用するロードバランサーのトポロジーは、パブリックネットワークへのアクセスポイントが 1 つのみ必要なため、ネットワークレイアウトの観点から見ると最も設定が簡単です。実サーバーはプライベートネットワーク上にあり、LVS ルーター経由ですべての要求を返します。
- ハードウェア
- NAT トポロジーでは、実サーバーは LVS ルーターのみに応答するため、実サーバーごとに 1 つの NIC のみが必要になります。一方で LVS ルーターは 2 つのネットワークの間でトラフィックを送信するため、NIC が 2 つずつ必要になります。このトポロジーでは LVS ルーターの部分がネットワークのボトルネックとなるため、ギガビットイーサネット NIC を LVS ルーターで使うことで、LVS ルーターが処理可能な帯域幅を拡げることができます。ギガビットイーサネットを LVS ルーターで使用する場合は、実サーバーを LVS ルーターに接続しているスイッチは、負荷を効率的に処理するために少なくとも 2 つのギガビットイーサネットポートが必要になります。
- ソフトウェア
- NAT トポロジーでは、設定によっては iptables を使用する必要があるため、Keepalived 外部で多くのソフトウェアを設定する場合があります。特に、FTP サービスやファイアウォールマークを使用する場合は、要求を適切にルーティングするために LVS ルーターを追加で手動設定する必要があります。
3.1.1. NAT を使用するロードバランサーのネットワークインターフェイス設定
NAT を使用するロードバランサーを設定するには、最初に LVS ルーターのパブリックネットワークとプライベートネットワークのネットワークインターフェイスを設定する必要があります。この例では、LVS ルーターのパブリックインターフェイス (
eth0
) を 203.0.113.0/24 ネットワークに設定し、実サーバーにリンクするプライベートインターフェイス (eth1
) を 10.11.12.0/24 ネットワークに設定します。
重要
このドキュメントの執筆時点では NetworkManager サービスはロードバランサーに対応していません。IPv6 アドレスが SLAAC に割り当てられた場合、IPv6 VIP は動作しないことが判明しています。そのため、この例では設定ファイルと network サービスを使用します。
アクティブもしくは プライマリー LVS ルーターノードでは、パブリックインターフェイスのネットワーク設定ファイルである
/etc/sysconfig/network-scripts/ifcfg-eth0
は以下のようになります。
DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=203.0.113.9 NETMASK=255.255.255.0 GATEWAY=203.0.113.254
LVS ルーター上のプライベート NAT インターフェイスの
/etc/sysconfig/network-scripts/ifcfg-eth1
設定ファイルは、以下のようになります。
DEVICE=eth1 BOOTPROTO=static ONBOOT=yes IPADDR=10.11.12.9 NETMASK=255.255.255.0
仮想 IP アドレスは静的アドレスとは異なりますが、同じ範囲内である必要があります。この例では、LVS ルーターのパブリックインターフェイスの仮想 IP アドレスは 203.0.113.10 に設定でき、プライベートインターフェイスの仮想 IP アドレスは 10.11.12.10 に設定できます。仮想 IP アドレスは、
/etc/keepalived/keepalived.conf
ファイルの virtual_ipaddress
オプションによって設定されます。詳細は、「基本的な Keepalived の設定」 を参照してください。
また、実サーバーが要求を NAT インターフェイスの仮想 IP アドレスにルーティングして返すことも確認します。
重要
本項のイーサネットインターフェイス設定の例は、LVS ルーターのリアル IP アドレス向けの例で、フローティング IP アドレス向けの例ではありません。
プライマリー LVS ルーターノードのネットワークインターフェイスを設定した後、バックアップ LVS ルーターの実ネットワークインターフェイスを設定します。IP アドレスがネットワーク上の他の IP アドレスと競合しないように注意してください。
重要
バックアップノード上の各インターフェイスが、プライマリーノード上のインターフェイスと同じネットワークに対応するようにしてください。たとえば、 eth0 プライマリーノード上でパブリックネットワークに接続する場合、バックアップノードでもパブリックネットワークに接続するようにする必要があります。
3.1.2. 実サーバー上でのルーティング
NAT トポロジーで実サーバーネットワークインターフェイスを設定する場合に最も重要なのは、LVS ルーターの NAT フローティング IP アドレス用にゲートウェイを設定することです。この例では、ゲートウェイのアドレスは 10.11.12.10 となります。
注記
実サーバー上でのネットワークインターフェイス設定が完了すると、マシンは他の方法でパブリックネットワークに ping したり接続したりすることができなくなります。これは正常なことです。しかし、LVS ルーターのプライベートインターフェイスの実 IP (この場合は 10.11.12.9) に ping することはできます。
実サーバーの
/etc/sysconfig/network-scripts/ifcfg-eth0
設定ファイルは以下のようになります。
DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=10.11.12.1 NETMASK=255.255.255.0 GATEWAY=10.11.12.10
警告
GATEWAY=
行で実サーバーに複数のネットワークインターフェイスが設定されている場合、最初に起動したネットワークインターフェイスがゲートウェイを取得します。そのため、eth0
と eth1
の両方が設定され、eth1
がロードバランサーに使用されている場合、実サーバーは要求を適切にルーティングしないことがあります。
/etc/sysconfig/network-scripts/
ディレクトリー内のネットワーク設定ファイルで ONBOOT=no
と設定するか、最初に表示されるインターフェイスでゲートウェイを適切に設定して、外部のネットワークインターフェイスをオフにすることが推奨されます。
3.1.3. LVS ルーターでの NAT ルーティングの有効化
クラスター化されたサービスが 1 つのポート (例: ポート 80 の HTTP) のみを使用する簡単な NAT ロードバランサー設定の場合、LVS ルーター上でパケット転送のみを有効にすれば実サーバーとその外部との間で適切に要求をルーティングできます。しかし、ユーザーセッション中に同じ実サーバーに移動するため、クラスター化されたサービスが複数のポートを必要とする場合は、他の設定が必要になります。
LVS ルーターで転送が有効になり、実サーバーがセットアップされ、クラスター化されたサービスが稼働したら、
keepalived
を使用して IP の情報を設定します。
警告
手作業でネットワーク設定ファイルを編集したり、ネットワーク設定ツールを使用したりして
eth0
または eth1
のフローティング IP を設定しないでください。必ず keepalived.conf
ファイルで設定してください。
設定が終了したら、
keepalived
サービスを開始します。サービスの稼働後、アクティブ LVS ルーターは要求を実サーバーのプールへルーティングします。