画像はGoogleデータセンターでございます。
今回は以下のグラフを見て欲しいと思う。
あるサーバはbondingをされており、eth0が落ちてもeth1に切り替わるように冗長化をしているのだが、
なんとeth0のパケットがまったく出ていなかったことに気づいた。(気づいてよかった。。)
なので調査とまずはbondingとは何かから説明していきたいと思う。
※ちなみにCentOS6です。
■bondingとは
ボンディング(bonding)を使うことでNICの冗長化、
負荷分散ができる。
ケーブルが断線して、間違えて抜いてしまってもオールライト。
図としては以下が分かりやすいと思う。
今回はこのeth0がおかしいというお話。
■調査してみた
・パケットの確認
1 2 3 4 5 6 7 8 |
# sar -n DEV Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s Average: lo 182.74 182.74 58.97 58.97 0.00 0.00 0.00 Average: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: eth1 1132.23 910.61 165.61 135.19 0.00 0.00 0.00 Average: eth2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: eth3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: bond0 1132.20 910.60 165.61 135.19 0.00 0.00 0.00 |
sarコマンドで実際パケットがどのくらい出ているのか確認できる。
eth0だけ0って….
eth1のみ機能している感じ。
・ifconfで確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# ifconfig bond0 Link encap:Ethernet HWaddr xxxxxxxxxx inet addr:xxxxxxxx Bcast:xxxxxxxxxxxx Mask:xxxxxxxxx UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:70473 errors:0 dropped:0 overruns:0 frame:0 TX packets:22020 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4606631 (4.3 MiB) TX bytes:3934497 (3.7 MiB) eth1 Link encap:Ethernet HWaddr xxxxxxxxxxxxx UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:42021 errors:0 dropped:0 overruns:0 frame:0 TX packets:6660 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2629400 (2.5 MiB) TX bytes:593696 (579.7 KiB) Memory:xxxxxxxxxxxxx lo Link encap:Local Loopback ~省略~ |
eth0ないやないか!
・bondingの確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth1 MII Status: up MII Polling Interval (ms): 500 Up Delay (ms): 1000 Down Delay (ms): 0 Slave Interface: eth1 MII Status: up MII Polling Interval (ms): 500 Up Delay (ms): 1000 Down Delay (ms): 0 Slave Interface: eth1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: xxxxxxxxxxxxx Slave queue ID: 0 |
むむむ?
普通ならPrimary Slaveがeth0になるんだが、Slaveが全部
eth1っておかしい….
・Nicの確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# cat ifcfg-eth1 DEVICE=eth1 ONBOOT=yes BOOTPROTO=none HWADDR=xxxxxxxxxxxx MASTER=bond0 SLAVE=yes # cat ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=none HWADDR=xxxxxxxxxxxx MASTER=bond0 SLAVE=yes |
あれ特に異常はない!?
設定間違ってるところはなかった。。
もしやLAN抜けてるとか断線してるとか!?
■データセンターに行ってみた
eth0のLAN差込口が点灯していない!
よっしゃー引き抜いて新しいLANと交換しよう!
からのまったく反応せず。。
network再起動すると、
eth0なんかおかしいぞとエラーが出た。
(エラー名忘れたdiffrentなんちゃら)
まさかと思い、
NICのHWADDR(MACアドレス)を確認したところ・・・
・・・・
全然違ったw
MACアドレスを変更し、network再起動したら
パケット来てグラフ来ました。
もちろんifdown eth1とやるとeth0にパケットきました。
■まとめ
構築時に確認が必要なのと、
bondingの設定が問題なければMACアドレスが正しいか疑おう!w
てか別にMACアドレス書かなくてもいいんじゃないの!
参考:http://d.hatena.ne.jp/sen-u/20061002/p1
http://qiita.com/ShingoOikawa/items/dfc0d9a06b705fe0c289
0件のコメント