bonding

条件

  • 1つめのHUBはSwitching-HUB
    • Repeater-HUBは今時無いと思うので、大丈夫?
    • Link Aggregationする場合は 802.11ad 対応の switch が必要
  • NICはとりあえずMIIに対応しているNICを使うべきだそうだ
    • どれが対応しているのかよくわからん。。。
    • MII対応か調べるには mii-tool
      • 対応していない場合は no MII interfaces found
      • 対応している場合は
        eth0: negotiated 100baseTx-FD flow-control, link ok
        eth1: negotiated 100baseTx-FD flow-control, link ok
      • なぜか1Gbpsでも10Gbpsでも100baseTxで表示される不思議!

HWのセットアップ

  • とりあえず
    • NICは eth0 と eth1 を bonding することにする
  • vi /etc/modprobe.conf
    alias bond0 bonding
    options bonding mode=1 miimon=1000 primary=eth0
    • mode=0 : load balancing (round-robin)
    • mode=1 : fault-tolerance (active-backup)
    • mode=4 : IEEE 802.3ad Dynamic link aggregation ※802.3ad対応スイッチが必要。HUBじゃムリ。
      • mode=0にしてbonding配下のNICすべてを使って負荷分散しようとしたが、なぜか逆に超遅くなったのでmode=1にした。
    • miimon=1000 : MIIでリンクダウンを監視する間隔(ms) 今回は1秒(=1000ms)
    • 最近ではmodprobe.confではなく、ifcfgとかnmcliで設定する。

NICのセットアップ

  • vi /etc/sysconfig/network-scripts/ifcfg-bond0
    DEVICE=bond0
    TYPE=Ethernet
    ONBOOT=yes
    BOOTPROTO=none
    IPADDR=192.168.1.2
    NETMASK=255.255.255.0
    USERCTL=no
    BONDING_OPTS="mode=4 miimon=1000 xmit_hash_policy=2"
  • vi /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    TYPE=Ethernet
    HWADDR=00:1B:21:61:48:C7
    ONBOOT=yes
    BOOTPROTO=none
    SLAVE=yes
    MASTER=bond0
    USERCTL=no
    • eth1も同様に書き換える
  • reboot
  • cat /proc/net/bonding/bond0
    • Bonding Mode, Primary Slave, Currently Active Slaveなどの設定が反映されているか確認
    • 参加しているeth*が表示されるか確認
  • ifconfig
    • bondingしたNICのMACがすべて一緒になっていることを確認
  • LANケーブルを抜いて正常に通信することを確認
    • もちろん、ループしていないことも確認

Tips

  • bondingの設定を再起動するのが面倒な場合
    /sbin/ifconfig bond0 down
    rmmod bonding
    modprobe bond0
    /sbin/ifconfig bond0 up
    • コンソールからやらないとSSHが切れちゃう(あたりまえ)