インフラエンジニアbacchiのわかったことまとめ

bacchi.me

CentOS7(RHEL7)でbondingの設定

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!

  • B!