CentOS7(RHEL7)なサーバーで nmcli を使ってbondingの設定をしたのでメモ。
下記の構成を作成しました。
em1 -|
|--bond0(192.168.0.10/24)
em2 -|
前提条件
以下の様な環境で設定をします。
- NICが複数ある。
- 少なくとも2つ以上のNICがSwitchに接続されている。
現在のN/W周りの設定は以下のとおり。
# nmcli c
NAME UUID TYPE DEVICE
em1 f3009b45-eb4f-4548-8e7f-ba7326d3f201 802-3-ethernet --
em2 8c555b45-64be-4ed6-91ff-d14295ade327 802-3-ethernet --
# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: mtu 1500 qdisc mq state UP qlen 1000
link/ether 14:18:77:6f:af:b4 brd ff:ff:ff:ff:ff:ff
3: em2: mtu 1500 qdisc mq state UP qlen 1000
link/ether 14:18:77:6f:af:b5 brd ff:ff:ff:ff:ff:ff
Bonding設定
Bondingデバイスの作成
まずはBondingデバイスの作成をおこないます。
# nmcli connection add type bond autoconnect no con-name bond0 ifname bond0 mode active-backup
Connection 'bond0' (cb609f66-435c-4acd-aa68-d14295ade327) successfully added.t no con-name bond0 ifname bond0 mode active-backup
きちんとBondingデバイスが作成されているか確認します。
# nmcli c
NAME UUID TYPE DEVICE
bond0 cb609f66-435c-4acd-aa68-d14295ade327 bond --
em1 f3009b45-eb4f-4548-8e7f-ba7326d3f201 802-3-ethernet --
em2 8c555b45-64be-4ed6-91ff-d14295ade327 802-3-ethernet --
bond0がTYPE bond で作成されているのでOK!
slaveの追加
続いて、bond0にslaveを追加していきます。
まずは1つ目・・
# nmcli connection add type bond-slave autoconnect no ifname em1 master bond0
Connection 'bond-slave-em1' (07235deb-d72c-4d45-b04c-c89fed8de524) successfully added.
em1がbond0のslaveになっていることを確認しましょう。
# nmcli c
NAME UUID TYPE DEVICE
bond-slave-em1 07235deb-d72c-4d45-b04c-c89fed8de524 802-3-ethernet --
bond0 cb609f66-435c-4acd-aa68-d14295ade327 bond --
em1 f3009b45-eb4f-4548-8e7f-ba7326d3f201 802-3-ethernet --
em2 8c555b45-64be-4ed6-91ff-d14295ade327 802-3-ethernet --
# nmcli -f connection c s bond-slave-em1
connection.id: bond-slave-em1
connection.uuid: 07235deb-d72c-4d45-b04c-c89fed8de524
connection.interface-name: em1
connection.type: 802-3-ethernet
connection.autoconnect: no
connection.autoconnect-priority: 0
connection.timestamp: 0
connection.read-only: no
connection.permissions:
connection.zone: --
connection.master: bond0
connection.slave-type: bond
connection.autoconnect-slaves: -1 (default)
connection.secondaries:
connection.gateway-ping-timeout: 0
connection.metered: unknown
バッチリですね。
続いて、em2もslaveとして追加しましょう。
# nmcli connection add type bond-slave autoconnect no ifname em2 master bond0
Connection 'bond-slave-em2' (42a58432-062e-48ae-b020-e4508a48864e) successfully added.
em2がbond0のslaveになっていることを確認しましょう。
# nmcli c
NAME UUID TYPE DEVICE
bond-slave-em1 07235deb-d72c-4d45-b04c-c89fed8de524 802-3-ethernet --
bond-slave-em2 42a58432-062e-48ae-b020-e4508a48864e 802-3-ethernet --
em1 f3009b45-eb4f-4548-8e7f-ba7326d3f201 802-3-ethernet --
em2 8c555b45-64be-4ed6-91ff-d14295ade327 802-3-ethernet --
# nmcli -f connection c s bond-slave-em2
connection.id: bond-slave-em2
connection.uuid: 42a58432-062e-48ae-b020-e4508a48864e
connection.interface-name: em2
connection.type: 802-3-ethernet
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.timestamp: 1461214490
connection.read-only: no
connection.permissions:
connection.zone: --
connection.master: bond0
connection.slave-type: bond
connection.autoconnect-slaves: -1 (default)
connection.secondaries:
connection.gateway-ping-timeout: 0
connection.metered: 不明
OKですね。
BondingインターフェースにIPアドレスを設定する。
bond0にIPv4 ネットワークの設定、IPv6の無効化を行っていきます。
# nmcli c mod bond0 ipv4.method manual ipv4.address "192.168.0.10/24" ipv4.gateway "192.168.0.254" ipv6.method ignore
# nmcli c mod bond0 ipv4.dns 8.8.8.8
それでは設定を確認しましょう。
# nmcli -f ipv4 c s bond0
ipv4.method: manual
ipv4.dns: 8.8.8.8
ipv4.dns-search:
ipv4.addresses: 192.168.0.10/24
ipv4.gateway: 192.168.0.254
ipv4.routes:
ipv4.route-metric: -1
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: --
ipv4.never-default: no
ipv4.may-fail: yes
きちんと設定されています!
自動起動設定の変更
再起動とかした時にem1、em2に接続しないようにautoconnectの設定をnoに変えます。
# nmcli c m em1 connection.autoconnect no
# nmcli c m em2 connection.autoconnect no
続いて、再起動とかしたらbond0に接続するようにbond0とslaveのautoconnectの設定をyesに変えます。
# nmcli c m bond-slave-em1 connection.autoconnect yes
# nmcli c m bond-slave-em2 connection.autoconnect yes
# nmcli c m bond0 connection.autoconnect yes
設定の反映とbondingデバイスの有効化
これまでの設定を反映させて、bondingネットワークを立ち上げましょう。
# systemctl restart NetworkManager
# systemctl restart network.service
# nmcli c up bond-slave-em1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
# nmcli c up bond-slave-em2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
# nmcli c up bond0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
OKぽいですね。
それでは、ネットワークの状態を見てみます。
# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: mtu 1500 qdisc mq master bond0 state UP qlen 1000
link/ether 14:18:77:6f:af:b4 brd ff:ff:ff:ff:ff:ff
3: em2: mtu 1500 qdisc mq master bond0 state UP qlen 1000
link/ether 14:18:77:6f:af:b4 brd ff:ff:ff:ff:ff:ff
4: bond0: mtu 1500 qdisc noqueue state UP
link/ether 14:18:77:6f:af:b4 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.10/24 brd 192.168.0.255 scope global bond0
valid_lft forever preferred_lft forever
inet6 fe80::1618:77ff:fe6f:afb4/64 scope link
valid_lft forever preferred_lft forever
# ping yhoo.com
PING yhoo.com (98.137.236.150) 56(84) bytes of data.
64 bytes from w2.src.vip.gq1.yahoo.com (98.137.236.150): icmp_seq=1 ttl=44 time=120 ms
64 bytes from w2.src.vip.gq1.yahoo.com (98.137.236.150): icmp_seq=2 ttl=44 time=121 ms
^C
--- yhoo.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 120.971/120.993/121.015/0.022 ms
外のN/Wと疎通できてるのでOK!