モード名称
|
モード
番号
|
送信
分散
|
受信
分散
|
特徴 |
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.