はじめに
Red Hat Enterprise Linux や CentOS においてインターフェース (NIC) を冗長化する、ボンディング
の設定方法について記載します。
ボンディングの代替機能であるチーミングについてはこちらの記事参照。
作業環境
- CentOS 8.0
用語について
- マスターインターフェース
- ボンディングの親となる仮想NIC
- スレーブインターフェース
- マスターインターフェースに対して紐づけられる物理NIC
ボンディング基本設定手順
ボンディング設定は NetworkManager を使用して行います。
マスターの作成
nmcli c add type bond ifname デバイス名 con-name コネクション名
# nmcli c add type bond ifname bond0 con-name bond0
接続 'bond0' (8f32ee64-5288-4cef-b28a-59191d8d2e95) が正常に追加されました。
# nmcli d
DEVICE TYPE STATE CONNECTION
ens33 ethernet 接続済み ens33
virbr0 bridge 接続済み virbr0
bond0 bond 接続中 (IP 設定を取得中) bond0
ens37 ethernet 切断済み --
ens38 ethernet 切断済み --
lo loopback 管理無し --
virbr0-nic tun 管理無し --
# nmcli c
NAME UUID TYPE DEVICE
ens33 5c94fe60-d4d6-4364-ad57-e33b1f988dba ethernet ens33
virbr0 b7f98d8b-982e-483b-bfc0-1fbbcc543347 bridge virbr0
bond0 8f32ee64-5288-4cef-b28a-59191d8d2e95 bond bond0
マスターへのスレーブの追加
マスターに対してスレーブを追加するためには以下コマンドを実行します。
nmcli c add type ethernet ifname スレーブデバイス名 master マスターデバイス名
# nmcli c add type ethernet ifname ens37 master bond0
接続 'bond-slave-ens37' (a47cd105-1c58-40c5-997b-58263941727c) が正常に追加されました。
# nmcli c add type ethernet ifname ens38 master bond0
接続 'bond-slave-ens38' (39e98347-181e-419b-95be-13248a50dd79) が正常に追加されました。
# nmcli d
DEVICE TYPE STATE CONNECTION
ens33 ethernet 接続済み ens33
bond0 bond 接続済み bond0
virbr0 bridge 接続済み virbr0
ens37 ethernet 接続済み bond-slave-ens37
ens38 ethernet 接続済み bond-slave-ens38
lo loopback 管理無し --
virbr0-nic tun 管理無し --
# nmcli c
NAME UUID TYPE DEVICE
bond-slave-ens37 a47cd105-1c58-40c5-997b-58263941727c ethernet ens37
bond-slave-ens38 39e98347-181e-419b-95be-13248a50dd79 ethernet ens38
bond0 8f32ee64-5288-4cef-b28a-59191d8d2e95 bond bond0
ens33 5c94fe60-d4d6-4364-ad57-e33b1f988dba ethernet ens33
virbr0 b7f98d8b-982e-483b-bfc0-1fbbcc543347 bridge virbr0
コネクションのアクティブ化
スレーブをアクティブ化すると、マスターもアクティブ化されます。
nmcli c up コネクション名
# nmcli c up bond-slave-ens37
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/10)
# nmcli c up bond-slave-ens38
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/11)
ボンディングの設定および状態確認
cat /proc/net/bonding/マスターデバイス名
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:62:6d:14
Slave queue ID: 0
Slave Interface: ens38
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:62:6d:1e
Slave queue ID: 0
ボンディング設定の削除
ボンディング設定を削除する場合は、マスター及びスレーブのコネクションを削除します。
# nmcli c delete bond0
接続 'bond0' (8f32ee64-5288-4cef-b28a-59191d8d2e95) が正常に削除されました。
# nmcli c delete bond-slave-ens37
接続 'bond-slave-ens37' (a47cd105-1c58-40c5-997b-58263941727c) が正常に削除されました。
# nmcli c delete bond-slave-ens38
接続 'bond-slave-ens38' (39e98347-181e-419b-95be-13248a50dd79) が正常に削除されました。
# nmcli c
NAME UUID TYPE DEVICE
ens33 5c94fe60-d4d6-4364-ad57-e33b1f988dba ethernet ens33
virbr0 b7f98d8b-982e-483b-bfc0-1fbbcc543347 bridge virbr0
# nmcli d
DEVICE TYPE STATE CONNECTION
ens33 ethernet 接続済み ens33
virbr0 bridge 接続済み virbr0
ens37 ethernet 切断済み --
ens38 ethernet 切断済み --
lo loopback 管理無し --
virbr0-nic tun 管理無し --
マスターとスレーブの関係
- マスターインターフェースを起動しても、スレーブインターフェースは自動的に起動されない
- スレーブインターフェースを起動すると、マスターインターフェースは毎回、自動的に起動される
- マスターインターフェースを停止すると、スレーブインターフェースも停止される
ボンディングモードについて
No. | ボンディングモード | 説明 | 対向スイッチに必要な設定 |
0 | balance-rr ※デフォルト | ラウンドロビン方式で送信 | LACP を使用しない静的な EtherChannel を有効にする |
1 | active-backup | アクティブ/バックアップ方式 | 特になし |
2 | balance-xor | 送信元/先 MACアドレスを元に送信スレーブを決定 | LACP を使用しない静的な EtherChannel を有効にする |
3 | broadcast | ブロードキャストポリシー | LACP を使用しない静的な EtherChannel を有効にする |
4 | 802.3ad | IEEE 802.3ad (LACP) リンクアグリゲーション | LACP を使用した EtherChannel を有効にする |
5 | balance-tlb | スレーブの負荷に応じて送信スレーブを決定しパケットを送信 | 特になし |
6 | balance-alb | balance-tlbの機能に加え、受信も負荷分散 | 特になし |
ボンディングモードの確認
cat /sys/class/net/bond0/bonding/mode
# cat /sys/class/net/bond0/bonding/mode
balance-rr 0
ボンディングモードの変更
nmcli c modify マスターコネクション名 +bond.options "mode=モード番号or名前"
モード番号
で指定する場合は、上の表のNo.
欄の番号を指定モード名
で指定する場合は、上の表のボンディングモード
欄の名前を指定
nmcli c up マスターコネクション名
- アクティブ化して設定変更を反映
# cat /sys/class/net/bond0/bonding/mode
balance-rr 0
# nmcli c down bond0
接続 'bond0' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/30)
# nmcli c modify bond0 +bond.options "mode=active-backup"
# nmcli c up bond-slave-ens37
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/33)
# nmcli c up bond-slave-ens38
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/36)
# cat /sys/class/net/bond0/bonding/mode
active-backup 1
active-backup モードの設定
active_slave オプション
active_slave
オプションで設定したインターフェースが、直ちにアクティブスレーブになります。
primary オプション
primary
オプションでは、新たなスレーブが追加された時またはアクティブスレーブに障害が発生した時にカーネルが自動的に選択するアクティブスレーブを指定します。
active_slave および primary の設定
nmcli c modify マスターコネクション名 +bond.options "active_slave=スレーブデバイス名"
- アクティブスレーブの設定
nmcli c modify マスターコネクション名 +bond.options "primary=スレーブデバイス名"
- プライマリスレーブの設定
nmcli c up マスターコネクション名
- アクティブ化して設定変更を反映
# 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: ens37
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:62:6d:14
Slave queue ID: 0
Slave Interface: ens38
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:62:6d:1e
Slave queue ID: 0
# nmcli c modify bond0 +bond.options "primary=ens38"
# nmcli c modify bond0 +bond.options "active_slave=ens38"
# nmcli c up bond0
接続が正常にアクティベートされました (master waiting for slaves) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/43)
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: ens38 (primary_reselect always)
Currently Active Slave: ens38
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:62:6d:14
Slave queue ID: 0
Slave Interface: ens38
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:62:6d:1e
Slave queue ID: 0
参考資料

第7章 ネットワークボンディングの設定 Red Hat Enterprise Linux 7 | Red Hat Customer Portal
Access Red Hat’s knowledge, guidance, and support through your subscription.

RHEL7 Bondingによる冗長化 - Qiita
RHEL7 Bondingによる冗長化Bondingとは1台のマシンに複数のネットワーク・インタフェース・カード(NIC)を搭載し,それらのNICを束ね一つの仮想的なNICとして扱うための技術で…
―――――――――――――