LACP(802.3ad
)が機能しない一部のサーバーにバグがあります。すべてのサーバーに、2つのeth
スレーブを備えたボンディングデバイスbond0
があり、各インターフェイスが異なるスイッチに接続されており、両方のスイッチがLACPで構成されています。
すべてが問題ないようですが、ネットワークエンジニアは、物理デバイスが稼働しているときに一部のMLAG(Arista LACP実装)が機能していないことを検出しました。
影響を受けるサーバーの/proc/net/bonding/bond0
を調べたところ、各インターフェイスに異なるAggregator ID
があることがわかりました。通常のサーバーでは、Aggregator ID
は同じです。
スイッチのポートをオフにしてからオンにすることで問題を再現できます。その後、物理リンクが稼働しているにもかかわらずMLAGがダウンしているのを確認できます。このバグはRHEL 6および7に存在します(ただし、すべてのサーバーが影響を受けるわけではありません)。
構成
#/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
MACADDR=14:02:ec:44:e9:80
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
BONDING_OPTS="mode=802.3ad lacp_rate=slow xmit_hash_policy=layer3+4"
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
PEERDNS=no
# /etc/sysconfig/network-scripts/ifcfg-eno49 (same for other interface)
HWADDR=14:02:ec:44:e9:80
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
PEERDNS=no
サーバーにeth
インターフェースを設定してセットアップしますが、これは理想的ではありません。
LACPプロトコルを確認するために、
tcpdump -i eno49 -tt -vv -nnn ether Host 01:80:c2:00:00:02
1つのインターフェイスで30秒ごとにパケットを表示できますが、LACPセッションを確立しようとしていたので、もう1つでは1秒ごとにパケットが表示されます。
それをトラブルシューティングして修正する方法はありますか?
(申し訳ありませんが、ネットワークに正しい用語を使用しなかった場合、LACPにはあまり熟練していません)
ありがとう
いくつかのドキュメントといくつかのテストを掘り下げた後、サーバーがボンディングを使用しているとき、miimon
モジュールのbonding
パラメーターを使用してネットワークリンクを強制的に監視する必要があることがわかりました。
/proc/net/bonding/bond0
を見ると、デバイスの1つがMIIステータスdown
を持っているのがわかりました。実際には、リンクレベルで稼働しています。
https://access.redhat.com/articles/172483#Link_Monitoring_Modes は次のように述べています。
miimon
またはarp_interval
およびarp_ip_target
パラメータのいずれかのリンク監視モードを指定することが重要です。リンク監視モードなしで結合を構成することは、結合ドライバーの有効な使用法ではありません
ifcfg-bond0
ファイルでそれを報告するには、BONDING_OPTS
オプションで渡します
#/etc/sysconfig/network-scripts/ifcfg-bond0
...
BONDING_OPTS="mode=802.3ad lacp_rate=slow xmit_hash_policy=layer3+4 miimon=100"
...
したがって、100msごとにリンクをポーリングする必要があります。
ネットワークサービスを再起動して、変更を適用します。