RHEL7 Teamingによる冗長化
Teaming
-
Bondingドライバーは、すべての機能が
カーネルモジュールとして実装されており、機能拡張が困難。
また、設定変更にはモジュールの再読み込みが必要。 -
Termドライバーは、カーネルモジュールとユーザランドで機能を分離したデザインとなっており、機能拡張や管理ツールの実装が容易。
ネットワークチーミングとボンディングの比較は、以下のRedHatのサイトで確認できます。
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Comparison_of_Network_Teaming_to_Bonding.html
Teamデバイス作成
- Teamデバイス[team0]とその接続[team-team0]を作成し、IPアドレスを設定。
# nmcli c add type team ifname team0 con-name team-team0
# nmcli c mod team-team0 ipv4.method manual ipv4.address "192.168.0.30/24"
- 物理NIC[ens38][ens39]を
Teamデバイスのスレーブとして追加する
接続[team-slave-ens38][team-slave-ens3]を作成
# nmcli c add type team-slave ifname ens38 con-name team-slave-ens38 master team-team0
接続 'team-slave-ens38' (28365b38-f015-4ec9-bd5d-6a7393c1744c) が正常に追加され ました。
# nmcli c add type team-slave ifname ens39 con-name team-slave-ens39 master team-team0
接続 'team-slave-ens39' (8456df7a-178a-4645-89da-267a9ccf9212) が正常に追加され ました。
- Teamingの構成は、デフォルト・ラウンドロビン方式となるためデフォルト構成で使用する場合は、それぞれの接続をdown/upしteamデバイスを有効化する。
# nmcli c down team-team0
接続 'team-team0' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/6)
# nmcli c up team-slave-ens38
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/9)
# nmcli c up team-slave-ens39
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/11)
# nmcli c up team-team0
接続が正常にアクティベートされました (マスターはスレーブを待機しています) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/12)
Teamデバイス稼働状況確認
# nmcli c
名前 UUID タイプ デバイス
eth0 15f03ecd-42c9-4cf6-89ec-6da8d0e08ce9 802-3-ethernet ens33
team-slave-ens38 28365b38-f015-4ec9-bd5d-6a7393c1744c 802-3-ethernet ens38
team-slave-ens39 8456df7a-178a-4645-89da-267a9ccf9212 802-3-ethernet ens39
team-team0 03105443-4c9b-4c92-a386-79997a424ee1 team team0
- Teamデバイスの稼働状況は、[teamdctl]で確認。
# teamdctl team0 state
setup:
runner: roundrobin
ports:
ens38
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens39
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
なお、ethtoolでは稼働状況は確認できません。
ethtoolコマンドだと以下のように表示されます。
# ethtool team0
Settings for team0:
Link detected: yes
- [nmcli]コマンドで設定したTeamデバイス設定ファイルは、bonding同様[/etc/sysconfig/network-scripts]に保存されます。
上記コマンドで設定したTeamデバイス設定ファイル例
# cat ifcfg-team-team0
DEVICE=team0
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=team-team0
UUID=03105443-4c9b-4c92-a386-79997a424ee1
ONBOOT=yes
DEVICETYPE=Team
IPADDR=192.168.0.30
PREFIX=24
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
# cat ifcfg-team-slave-ens38
NAME=team-slave-ens38
UUID=28365b38-f015-4ec9-bd5d-6a7393c1744c
DEVICE=ens38
ONBOOT=yes
TEAM_MASTER=03105443-4c9b-4c92-a386-79997a424ee1
DEVICETYPE=TeamPort
- Teamデバイスの構成は、JSONファイルに記述し、それを読み込む。
設定サンプルファイル格納ディレクトリ
[/usr/share/doc/teamd-1.25/example_configs]
TeamデバイスをActive-Backup(fail back無)に設定する
# cp -p /usr/share/doc/teamd-1.25/example_configs/activebackup_ethtool_1.conf /tmp/myconfig.conf
# vi /tmp/myconfig.conf
# cat /tmp/myconfig.conf
{
"device": "team0",
"runner": {"name": "activebackup"},
"link_watch": {"name": "ethtool"},
"ports": {
"ens38": {
"prio": -10,
"sticky": true
},
"ens39": {
"prio": 100
}
}
}
# nmcli c mod team-team0 team.config /tmp/myconfig.conf
# nmcli c down team-team0
接続 'team-team0' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/12)
# nmcli c up team-slave-ens38
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/9)
# nmcli c up team-slave-ens39
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/11)
# nmcli c up team-team0
接続が正常にアクティベートされました (マスターはスレーブを待機しています) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/12)
- [teamdctl]コマンドで状態確認するとactivbackupに変更され、
# teamdctl team0 state
setup:
runner: activebackup
ports:
ens39
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens38
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: ens38
その他機能
RHEL7では、Teaming、Bonding以外に
ブリッジやVLAN機能もありますが現状では使用する用途が私にはないので省略します。
RHEL7/CentOS7のnmcliコマンドでTeamデバイス/Bondingデバイス/VLAN/ブリッジを組み合わせる方法
http://enakai00.hatenablog.com/entry/20150118/1421587442