カメラにリンクされている1つのスイッチ(10.0.10.10)にリンクされている2つのスイッチ間のボンディングを設定しようとしました:
Camera
|
|
Switch 1 - - - - - - - -
| |
| A | B
| |
Switch Primary Switch Secondary
| |
C | enp3s4f0 D | enp3s4f1
| |
| |
---------------------------
|Ubuntu 18.04 |
| bond0 |
|------------------------ |
目的は、接続A/B/C/Dのいずれかが停止した場合にカメラにpingできるようにすることです。現在、接続Aが停止した場合、カメラにpingを送信できません。他の接続が失敗した場合でも、カメラにpingを送信できます。
これは私の01-netcfg.yamlです
network:
version: 2
renderer: networkd
ethernets:
enp3s4f0:
addresses: [ ]
enp3s4f1:
addresses: [ ]
bonds:
bond0:
addresses: [ 10.0.10.101/24 ]
gateway4: 10.0.10.10
nameservers:
addresses: [ 1.1.1.1, 1.1.1.0 ]
interfaces: [ enp3s4f0, enp3s4f1 ]
parameters:
mode: active-backup
primary: enp3s4f0
ネットプランを適用した後、エラーはスローされません。
Sudo netplan apply
問題は、Aが切断されても、サーバーは接続Cをアクティブとして認識しているため、ボンドがインターフェースを変更せず、プライマリスイッチからカメラにアクセスしようとし続けることです。これは不可能です。
Netplan.ioのリファレンスページから here に役立つボンドパラメータが見つかります。
arp-interval (scalar)
Set the interval value for how frequently ARP link monitoring should
happen. The default value is 0, which disables ARP monitoring. For the
networkd backend, this maps to the ARPIntervalSec= property. If no time
suffix is specified, the value will be interpreted as milliseconds.
arp-ip-targets (sequence of scalars) IPs of other hosts on the link which
should be sent ARP requests in order to validate that a slave is up.
This option is only used when arp-interval is set to a value other than 0.
At least one IP address must be given for ARP link monitoring to function.
Only IPv4 addresses are supported. You can specify up to 16 IP addresses.
The default value is an empty list.
したがって、bond0スタンザでは、次のように変更しました。
parameters:
mode: active-backup
primary: enp3s4f0
に:
parameters:
mode: active-backup
primary: enp3s4f0
arp-interval: 10
arp-ip-targets: 10.0.10.10
これで、カメラがオフラインになると、bond0は他のスイッチに正常に切り替え、カメラをオンラインに戻します。