2008年 2月 25日 月曜日
やっぱり Sun がスキ!
IP アドレスを削減! Link-Base の IPMP 設定方法
今回は、Solaris 10 から追加されたリンクベースの障害検出 IP network multipathing (IPMP)の設定方法を紹介します。
IPMP は、Solaris8 10/00 からサポートされた機能ですが、当初は検査信号ベースの 障害検出のみサポートされておりました。その為、IPMP の設定にはサービス用 IP アドレスの他に検査用 IP アドレスが2つ必要であったり、検査に使用される ICMP Ping のトラフィックが発生したりと煩わしい部分がありました。
今回紹介するリンクベースの障害検出 IPMP は、検査 用 IP が不要で、サービス用の IP アドレス1つあれば設定可能ですし、ICMP Ping の トラフィックも発生しないメリットがあります。
さらに設定も簡単で、検査信号ベースの設定と比べて非常にシンプルです。
それでは、実際に リンクベースの障害検出 IPMP の Active-Standby と Active-Active の 設定を行ってみます。
[ IPMP Active-Active 構成設定方法]
今回は、e1000g の 0 と 1 のインターフェースを使用し、 サービスする IP アドレスは 192.168.0.1、 group 名を ipmp-g としました。
編集するファイルは、 /etc/hostname.e1000g0 と /etc/hostname.e1000g1 になります。
/etc/hostname.e1000g0 の設定内容
# cat hostname.e1000g0 192.168.0.1 netmask + broadcast + group ipmp-g up/etc/hostname.e1000g1 の設定内容
# cat hostname.e1000g1 group ipmp-g up
上記ファイルを編集後、システムを再起動すれば終了です。
検査信号ベースの IPMP と比べて設定内容が非常にシンプルです!
(補足情報)
本設定をすると、システム起動時に in.mpathd が エラーを出しますが、検査信号 ベースを使用しない事を意味しており問題ございません。
Feb 21 20:58:52 server01 in.mpathd[149]: [ID 975029 daemon.error] No test address configured on interface e1000g1; disabling probe-based failure detection on it Feb 21 20:58:52 server01 in.mpathd[149]: [ID 975029 daemon.error] No test address configured on interface e1000g0; disabling probe-based failure detection on it
リンクベースの障害検出 IPMP を設定後の ifconfig コマンド出力結果は下記の通りです。
(設定後の ifconfig コマンド出力結果)
# ifconfig -a lo0: flags=2001000849mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 e1000g0: flags=1000843 mtu 1500 index 2 inet 192.168.0.1 netmask ffff0000 broadcast 192.168.255.255 groupname ipmp-g ether 0:14:4f:f:a1:80 e1000g1: flags=1000843 mtu 1500 index 3 inet 0.0.0.0 netmask ff000000 broadcast 0.0.255.255 groupname ipmp-g ether 0:14:4f:f:a1:81
[Active-Active 構成障害検知テスト]
それでは、障害検知テストをしてみましょう。
サービスしている e1000g0 インターフェス側のケーブルを抜くと障害を検知し、サービス するインターフェースが切り替わります。
(障害検知後の状態)
lo0: flags=2001000849mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 e1000g0: flags=19000802 mtu 0 index 2 inet 0.0.0.0 netmask 0 groupname ipmp-g ether 0:14:4f:f:a1:80 e1000g1: flags=1000843 mtu 1500 index 3 inet 0.0.0.0 netmask ff000000 broadcast 0.0.255.255 groupname ipmp-g ether 0:14:4f:f:a1:81 e1000g1:1: flags=1000843 mtu 1500 index 3 inet 192.168.0.1 netmask ffff0000 broadcast 192.168.255.255
(障害検知時の syslog メッセージ)
Feb 21 21:04:40 server01 e1000g: [ID 801725 kern.info] NOTICE: pci8086,1011 - e 1000g[0] : Adapter copper link is down. Feb 21 21:04:40 server01 in.mpathd[149]: [ID 215189 daemon.error] The link has gone down on e1000g0 Feb 21 21:04:40 server01 in.mpathd[149]: [ID 594170 daemon.error] NIC failure d etected on e1000g0 of group ipmp-g Feb 21 21:04:40 server01 in.mpathd[149]: [ID 832587 daemon.error] Successfully failed over from NIC e1000g0 to NIC e1000g1
ちなみに、抜いたケーブルを差して元の状態に戻すと、リンクアップを検知し、すぐに フェイルバックします。
[ IPMP Active-Standby 構成設定方法]
Active-Standby 構成も、/etc/hostname.e1000g0、/etc/hostname.e1000g1 ファイルを 編集するだけで終了です。
Active-Active 構成と比較して、hostname.e1000g1 ファイルに standby のキーワードが 入ります。
/etc/hostname.e1000g0 の設定内容
# cat hostname.e1000g0 192.168.0.1 netmask + broadcast + group ipmp-g up/etc/hostname.e1000g1 の設定内容
# cat hostname.e1000g1 group ipmp-g standby up
(設定後の ifconfig 出力結果)
# ifconfig -a lo0: flags=2001000849mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 e1000g0: flags=1000843 mtu 1500 index 2 inet 192.168.0.1 netmask ffff0000 broadcast 192.168.255.255 groupname ipmp-g ether 0:14:4f:f:a1:80 e1000g0:1: flags=1000843 mtu 1500 index 2 inet 0.0.0.0 netmask ff000000 broadcast 0.0.255.255 e1000g1: flags=69000842 mtu 0 index 3 inet 0.0.0.0 netmask 0 groupname ipmp-g ether 0:14:4f:f:a1:81
[Active-Standby 構成障害検知テスト]
それでは、障害検知テストをしてみましょう。 サービスしている e1000g0 インターフェス側のケーブルを抜くと、Active-Active 構成 と同様に障害を検知し、サービスするインターフェースが切り替わります。 (障害検知後の状態)
# ifconfig -a lo0: flags=2001000849mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 e1000g0: flags=19000802 mtu 0 index 2 inet 0.0.0.0 netmask 0 groupname ipmp-g ether 0:14:4f:f:a1:80 e1000g1: flags=21000843 mtu 1500 index 3 inet 0.0.0.0 netmask ff000000 broadcast 0.255.255.255 groupname ipmp-g ether 0:14:4f:f:a1:81 e1000g1:1: flags=21000843 mtu 1500 index 3 inet 192.168.0.1 netmask ffff0000 broadcast 192.168.255.255
(障害検知時の syslog メッセージ)
Feb 21 21:13:57 server01 e1000g: [ID 801725 kern.info] NOTICE: pci8086,1011 - e 1000g[0] : Adapter copper link is down. Feb 21 21:13:57 server01 in.mpathd[149]: [ID 215189 daemon.error] The link has gone down on e1000g0 Feb 21 21:13:57 server01 in.mpathd[149]: [ID 594170 daemon.error] NIC failure d etected on e1000g0 of group ipmp-g Feb 21 21:13:57 server01 in.mpathd[149]: [ID 832587 daemon.error] Successfully failed over from NIC e1000g0 to NIC e1000g1 Feb 21 21:13:57 server01 in.routed[337]: [ID 970160 daemon.notice] unable to ge t interface flags for e1000g0:1: そのようなデバイ スもアドレスもありません。抜いたケーブルを差して元の状態に戻すと、Active-Standby 構成も同様、リンクアップ を検知し、すぐにフェイルバックします。
(最後に)
リンクベースの障害検出 IPMP は、ネットワークスイッチの口が2つあれば 簡単にネットワークの冗長構成を組む事ができますのでとても便利です。
Posted at 05:21午後 2 25, 2008 by Naoyuki Yamada in Sun | 投稿されたコメント[1]