| モード名称 | モード 番号 | 送信 分散 | 受信 分散 | 特徴 | 
| balance-rr | 0 | ◯ | SW設定 | ラウンドロビン方式で送信のみ負荷分散する。サーバが複数のスイッチに接続されている場合、スイッチで行っているフローベースの通信にバラつきが生じ、相手にパケットがバラバラな順番で届きやすくなる。(TCPの再送処理が走る) | 
| active-backup | 1 | ☓ | ☓ | 1つのアクティブなスレーブインターフェースで送受信を行い、他のスレーブインターフェーブはスタンバイ状態とする。アクティブなスレーブインターフェース障害が発生したら他のスレーブインターフェースに切り替える。 | 
| balance-xor | 2 | ◯ | SW設定 | 送信元・先のmac-addressを基に送出スレーブインターフェースを決定する方式で負荷分散する。L3ポート直結だとmacが変わらないので負荷分散されない。 | 
| broadcast | 3 | ? | SW設定 | 全てのスレーブインタフェースから同一のパケットを送出する。(基本使わないはず) | 
| 802.3ad | 4 | ◯ | SW設定 | プロトコルLACPを使用してリンクアグリゲーションを行い、動的にリンクを形成する。スイッチ側にもLACPでリンク形成を行うためのを設定が必要。全てのスレーブインターフェースで送受信を行う。 | 
| balance-tlb | 5 | ◯ | SW設定 | NICの負荷に応じて送出スレーブインターフェースを変える。 | 
| balance-alb | 6 | ◯ | SW設定 | NIC負荷に応じて送出・受信スレーブインターフェースを決定する。 | 
[root@bond01 ~]# lsmod | grep bonding
bonding               130997  0
8021q                  25527  1 bonding
ipv6                  334932  16 bonding,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
Bondingを扱う上でよく出てくるインターフェースのキーワードありますが扱いや意味を下記にまとめます。
| 名前 | 概要 | 
| マスターインターフェース (Master Interface) | bondingされた仮想的なインターフェースを指す。例:bond0 | 
| スレーブインターフェース (SLAVE Interface) | マスターインターフェースを構成するインターフェース。例:eth0,eth1など | 
| アクティブインターフェース (Active Interface) | マスターインターフェースに所属するスレーブインタフェースで実際にパケットの送受信を行うインターフェース。 | 
今回は仮想マシンでサクッと設定してみます。物理マシンで行っているのではないのでご参考までに。
素のVMにVMwareの管理画面からNICを追加します。
[root@bond01 ~]# lspci | grep Eth
02:00.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
02:02.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
何も変更を加えていない状態です。00:0c:29:5d:4e:64 , 00:0c:29:5d:4e:6eのmac-addressが見えますね。
eth0    link/ether 00:0c:29:5d:4e:64 brd ff:ff:ff:ff:ff:ff
eth1    link/ether 00:0c:29:5d:4e:6e brd ff:ff:ff:ff:ff:ff
次にbondig設定に必要なファイル編集&作成を行います。各パラメータの意味は下記のとおりです。
| パラメータ | 意味 | 
| DEVICE | device名を指定 | 
| ONBOOT | OS起動時に自動起動するか | 
| USERCTL | root以外のユーザに制御を許可するか | 
| BOOTPROTO | DHCPの使用有無 | 
| MASTER | bondingのmaster interfaceのデバイス名を指定する。 | 
| SLAVE | slave interfaceとするか | 
| BONDING_OPTS | bondigのためオプション設定。カーネルモジュールに渡すパラメータを記述する。 | 
//Slave interface eth0
[root@bond01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
USERCTL=no
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
 
//Slave interface eth1
[root@bond01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
USERCTL=no
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
マスターインターフェース用のコンフィグファイルです。bonding-optionでMII監視の監視間隔、bonding-mode,優先的に使用するスレーブインターフェース、スレーブインターフェース復旧後の挙動についてのポリシー設定を行っています。
//Master Interface bond0
[root@bond01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
IPADDR=10.24.96.151
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="miimon=100 mode=1 primary=eth0 primary_reselect=failure"
ネットワーク設定を再読込します。
[root@bond01 ~]# /etc/init.d/network restart
インターフェース bond0 を終了中:                           [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース bond0 を活性化中:  Determining if ip address 10.24.96.151 is already in use for device bond0...
                                                           [  OK  ]
Bonding設定を確認します。新たにbond0インターフェースが確認できました。mac-addressはprimary スレーブインターフェースのmacが使用されています。(フェイルオーバしてもmacに変化はありませんでした。)
[root@bond01 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
    link/ether 00:0c:29:5d:4e:64 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
    link/ether 00:0c:29:5d:4e:64 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 00:0c:29:5d:4e:64 brd ff:ff:ff:ff:ff:ff
    inet 10.24.96.151/24 brd 10.24.96.255 scope global bond0
    inet6 fe80::20c:29ff:fe5d:4e64/64 scope link
       valid_lft forever preferred_lft forever
Bondingのステータス状態(モード、スレーブインターフェースの状態)を確認するにはプロセスファイルを確認します。
[root@bond01 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 (primary_reselect failure)
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:5d:4e:64
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:5d:4e:6e
Slave queue ID: 0
[root@bond01 ~]# ifconfig | grep HW
bond0     Link encap:Ethernet  HWaddr 00:0C:29:5D:4E:64
eth0      Link encap:Ethernet  HWaddr 00:0C:29:5D:4E:64
eth1      Link encap:Ethernet  HWaddr 00:0C:29:5D:4E:64
リンクスピードなどNICとしてのステータス状態を確認する場合はethtoolを使用して確認します。
[root@bond01 ~]# ethtool bond0
Settings for bond0:
    Supported ports: [ ]
    Supported link modes:   Not reported
    Supported pause frame use: No
    Supports auto-negotiation: No
    Advertised link modes:  Not reported
    Advertised pause frame use: No
    Advertised auto-negotiation: No
    Speed: 1000Mb/s
    Duplex: Full
    Port: Other
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: off
    Link detected: yes
//切り替えコマンド
[root@bond01 ~]# ifenslave -c bond0 eth1
//切り替わったことを確認
[root@bond01 ~]# cat /proc/net/bonding/bond0  | grep Currently
Currently Active Slave: eth1
//messgaes log出力
Oct  5 14:59:45 bond01.tagutagu.com kernel: [19797355.867324] bond0: Setting eth1 as active slave
Oct  5 14:59:45 bond01.tagutagu.com kernel: [19797355.867329] bond0: making interface eth1 the new active one
Copyright © 2021 たぐたぐ.com. All rights reserved.