RHEL7 でチーミング設定するときはランナーに気を付けて

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 に切り替わる。これでいい。これでいいのだ。