muroiです。
最近サーバ構築の手伝いをしてきて、その際気になったものがあったので調べつつブログに書いてみました。
今回はbondingについてです。これを設定する事により物理的には複数あるネットワークインターフェースを論理的に一つとして扱う事ができるようになるのが驚きでした。
それでは以下よりbondingについてとその設定方法について説明していきたいと思います。
bonding
Linuxではこのbondingを行う事により、NICの冗長性の確保・負荷分散を行うできるそうです。例えばケーブルが断線したり、誤って抜いてしまった時などにもこの設定ができていれば片方で動くので問題なしですね!
たしかにしょっちゅう止まっていてはいけないサーバには必要な設定だ・・・。
bondingを設定するには
どうやらbondingの設定を行うにはLinux Kernelのバージョンがbondingに対応し、且つ複数のNICを実装している必要があるということらしいです。
何でもかんでも簡単にできるわけではないんだ・・。
というわけで事前確認ができたら各ネットワークケーブルに設定を以下のようにしていきます。
例として今回はethが0~4まであるものとし、2と3をbondingして一つとして扱えるように設定していきたいと思います。
eth2の設定(ifcfg-eth2を編集)
DEVICE=eth2 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes
eth3の設定(ifcfg-eth3を編集)
DEVICE=eth3 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes
/etc/sysconfig/network-scripts/ディレクトリにifcfg-bond0 を作成して以下のように記述しました。
DEVICE=bond0 BOOTPROTO=none ONBOOT=yes NETWORK=192.168.*.0 NETMASK=255.255.255.0 IPADDR=192.168.*.*
(*)は各環境に合わせて設定を行ってください。
次に/etc/modules.conf を作成して以下のように記述します
alias bond0 bonding options bond0 mode=0 miimon=100
ここまでは何となく何を設定してきたのか若干予想できていたのですが、上記の設定だけは何をしているのかわかりませんでした。
ということで調べてみると、modeではbondingモジュールに許可されたポリシーをして設定しているそうです。自分なりに解釈してみたのですが、それぞれ障害の際に受信送信の順番を変えていたり、失敗したときの違いというものがそれぞれで異なっているのかな?という事でしょうか。
もうひとつのmiimonではMIIリンク監視の実行頻度を指定(ミリ単位で)しているそうです。NICがアクティブかどうかの確認にも使っているそうなので設定しておくといいそうですね。
ここまで設定が完了したら後はネットワークを再起動して有効かどうかの確認すればOKです。
自分の環境や、仮に自分の趣味でサーバを構築するにしてもここまで障害対策するという事もないかもしれないのですが、実際に業務用として運用する場合には必須となりそうなことなのでしっかりと覚えておきたいと思います。

by sasimi, on 10.02.08 @ 2:49 PM
細かいことですが冗長性でbondingをする際はハード障害も考慮するとよいですね。つまり2ポートのethernetカードが2つあったとしたらカード内で2ポートをbondするのでなく各カードの1ポートずつをbondすると、一方のカードが壊れた場合も通信経路が確保できるということです。
by sasimi, on 10.02.08 @ 3:12 PM
LB(負荷分散)の場合は1ポート死ぬとbandが半分になってしまいますが、通信経路がなくなっては意味がありません。サーバを調達する際にはそういった目的も踏まえて構成を決めることが大切ですネ