2020年8月25日火曜日

Linuxのネットワークチーミング (Bonding) の設定手順【RHEL 7/CentOS7以降対応】

Linuxでは、複数のNICを束ねて (チーミングして) 冗長化する機能として「Bonding」がある。

BondingはOS標準の機能として利用できるものであり、設定方法は、以前以下にて記事にしている。

上記記事は、RHEL 6やCentOS 6時代のネットワーク設定ファイルを直接編集する方法であり、現在主流となっているRHEL 7 (CentOS 7) 以降のOSでは推奨されない設定方法となっている。

今回は、推奨手順である「NetworkManager」を使ったBondingの設定手順を記載する。

環境

  • OS : CentOS 8
  • NIC構成
    • ens192 : 作業のためにSSH接続するためのNIC
    • bond0 : ens224とens256を所属させる

Bonding設定手順

1. 設定前のNICの確認

NICの初期状態は以下の通り。ens224とens256をBondingして冗長化する。

# nmcli d s
DEVICE  TYPE      STATE     CONNECTION
ens192  ethernet  接続済み  ens192
ens224  ethernet  接続済み  ens224
ens256  ethernet  接続済み  ens256
lo      loopback  管理無し  --
# nmcli c s
NAME    UUID                                  TYPE      DEVICE
ens192  d218a6ca-5466-43af-a7a1-30a61fd832bb  ethernet  ens192
ens224  82f2f852-b37d-4cee-a1c5-ea87e2f0977b  ethernet  ens224
ens256  29593342-dfc3-4eef-8c3d-83937a27dc39  ethernet  ens256

2. 自動認識しているNIC設定を削除

自動認識しているens224とens256の2つのNIC設定 (Connection) は不要となるため削除しておく。削除はnmcli c delコマンドにて行う。

# nmcli c del ens224
接続 'ens224' (2f419b53-b2b3-4901-8845-40f3008783ba) が正常に削除されました。
# nmcli c del ens256
接続 'ens256' (9a9b2f3c-9bb4-4af4-af85-307c79fad4d0) が正常に削除されました。

3. Bondインタフェースを作成

Bondインタフェースを新規作成する。通常、ifnameは物理NICのデバイス名を指定するが、Bondインタフェースは特に実態となる物理NICが存在しないため、インタフェース名 (con-name) と同様に「bond0」にて作成すればよい。

bond.optionsについては、以下で設定した。

  • downdelay=0 : 監視でNICのリンクダウンを検知した後、ステータスを「down」に変化させるまでの遅延。0で無効に設定
  • miimon=100 : 監視感覚を100msecに設定
  • mode=activebackup : 冗長化方式をActive-Backupに設定
  • primary=ens224 : 優先インタフェースをens224に設定
  • updelay=0 : 監視でNICのリンクアップを検知した後、ステータスを「up」に変化させるまでの遅延。0で無効に設定
# nmcli c add type bond con-name bond0 ifname bond0 bond.options "downdelay=0,miimon=100,mode=active-backup,primary=ens224,updelay=0"
接続 'bond0' (aa7cfc85-ad14-4d2b-a3c9-d9154fd80957) が正常に追加されました。

4. BondインタフェースにNICを追加

先ほど作成したBondインタフェースである「bond0」に物理NICを追加する。「bond0」に所属させるため、slave-type bondmaster bond0を設定する。

# nmcli c add type ethernet slave-type bond con-name ens224 ifname ens224 master bond0
接続 'ens224' (ee918a9a-bdbb-489d-9feb-1d6efefe94e4) が正常に追加されました。
# nmcli c add type ethernet slave-type bond con-name ens256 ifname ens256 master bond0
接続 'ens256' (f8ec5b06-d43d-4d7e-a885-ac5120d556f2) が正常に追加されました。

5. BondインタフェースにIPアドレス等を設定

通常のインタフェースの設定と同様に、IPアドレスやデフォルトゲートウェイ、DNSなどの設定を投入する。設定内容は以下の通り。

  • IPv4設定を「手動」に : ipv4.method manual
  • IPv4アドレス : ipv4.address 192.168.11.192/24
  • IPv4のDGW : ipv4.gateway 192.168.11.31
  • IPv4のDNS : ipv4.dns 192.168.11.61
  • IPv6設定を「無視」 : ipv6.method ignore
  • OS起動時に自動接続する : connection.autoconnect yes
# nmcli c mod bond0 ipv4.method manual ipv4.address 192.168.11.192/24 ipv4.gateway 192.168.11.31 ipv4.dns 192.168.11.61 ipv6.method ignore connection.autoconnect yes

設定反映のため、アクティベートを実施する。

# nmcli c up bond0
接続が正常にアクティベートされました (master waiting for slaves) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/29)

動作確認

Bondingされたインタフェースの状態は「/proc/net/bonding/[Bondインターフェース]」にて確認できる。今回は「/proc/net/bonding/bond0」となる。

Pingを1秒間隔で打ちながら切り替わり動作を確認してみた。まず、正常時の状態を確認する。

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: ens224 (primary_reselect always)
Currently Active Slave: ens224   ←★ens224がActive
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens224
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:31:7a:1b
Slave queue ID: 0

Slave Interface: ens256
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:31:7a:25
Slave queue ID: 0

ens224を切断すると、もう一方のNICであるens256に切り替わる。切り替わり時のPing欠けは2回だった。

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: ens224 (primary_reselect always)
Currently Active Slave: ens256   ←★ens256に切り替わる
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens224
MII Status: down   ←★ステータスが「down」になる
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1   ←★Failure Countが+1
Permanent HW addr: 00:0c:29:31:7a:1b
Slave queue ID: 0

Slave Interface: ens256
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:31:7a:25
Slave queue ID: 0

ens224を復旧させると、もうens224に切り戻る。切り替わり時のPing欠けは2回だった。

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: ens224 (primary_reselect always)
Currently Active Slave: ens224   ←★ens224に切り替わる
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens224
MII Status: up   ←★ステータスが「up」になる
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1   ←★Failure Countは1のまま
Permanent HW addr: 00:0c:29:31:7a:1b
Slave queue ID: 0

Slave Interface: ens256
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:31:7a:25
Slave queue ID: 0

なお、「Link Failure Count」が1のままリセットされないが、リセットしたい場合は、Bondingデバイスを再度アクティベートすればよい。

# nmcli c up bond0
接続が正常にアクティベートされました (master waiting for slaves) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/35)
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: ens224 (primary_reselect always)
Currently Active Slave: ens224
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens224
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0   ←★Failure Countが0にリセットされる
Permanent HW addr: 00:0c:29:31:7a:1b
Slave queue ID: 0

Slave Interface: ens256
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:31:7a:25
Slave queue ID: 0

参考

0 件のコメント:

コメントを投稿

人気の投稿