このトポロジでは、Linux Directorと実サーバーの機能を同じホストにまとめてあるため、2つのノードだけで高可用性と負荷分散が実現されます。各コンポーネントの各コンポーネントの詳細な解説は、概要を参照してください。
以後の文書では、ネットワーク上のすべてのノードが、上図に示すような接続先の各ネットワークの正しいインターフェイスとルートで設定されていることを前提としています。
実サーバは、各仮想サービスに対応する基底のサービスを実行するように設定します。たとえば、HTTP仮想サービスがセットアップされている場合、ApacheなどのHTTPデーモンは、各実サーバで設定する必要があります。また、/etc/ha.d/ldirectord.cfで指定されるrequest URLが存在し、これにreceive文字列が含まれている必要があります。
サーバーは、Linux Directorとして動作しない場合でも、192.168.6.240の仮想アドレスのトラフィックをローカルとみなすよう設定する必要があります。これは、ループバックデバイスでIPエイリアスを使用することで行えます。
/etc/sysconfig/network-scripts/ifcfg-lo:0ファイルは、lo:0インターフェイスの設定に使用します。次に例を示します。
DEVICE=lo:0 IPADDR=192.168.6.240 NETMASK=255.255.255.255 NETWORK=192.168.0.0 BROADCAST=192.168.0.255 ONBOOT=yes NAME=loopback
不必要な警告を表示させないようにするため、ゲートウェイデバイスをethernetインターフェイスに設定してください。/etc/sysconfig/networkの以下の行は、ゲートウェイデバイスをeth0に設定します。
GATEWAYDEV=eth0IPエイリアスを表示するには、ifupコマンドを使用します。
/sbin/ifup lo
lo:0インターフェイスは、/etc/network/interfacesにエントリを追加することで設定できます。loとlo:0インターフェイスを表示する例を次に示します。
auto lo iface lo inet loopback auto lo:0 iface lo:0 inet static address 192.168.6.240 netmask 255.255.255.255 up sysctl -p > /dev/nullIPエイリアスを表示するには、ifupコマンドを使用します。
/sbin/ifup lo:0
/sbin/ifconfig lo:0 Link encap:Local Loopback inet addr:192.168.0.0 Mask:255.255.255.0 UP LOOPBACK RUNNING MTU:3924 Metric:1注意:lo:0インターフェイスの255.255.255.255というネットマスクは、このインターフェイスが192.168.6.240のトラフィックだけを受け付けることを示します。
ループバック・デバイスがARP要求に応えないようにするには、インターフェイスを隠す必要があります。これを実行するには、/etc/sysctl.confに以下の行を追加します。
# 隠しデバイスの設定を有効にする net.ipv4.conf.all.hidden = 1 # ループバック・デバイスを隠す net.ipv4.conf.lo.hidden = 1これらの変更内容は、sysctlコマンドで有効にすることができます。
/sbin/sysctl -p
DebianおよびサポートされているバージョンのRed HatとFedoraでは、ブートアップの順序の問題により、sysctlはインターフェイスが表示される前に呼び出されます。つまり、ループバックインターフェイスで動作する/etc/sysctl.confのエントリが有効にならず、リブート時にインターフェイスが隠されません。
この問題を解決するには、次のコマンドを/etc/rc.d/rc.localに追加します。
if [ -x /sbin/sysctl -a -e /etc/sysctl.conf ]; then echo -n "Hiding loopback interface" /sbin/sysctl -p /etc/sysctl.conf > /dev/null echo fi
Debianでこの問題を解決するには、上記の、lo:0のインターフェイス設定でupを使います。これは、lo:0インターフェイスが起動した後に呼び出されます。Debianのsysctlには、これ以上の設定は必要ありません。
Heartbeatは、2つのLinux Director/実サーバー上で実行され、仮想アドレスのインターフェイスを表示します。これは、エンドユーザの接続先となるべきアドレスであり、通常はDNSによってアドバタイズされます。
heartbeatの /etc/ha.d/ha.cfを設定するには、 /etc/ha.d/haresourcesと /etc/ha.d/authkeysがインストールされている必要があります。 /etc/ha.d/ha.cfと/etc/ha.d/haresources内のノード名は、各Linux Directorでのuname -nコマンドの出力に基づいて設定しなければなりません。/etc/ha.d/authkeysのキーultramonkeyは、外部からはわからないものに変更する必要があります。/etc/ha.d/authkeysはモード600である必要があります。これは、chmodコマンドを使用して設定できます。
chmod 600 /etc/ha.d/authkeys提供されている設定ファイルでは、Linux Directorがeth0を介して接続され、nullモデムによって/dev/ttyS0に接続されていることを前提としています。これは変更可能ですが、Heartbeatは最低でも2つのリンク上で実行することをお勧めします。
実サーバーの監視、および使用可能サーバー・プールへの挿入とプールからの削除は、heartbeatが実行するldirectordで制御されます。ldirectordを設定するには、/etc/ha.d/ldirectord.cfをインストールする必要があります。このファイルのカスタマイズ方法は、ldirectord(8) manページに記載があります。
ldirectordはheartbeatによって実行されます。サポートされているバージョンのRed HatとFedoraでは、to ensure that heartbeatが起動(ランレベル2、3、4、5)し、ldirectordが再起動時に開始しないように、chkconfigコマンドを使います。
/sbin/chkconfig --level 2345 heartbeat on /sbin/chkconfig --del ldirectord
Debianではupdate-rc.dコマンドを使います。
/usr/sbin/update-rc.d heartbeat start 2 3 4 5 . /usr/sbin/update-rc.d -f ldirectord removeldirectordが実行されていないことを確認し、新しい設定でheartbeatを起動するには、次のコマンドを実行します。
/etc/init.d/ldirectord stop /etc/init.d/heartbeat start
しばらくすると、heartbeatは、heartbeatが最初に起動された実サーバー(マスタ)の仮想アドレスのIPエイリアスを表示します。これは、ifconfigコマンドを使って検証できます。このノードでLVSを設定するため、heartbeatはldirectordを実行する必要があります。ldirectordが実行されていることを確認するには、次のコマンドを使用します。
/usr/sbin/ldirectord ldirectord.cf statusipvsadmコマンドを使用して、現在のLVSカーネル・テーブルを調べることができます。次に示す実行例では、すべてのサーバーが利用可能であることがldirectordによって確認されています。ダイレクト・ルーティング(DR)を使用している場合、ポート21のFTP仮想サービスが持続することに注意してください。
/sbin/ipvsadm -L -n Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.28.6.240:443 rr -> 192.28.6.2:443 Route 1 0 0 -> 192.28.6.3:443 Route 1 0 0 -> 192.28.6.6:443 Route 1 0 0 TCP 192.28.6.240:80 rr -> 192.28.6.2:80 Route 1 0 0 -> 192.28.6.3:80 Route 1 0 0 -> 192.28.6.6:80 Route 1 0 0 TCP 192.28.6.240:21 rr persistent 600 -> 192.28.6.2:21 Route 1 0 0 -> 192.28.6.3:21 Route 1 0 0 -> 192.28.6.6:21 Route 1 0 0別のサーバーがスタンバイになり、マスタのheartbeatを次のコマンドで停止することでフェイルオーバーが実行されます。
/etc/init.d/heartbeat stopheartbeatとldirectordは、syslogを利用して、デバッグ情報と状態情報を/var/log/messagesにログ記録します。問題が発生したときはこれらのログを調べてください。デバッグのために、すべてのログがディスクに書き込まれたことを確認するには、ロギングに関するメモを参照してください。
Linux Director/実サーバのデフォルトのルートは、いずれかのLinux Directorのアドレスではなく、ネットワーク上のゲートウェイ・ルータのアドレスに設定する必要があります。
サーバ・ネットワーク上のアドレスが192.168.6.1である、単独のゲートウェイの単純なケースを例に取ると、192.168.6.0/24に接続されているインターフェイスのインターフェイス設定で指定されたGATEWAYを編集することでこれを行うことができます。eth0の場合、これは/etc/sysconfig/network-scripts/ifcfg-eth0ファイルです。このファイルの例を次に示します。
DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.6.2 NETMASK=255.255.255.0 GATEWAY=192.168.6.1
これを有効にするには、networkを再起動します。
/etc/init.d/network restart Shutting down interface eth0 [ OK ] Setting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ]
auto eth0 iface eth0 inet static address 192.168.6.2 netmask 255.255.255.0 gateway 192.168.6.1
これを有効にするには、networkingを再起動します。
/etc/init.d/networking restart Reconfiguring network interfaces: done.
/sbin/ip route show 0/0 default via 192.168.6.1 dev eth0
Copyright © 2000-2004,
Horms
Last Updated: Thu Feb 5 15:38:28 2004 +0900
Debian is a registered trademark of Software in the Public Interest, Inc.
Red Hat, the Red Hat Shadowman logo and Fedora are registered trademarks of Red
Hat, Inc.
Linux is a registered trademark of Linus Torvalds.
All other trademarks are the property of their respective owners.