データ・センターでは,信頼性を高めるためにサーバーのネットワーク・インタフェース・カード(NIC)を含め,LANを2重化するケースが多い。ただ,2重化する際のNICの設定や,NICの切り替え方法,代替経路の設計を誤ると,業務の停止など大きなトラブルに発展することがある。

 データ・センターは企業ネットワークにおいて,多数の拠点を結ぶハブとして機能する。このため高い信頼性を求められ,ネットワークの構築に当たっては2重化されることが多い。多くの場合は,サーバーとネットワークの接続も2重化する。

 この際に注意しなければならないのがサーバーNIC(ネットワーク・インタフェース・カード)の冗長化である。サーバーが接続するネットワークの構成とサーバーNICの設定の整合性が取れていないことが原因で,トラブルに陥る例は珍しくない。

 典型例が,サーバーNICをActive/StandbyのNIC切り替え方式で2重化したにもかかわらず,NICに負荷分散の設定を施してしまったケース。今回は,こうしたサーバーNICの冗長化に伴うトラブルの傾向と対策を紹介する。

見落としがちなNIC,隠れたミスに気を配ろう

 A社はデータ・センター内のネットワークを冗長化するに当たり,サーバーに2枚のNICを装備した。2枚のNICからは,それぞれ異なるスイッチに接続。一方のNICが故障しても通信環境を確保できる構成とした(図1)。

図1●異なるNICから異なるスイッチに接続して負荷分散すると異常が発生することがある<br>スイッチのMACアドレス・テーブルを見ると,同じMACアドレスが頻繁に両方のスイッチに記録されるため,設定ミスを見付けられる。
図1●異なるNICから異なるスイッチに接続して負荷分散すると異常が発生することがある
スイッチのMACアドレス・テーブルを見ると,同じMACアドレスが頻繁に両方のスイッチに記録されるため,設定ミスを見付けられる。
[画像のクリックで拡大表示]

 NICを冗長化する方式は,サーバーの冗長化と同様に大別して2通りある。Active/Standbyで普段は一方だけを使い,障害時にNICを切り替える方式と,リンク・アグリゲーションなどにより2枚を同時に利用して負荷を分散させる方式である。A社が選んだのは,前者のNIC切り替え方式だった。

 カットオーバー前にはpingによる疎通テストやファイル転送テストを実施。問題なく稼働することを確認し,運用し始めた。ところが運用を始めてしばらく経つと,10分間隔で実施しているping監視や,ファイルのバッチ転送が時折失敗することが判明した。

 エラーが時折発生するという状況から,原因としてネットワークの経路上の問題やハードウエアの品質の問題,アプリケーション・ソフトの不具合などが想定された。しかし,調査しても想定した不具合は見当たらなかった。

スイッチのアドレス・テーブルに異変

 調査を続けるうち,サーバーから接続したスイッチに不審な点が見付かった。スイッチ#1のMACアドレス・テーブルが頻繁に書き換えられ,MAC-aというアドレスがポート1に登録されたり,ポート2に登録されたりしていた。サーバーのNIC#1とNIC#2のどちらもMAC-aを使っていたことが分かった。

 このことから,冗長化したサーバーNICの設定ミスを疑った。設計ではActive/Standbyのはずだが,誤ってサーバーNICに負荷分散の設定が施されていれば,それぞれのNICから同じMACアドレス(MAC-a)を持つパケットが送信される可能性がある。

 本来,サーバーNICの負荷分散機能を使う場合,対象となるNICをすべて同一のスイッチに接続する必要がある。図1のように2台のスイッチに接続する構成はサポートされない。ただ,サポートしないことと通信できないことは同義ではない。A社の場合,多くの場合は正常に通信できていた。負荷分散の方式はいくつかあるが,静的リンク・アグリゲーションとALB(適応型ロード・バランシング)といった方式では,こうした問題が起こりやすい。

 最終的にA社は,サーバーNICの設定を確認。負荷分散させないように設定を改め,トラブルを脱した。