RHEL7 で eth2 と eth4 をチーミングして team0 と名をつけて動かしている機械がありまして。
こんな設定になっています。
[root@server01 ~]# teamdctl team0 state
setup:
runner: roundrobin
ports:
eth2
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
eth4
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
外から ping 打ち続けてると、時々こぼすんです。
なんなら ssh のセッションが切れたりすることも。
ですが /var/log/messages などの中には特に何の記述もなく、なんだろうかと思っていたんですけど、ふと読んでみたボンディングの記事、ここで気になることが書いてありまして。
Linux Bonding mode=0の恐怖 - テックセンター - Blog - テックセンター - Dell コミュニティ
ボンディングは mode=0 を使う時は気をつけろ。mode=1 で使っておいたほうが安心、とのこと。
これをチーミングに置き換えて見て見ましょう。
チーミングでは、インタフェースの負荷分散やバックアップ方法をどうするかというのをランナーで定義します。
ボンディングでいう mode=0 はチーミングでは roundrobin、ボンディングでいう mode=1 はチーミングでは activebackup。
あわわ。自分の環境ではランナーが roundrobin になってるじゃないですか。これで時々パケットが迷子になってたんですね。
activebackup に変更します。
[root@server01 ~]# nmcli connection modify team0 config '{"runner":{"name":"activebackup"}}'
[root@server01 ~]# systemctl restart network
[root@server01 ~]# teamdctl team0 state
setup:
runner: activebackup
ports:
eth2
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
eth4
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: eth4
よし、現在のアクティブなポートは eth4 になった。これで eth4 がリンクダウンしたら eth2 に切り替わる。これでいい。これでいいのだ。