web-dev-qa-db-ja.com

Ubuntu 18.04でネットプランを使用して結合された802.3adネットワークを構成する

802.3adプロトコルを使用してeno1, eno2, eno3, eno4という名前の4つのハードウェアイーサネットポートを結合するように、Ubuntu 18.04サーバーでネットプランを構成する際に問題が発生します。 netplan man page を参照し、次の構成ファイル/etc/netplan/50-cloud-init.yamlをまとめました。

network:
  version: 2
  renderer: networkd
  ethernets:
    eports:
      match: 
        name: eno*
  bonds:
    bond0:
      interfaces: [eports]
      addresses: [192.168.1.101/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]          
      parameters:
        mode: 802.3ad            
        lacp-rate: fast            
        mii-monitor-interval: 100

コマンドSudo netplan --debug applyを実行すると、次の情報を受け取ります。

** (generate:6473): DEBUG: 00:39:14.911: Processing input file //etc/netplan/50-cloud-init.yaml..
** (generate:6473): DEBUG: 00:39:14.911: starting new processing pass
** (generate:6473): DEBUG: 00:39:14.911: eports: setting default backend to 1
** (generate:6473): DEBUG: 00:39:14.911: bond0: setting default backend to 1
** (generate:6473): DEBUG: 00:39:14.912: Generating output files..
** (generate:6473): DEBUG: 00:39:14.912: NetworkManager: definition eports is not for us (backend 1)
** (generate:6473): DEBUG: 00:39:14.912: NetworkManager: definition bond0 is not for us (backend 1)
DEBUG:netplan generated networkd configuration exists, restarting networkd
DEBUG:no netplan generated NM configuration exists
DEBUG:device eno2 operstate is up, not replugging
DEBUG:netplan triggering .link rules for eno2
DEBUG:device lo operstate is unknown, not replugging
DEBUG:netplan triggering .link rules for lo
DEBUG:replug eno3: unbinding 0000:03:00.0 from /sys/bus/pci/drivers/igb
DEBUG:replug eno3: rebinding 0000:03:00.0 to /sys/bus/pci/drivers/igb
DEBUG:replug eno1: unbinding 0000:01:00.0 from /sys/bus/pci/drivers/igb
DEBUG:replug eno1: rebinding 0000:01:00.0 to /sys/bus/pci/drivers/igb
DEBUG:Cannot replug bond0: cannot read link /sys/class/net/bond0/device: [Errno 2] No such file or directory: '/sys/class/net/bond0/device'
DEBUG:netplan triggering .link rules for bond0
DEBUG:replug eno4: unbinding 0000:04:00.0 from /sys/bus/pci/drivers/igb
DEBUG:replug eno4: rebinding 0000:04:00.0 to /sys/bus/pci/drivers/igb

声明をどうするかわからない

Cannot replug bond0: cannot read link /sys/class/net/bond0/device: [Errno 2] No such file or directory: '/sys/class/net/bond0/device'

ディレクトリ/sys/class/net/bond0netplan applyコマンドによって生成されたためです。

ifconfig出力を確認しましたが、bond0にアドレスが設定されていないことを除いて、ネットワークデバイスが正しく構成されているようです。

bond0: flags=5123<UP,BROADCAST,MASTER,MULTICAST>  mtu 1500
    ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
    RX packets 112768  bytes 7785014 (7.7 MB)
    RX errors 0  dropped 54  overruns 0  frame 0
    TX packets 18854  bytes 2337896 (2.3 MB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
    ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
    RX packets 290  bytes 19322 (19.3 KB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 55  bytes 6820 (6.8 KB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device memory 0xdf400000-df47ffff  

eno2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
    ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
    RX packets 73991  bytes 29824155 (29.8 MB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 20848  bytes 2110417 (2.1 MB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device memory 0xdf300000-df37ffff  

eno3: flags=6147<UP,BROADCAST,SLAVE,MULTICAST>  mtu 1500
    ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device memory 0xdf200000-df27ffff  

eno4: flags=6147<UP,BROADCAST,SLAVE,MULTICAST>  mtu 1500
    ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device memory 0xdf100000-df17ffff  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10<Host>
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 2923  bytes 184477 (184.4 KB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 2923  bytes 184477 (184.4 KB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ether XX:XX:XX:XX:XX:XXステートメントは、各インターフェイスのMACアドレスの代わりにあります。元の出力では、すべてのアドレスは同じです。

システムを正常に構成するために何が欠けていますか?

2
n8tlarsen

掘り下げた後、Ubuntu 18.04はcloud-initというユーティリティを使用して、ブートシーケンス中にネットワーク構成と初期化を処理することを発見しました。ファイル/etc/cloud/cloud.cfg.d/50-curtin-networking.cfgおよびその他の.cfgファイルは、cloud-init設定の再構成に使用されます。私の設定ファイルの設定は次のとおりです。

network:
  version: 2
  ethernets:
    eports:
      match:
        name: eno*
      optional: true
  bonds:
    bond0:
      interfaces: [eports]
      addresses: [192.168.1.101/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
      parameters:
        mode: 802.3ad
        lacp-rate: fast
        mii-monitor-interval: 100

optional: trueパラメーターは、起動時にシステムが有効なネットワーク接続を待機するのを防ぎます。これにより、マシンが起動するまで2分間待機する手間が省けます。構成ファイルを更新した後、次のコマンドを実行して構成を更新します。

cloud-init clean -reboot

または、次を実行すると、マシンを再起動せずにデバッグ情報を取得できます。ただし、初期ブート段階で変更をコミットするには再起動が必要です。

cloud-init clean
cloud-init init
cloud-init status 
3
n8tlarsen

Netplan.ioサイトは、cloud-initがnetplanによって構成されたいくつかのユーティリティの1つであることを示しているようです。ネットプランの問題は、後でボンディングする物理インターフェイスを指定するときにdhcp4 = falseを指定する必要があることです。そうしないと、アドレスが結合される前にDHCPによって個々のインターフェースに接続される場合があります。したがって、ボンディング時には、既存のIPロジックとの競合があります。

DHCPプロセスが発生する前にインターフェイスを結合することにより、cloud-init(ブートシーケンスの早い方?)の回避策が機能する可能性があります。または、clean/initシーケンスを使用してDHCPアドレスをリセットし、DHCPプロセスを再適用する前に結合します。ただし、これは、メンテナがブートロジック/シーケンスに少しでも変更を加えると、回避策が機能しなくなる可能性があることを意味します。

0
Curious