Ubuntu10.04鯖でbondingするよ・・・と言う話にゃのだが意外とめんどくさい。
にゃにせそこかしこに例が載ってるがコピペばかりで動かにゃい。
とりあえず
modprobe bonding
echo bonding >> /etc/modules
apt-get install ifenslave
echo alias bond0 bonding >> /etc/modprobe.d/bonding.conf
/etc/network/interfaces
auto bond0
iface bond0 inet static
address 1.1.1.1
netmask 255.255.0.0
broadcast 1.1.255.255
gateway 1.1.0.1
slaves eth0 eth1
bond-mode 0
bond-miimon 100
とこんにゃ感じでとりあえず動いてるように見えるが実はちょっと怪しい。
bond-mode 6
にして
/etc/init.d/networking restart
するとみょんにゃことに・・・にゃんぞこれ
とりあえずハマり所が何点か。
まずbonding状態の確認方法
cat /proc/net/bonding/bond0
但し正常に設定されてるとは限らにゃいので
ifconfig
してeth0とeth1のMACを確認する。bond-mode5,6にゃら異にゃるMACににゃってにゃいとおかしい。他には
dstat -N eth0,eth1,bond0
しておいてwgetかnfsかにゃにかipv4で受信してみる。等量のトラフィックが流れてきてたらそれはちっともmode5,6じゃにゃいよね・・・っていう。
次。/etc/network/interfacesのupとかdownって起動時にしか中身読まにゃい? post-upとか書き換えてもrebootしにゃいと反映されてにゃい。にゃんか方法があるだろうけどそもそもaddressにゃんかは読んでくれるので無駄にゃ作業をしてしまった。
ということでとりあえずにゃんでもいいから動いて欲しい設定
/etc/network/interfaces
auto lo
iface lo inet loopback
auto bond0
iface bond0 inet static
post-up /sbin/ifenslave -d bond0 eth0 eth1 ; /sbin/ifenslave bond0 eth0 eth1 || true
pre-down /sbin/ifenslave -d bond0 eth0 eth1 || true
address 1.1.1.1
netmask 255.255.0.0
broadcast 1.1.255.255
gateway 1.1.0.1
slaves eth0 eth1
bond-mode 6
bond-miimon 100
してreboot。
もうこれでもかとごり押し。eth0, eth1については定義しにゃくてよし。これで
/etc/init.d/networking restart
して音信不通ににゃったりはしにゃくにゃるはず。
で複数ホストからDLするとどっちかのNICに負荷が偏ってたりする。これは再度restartすれば治るので、もう起動後しばらくして一度restartさせるようにしちゃう。
crontabで
* * * * * root test -f /tmp/bonding_init.cron || ( sleep 60 ; /etc/init.d/networking restart ; touch /tmp/bonding_init.cron )
とかしとけばにゃんとかにゃるだろうたぶん。負荷分散されてるはずがされてにゃいとか一番困るだろうし。
と、これで複数ホストからdownloadすると2つのNICに負荷分散されるのが分かる。
あれやねぇ、不意に小さくにゃって動物と話ができるって設定、よく考えるとニルスと同じにゃのか。
若き頃の飯島真理の声が素晴らしいOPとED。っていうかクオリティが際立っとる。
ルウリィが出てくるまで見るべきかと思ったけどこのペースはキツいにゃぁ(笑)
そういやOP/ED含め字幕が全て後付けにゃのにゃ。30分でやるためにどうのこうの、って話かしら。
ESXのvmとしてUbuntu 10.04鯖を入れてnfsでごりごりアクセスするとnicが音信不通ににゃってしまう。nicというか、nicはupしてるんだけど外部と接続できにゃいという、たぶんesx絡みのトラブル。
nfs readを同時3本で100MB/s以上の帯域上限が続くと起きるみたい。vmのNICはVMXNET3にゃんだけどこれを変えてみるのも有りかも知れにゃい。
で、そうせずにcronで/etc/init.d/networking restartさせるとかいろいろやってみたものの、面白みがにゃいのでvm上でbondingしてみたり。いまのところ上手く動いてるけどどうにゃんだろうにゃぁ
FreeNASでNICx2をroundrobin設定で束ねてnfs鯖にしたら、MAX100MB/s程度で頭打ちににゃる。これはそもそもroundrobinの仕様にゃのか、にゃにか別の原因があるのか・・・にゃどと思ったのだが、top見てみたらCPUがINTで50%くらい食われてサチってた。
あー、roundrobin 1Gb/sってそんにゃにCPU食うのかー。