0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【2025年01月】Ubuntu24.04 で ネットワークボンディング(モード6)の設定【冗長化・アダプティブロードバランシング】

Last updated at Posted at 2025-01-12

はじめに

Ubuntu でネットワークボンディングを試してみたメモ

前提

ボンディングとチーミングがあり、以下の認識。

  • シンプルな冗長化や負荷分散 → ボンディング (bonding) 推奨
  • 動的で柔軟な管理や高度な制御 → チーミング (teaming) 推奨

ここでは、ボンディングを行います。

ボンディングにも種類があり、以下の認識。

モード 名称 対向スイッチの設定
balance-rr ラウンドロビン方式 (モード0) 必要
active-backup アクティブ・バックアップ (モード1) 不要
balance-xor XORバランス (モード2) 必要
802.3ad LACP (モード4、推奨) 必要
balance-tlb トランスミッションロードバランシング (モード5) 不要
balance-alb アダプティブロードバランシング (モード6) 不要

ここでは、balance-albによるボンディングを行います。

また、障害の検知方法に種類があり、以下の認識。

  • MII (Media Independent Interface) モニタリング → シンプルで物理リンクの状態を直接監視
  • ARP (Address Resolution Protocol) モニタリング → スイッチ障害やルーティングの問題も検知可能

ここでは、MIIモニタリングを行います。

MII (Media Independent Interface) モニタリングは、物理リンクの状態(リンクアップ/ダウン)をカーネルレベルで直接監視します。インターフェースのリンク状態をポーリング(定期的にチェック)します。

設定方法

netplanによる設定を行います。

  • ネットワークデバイスは、ens18ens19
  • 設定するIPアドレスは 192.168.1.100、GWは 192.168.1.1、DNSは 8.8.8.8, 1.1.1.1

/etc/netplan/50-cloud-init.yaml を以下に修正します。

/etc/netplan/50-cloud-init.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens18:
      dhcp4: no
    ens19:
      dhcp4: no

  bonds:
    bond0:
      interfaces:
        - ens18
        - ens19
      addresses:
        - 192.168.1.100/24
      routes:
      -   to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 1.1.1.1
      parameters:
        mode: balance-alb
        mii-monitor-interval: 100
  • mode: balance-alb: モード6(アダプティブロードバランシング)
  • mii-monitor-interval: リンク状態の監視間隔(100ミリ秒)

設定を反映します。

$ sudo netplan apply

確認方法

$ ip a show bond0
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global bond0
       valid_lft forever preferred_lft forever
$
$ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v6.8.0-51-generic

Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: ens18
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: ens18
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: **:**:**:**:**:**
Slave queue ID: 0

Slave Interface: ens19
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: **:**:**:**:**:**
Slave queue ID: 0

VMなどで設定を行うと、リンク速度が検出されず、以下のエラーがジャーナルに出力される。

Jan 12 09:57:48 hoge kernel: bond0: (slave ens18): failed to get link speed/duplex

この場合、ethtoolでリンク速度を固定で与えてやると出力されなくなる。

$ sudo ethtool -s ens18 speed 1000 duplex full autoneg off
$ sudo ethtool -s ens19 speed 1000 duplex full autoneg off

障害を起こしてみる

片側の切断

ens19 を切断してみる

Jan 12 10:00:01 hoge systemd-networkd[3949]: ens19: Lost carrier
Jan 12 10:00:01 hoge kernel: bond0: (slave ens19): link status definitely down, disabling slave
Jan 12 10:00:01 hoge kernel: bond0: (slave ens18): making interface the new active one
Jan 12 10:00:01 hoge kernel: virtio_net virtio1 ens18: entered promiscuous mode
Jan 12 10:00:11 hoge kernel: virtio_net virtio1 ens18: left promiscuous mode

ens19 を再接続してみる

Jan 12 10:01:47 hoge systemd-networkd[3949]: ens19: Gained carrier
Jan 12 10:01:47 hoge kernel: bond0: (slave ens19): link status definitely up, 1000 Mbps full duplex

ens18 を切断してみる

Jan 12 10:02:51 hoge systemd-networkd[3949]: ens18: Lost carrier
Jan 12 10:02:51 hoge kernel: bond0: (slave ens18): link status definitely down, disabling slave
Jan 12 10:02:51 hoge kernel: bond0: (slave ens19): making interface the new active one
Jan 12 10:02:51 hoge kernel: virtio_net virtio3 ens19: entered promiscuous mode
Jan 12 10:03:02 hoge kernel: virtio_net virtio3 ens19: left promiscuous mode

ens18 を再接続してみる

Jan 12 10:03:30 hoge systemd-networkd[3949]: ens18: Gained carrier
Jan 12 10:03:31 hoge kernel: bond0: (slave ens18): link status definitely up, 1000 Mbps full duplex

両側の切断

ens18ens19 の両方を切断してみる

Jan 12 10:06:26 hoge systemd-networkd[3949]: ens19: Lost carrier
Jan 12 10:06:26 hoge kernel: bond0: (slave ens19): link status definitely down, disabling slave
Jan 12 10:06:26 hoge kernel: bond0: now running without any active interface!
Jan 12 10:06:26 hoge systemd-networkd[3949]: bond0: Lost carrier
Jan 12 10:06:26 hoge systemd-timesyncd[527]: No network connectivity, watching for changes.

ens18ens19 の両方を再接続してみる

Jan 12 10:06:49 hoge systemd-networkd[3949]: ens18: Gained carrier
Jan 12 10:06:49 hoge kernel: bond0: (slave ens18): link status definitely up, 1000 Mbps full duplex
Jan 12 10:06:49 hoge kernel: bond0: (slave ens18): making interface the new active one
Jan 12 10:06:49 hoge kernel: virtio_net virtio1 ens18: entered promiscuous mode
Jan 12 10:06:49 hoge kernel: bond0: active interface up!
Jan 12 10:06:49 hoge systemd-networkd[3949]: bond0: Gained carrier
Jan 12 10:06:52 hoge systemd-networkd[3949]: ens19: Gained carrier
Jan 12 10:06:52 hoge kernel: bond0: (slave ens19): link status definitely up, 1000 Mbps full duplex
Jan 12 10:06:59 hoge kernel: virtio_net virtio1 ens18: left promiscuous mode

さいごに

かんたんでしたね

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?