【CentOS 8】ネットワークボンディング設定について

インフラサーバ

はじめに

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.ボンディングモード説明対向スイッチに必要な設定
0balance-rr
※デフォルト
ラウンドロビン方式で送信LACP を使用しない静的な EtherChannel を有効にする
1active-backupアクティブ/バックアップ方式特になし
2balance-xor送信元/先 MACアドレスを元に送信スレーブを決定LACP を使用しない静的な EtherChannel を有効にする
3broadcastブロードキャストポリシーLACP を使用しない静的な EtherChannel を有効にする
4802.3adIEEE 802.3ad (LACP) リンクアグリゲーションLACP を使用した EtherChannel を有効にする
5balance-tlbスレーブの負荷に応じて送信スレーブを決定しパケットを送信特になし
6balance-albbalance-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として扱うための技術で…

―――――――――――――

タイトルとURLをコピーしました