ご購入前のお問合せ 技術資料ダウンロード サポートサイト プレスリリース
本日はいまだにお問合せを多くいただくサーバーのインタフェース冗長化に関する設定をご紹介致します。 早速ですが皆様はLinuxのBondingのモード設定を理解して正しく運用できていますでしょうか。多くの皆様は正しく設定されていると思いますが、WEBに載っていたのでそのまま使ってみたら動いたので使っているという方も一部いらっしゃるのではないかと思います。
Linux bondingを使うときにネットワークの観点からは、注意していただきたい設定があります。
タイトルにも記載したLinux Bonding mode=0を使うときはネットワーク構成を意識して注意して使ってください。
どうなっているかわからないときはLinux Bonding mode=0は使わないことを推奨致します。
Linux Bondingの説明
参考Link: RHEL6導入ガイド 25.7.2. チャネルボンディングの使用
https://access.redhat.com/site/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Using_Channel_Bonding.html
この中でイーサネットスイッチの世界で一般的に使われているのはmode=1, mode=2, mode=4だけです。
その他の設定は特殊環境での利用となりますので利用時には注意が必要です。ボンディングの設定方法を紹介しているWebサイトも数多くあり、特に最近のネットワーク機能との相性が良くない設定がmode=0:balance-rrです。図1のように上位のスイッチが2台以上でスタッキングやマルチシャーシLAGを組んでいる場合には特にmode=0ではなくmode=2をご利用下さい。
図1: mode=0を使ってはいけないネットワーク構成
ここでmode=0を使ってラウンドロビンでパケットを送信してしまうと、ネットワーク内ではどこをとおっているかわからなくなります。一見、効率良さそうに見えますがTCP/IPの世界で順番が入れ替わってしまうと、通信をやり直す必要があります。そのためイーサネットスイッチでは基本的にフローベースの通信を行うことで順番が入れ替わることを防ぎながら、宛先に到達できるようにしています。そのフローベースの通信をさせる設定というのがmode=2: balance-xorであり、スイッチ側の設定はStatic LAGと呼ばれる設定になります。
またIEEE802.3adを使ったDynamic LAGでの構成もケーブリングミスを防ぐためには有効です。サーバー側ではmode=4: 802.3adを利用し、スイッチ側でもIEEE802.3adの設定を行います。IEEE802.3adでは双方向でLACPと呼ばれるパケットを交換して正しい接続先のときだけリンクを上げるような仕組みになっております。ケーブリングミスがあるときはリンクが使えないので、ケーブリングミスによるL2ループを回避することが可能となります。このときの注意点としてはLACPDUの送信タイマーのデフォルト値です。Linuxではlacp_rateという設定があり、デフォルトは0: slow(30秒)となっています。お使いのスイッチに依存しますが一部メーカーを除いて1: fast(1秒)がデフォルト値になっている場合が多いのでお使いのスイッチに合わせて変更してください。
デルのスイッチ製品は "fast" がデフォルト設定となります。
そして注意事項がもう一つ。
Linux bondingドライバの802.3adの動作としては、LACPのネゴシエーションに失敗してもBondingインタフェースをリンクアップするようです。スイッチ側がStatic LAGで構成されているときに、スイッチから見ると両方のインタフェースがUPしているように勘違いしてしまいます。スイッチは複数リンクにパケットを送信しますが、サーバー側は片方のインタフェースでDROPしますので、約半分のパケットが到達不能となります。サーバー側とスイッチ側の設定が間違っているのが根本的な原因ですが、動作としておかしな状況になりますので注意してください。
以上です。
今回はLinux Bondingとスイッチ側のリンクアグリゲーションをするときの注意事項についてご紹介しました。
設定を覚えていないという方はこれを機に一度設定を確認してみてはいかがでしょうか。