IP Network Multipathing を使う |
|
Solaris8 の 10/00 より前では、ネットワークインターフェースを二重化するには、自分たちで ping などを使ってシェルを作って監視したり、ベンダから出ている製品を利用するしか方法はありませんでした。 しかし、Solaris8 10/00 から IP Network Multipathing という機能が加わり、自分がつながっている最初の装置までの間の障害発生を検知して、ネットワークを自動的に切り替えたりするシステムが提供されました。通常使用のネットワークインターフェースに障害が発生した場合、自動的に同じところに接続している代替ネットワークインターフェースが全ての接続を自動的に切り替え、中断のないネットワーク利用が可能になるシステムです。また、この場合、複数のネットワークインターフェースが同じところにつながることで、複数ネットワークインターフェースでトラフィックを分散することも可能になります。ということは、トラフィックのスループットの増加ができるということになります。
今回は、HUB に対して2枚のネットワークインターフェースをつなぎ、通常時は両方を使ってマルチパスによるトラフィック分散を行い、どちらかが障害を起こした場合、障害を起こしたネットワークインターフェースのIPアドレスなどの設定情報が、正常稼動しているネットワークインターフェース側に引き継がれるようにします。また、障害回復時には、自動的に元の状態に戻る形とします。 以下は、具体的な設定と実際の動作です。 1.マルチパス構成ファイル(mpathd) を編集する。 /etc/default/mpathd ファイルが、IP Network Multipathing の動作を設定するファイルなので、これを編集します。が、特に編集しなくてもデフォルトでもとりあえずは動作します。下記はデフォルトの設定ファイルです。 # #ident "@(#)mpathd.dfl 1.1 00/01/03 SMI" # # Time taken by mpathd to detect a NIC failure in ms. The minimum time # that can be specified is 100 ms. # FAILURE_DETECTION_TIME=10000 # # Failback is enabled by default. To disable failback turn off this option # FAILBACK=yes # # By default only interfaces configured as part of multipathing groups # are tracked. Turn off this option to track all network interfaces # on the system # TRACK_INTERFACES_ONLY_WITH_GROUPS=yes
2.IP Network Multipathing を取るインターフェースを設定 IP Network Multipathing を取るインターフェースの、hostname.xxxx を編集する。 192.168.1.51 group local-path up \ addif 192.168.1.151 -failover deprecated up この設定の場合、elxl0 のネットワークインターフェースは、192.168.1.51の IP アドレスを持ち、障害検知に論理アドレスの 192.168.1.151 を使い、障害時には 代替ネットワークインターフェースに failover し、情報を deprecated した後に インターフェースを up するという意味になります。各項目は以下のように指定します。 192.168.1.52 group local-path up \ addif 192.168.1.152 -failover deprecated up 設定はこれだけで済みます。 3.動作確認 あとはマシンを再起動して、実際に切り替わるかを検証します。 # sync # sync # sync # init 6 再起動したら、ifconfig を使って確認します。下記のように、各ネットワークインターフェースに対し、物理アドレスと仮想アドレスの2つのインターフェースができていると思います。 # ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
elxl0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 192.168.1.51 netmask ffffff00 broadcast 192.168.1.255
groupname local-path
ether xx:xx:xx:xx:xx:xx
elxl0:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER
> mtu 1500 index 2
inet 192.168.1.151 netmask ffffff00 broadcast 192.168.1.255
elxl1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
inet 192.168.1.52 netmask ffffff00 broadcast 192.168.1.255
groupname local-path
ether xx:xx:xx:xx:xx:yy
elxl1:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER
> mtu 1500 index 3
inet 192.168.1.152 netmask ffffff00 broadcast 192.168.1.255
#
ここで、elxl0 側のケーブルを抜いてみます。物理的に障害が発生したイメージにするわけです。その後、ちゃんと切り替わったかを ifconfig で見てみます。経路に障害が出た場合、コンソールにもメッセージが出るので、コンソールも立ち上げておくと良いでしょう。 # ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
elxl0: flags=19000842<BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER,FAILED> mtu 0
index 2
inet 0.0.0.0
groupname local-path
ether xx:xx:xx:xx:xx:xx
elxl0:1: flags=19040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER
,FAILED> mtu 1500 index 2
inet 192.168.1.151 netmask ffffff00 broadcast 192.168.1.255
elxl1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
inet 192.168.1.52 netmask ffffff00 broadcast 192.168.1.255
groupname local-path
ether xx:xx:xx:xx:xx:yy
elxl1:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER
> mtu 1500 index 3
inet 192.168.1.152 netmask ffffff00 broadcast 192.168.1.255
elxl1:2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
inet 192.168.1.51 netmask ffffff00 broadcast 192.168.1.255
#
このように、2つめのインターフェースに論理インターフェースが1つ追加され、そこに1つ目のインターフェースの情報がちゃんと出ていれば、正常に動作しています。見比べるとそのほかに、elxl0 のインターフェースが up していないこともわかります。 # ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
elxl0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 192.168.1.51 netmask ffffff00 broadcast 192.168.1.255
groupname local-path
ether xx:xx:xx:xx:xx:xx
elxl0:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER
> mtu 1500 index 2
inet 192.168.1.151 netmask ffffff00 broadcast 192.168.1.255
elxl1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
inet 192.168.1.52 netmask ffffff00 broadcast 192.168.1.255
groupname local-path
ether xx:xx:xx:xx:xx:yy
elxl1:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER
> mtu 1500 index 3
inet 192.168.1.152 netmask ffffff00 broadcast 192.168.1.255
#
元と同じものが表示されれば復旧完了です。あとは、もっと深く確認したければ、/var/adm/messages に障害発生=>切り替わり=>復旧のメッセージが出ているので、それを見るのも良いでしょう。サーバの監視ツールを使っている環境では、ここに出るメッセージを拾うと良いかもしれません。 |
|
|