운영체제/RHEL&CENTOS

[Linux] centos/rhel 7 Bonding 설정

louky 2019. 6. 19. 17:01
반응형

[Linux] centos/rhel 7 bonding  설정

 

 

 Bonding mode 종류

0 : Round-Robin 설정되어 있는 인터페이스의 첫번째 슬레이브부터 마지막 슬레이브까지 순차적으로 전송한다. 부하분산 및 failover기능 제공한다. active-active
1 : Active-Backup bond인터페이스 중 하나만 활성화 되고 다른 인터체이스는 standby mode로 동작하고 있다가 active인 인터페이스가 fail이 될 경우 standby 로 동작하는  인터페이스가  active로 활성화 된다

* active-standby

* 주로 많이 사용

2 : Balance-XOR  Mode 0과 비슷하지만 xor연산을 이용한 목적지 Mac과 근원지 Mac을 이용한 분배 [(출발지 MAC 주소와 도착지 MAC 주소의 XOR) modula 슬레이브 1개]에 기초하여 전송합니다.
    이것은 도착지 MAC 주소에 대해서 동일한 슬레이브를 선택하게 된다. 이 모드는 부하분산과 장애감지를 제공합니다. 
 
3 : Broadcast  2개의 NIC에 어떤 규칙 없이 데이터 통신
    모든 슬레이브 인터페이스에 모든 것을 전송합니다.

 

4 : 802.3ad switch에 aggregation 그룹생성이 필요함.
 IEEE 802.3ad dynamic link aggregation정책을 설정하며 전송과 받는 것은 active aggregator 안에서 모든 slaves 위에서 됩니다.

*link aggregation

*스위치 설정 필요

* 대역폭을 늘리고자 할 경우 사용

 

 

 

먼저 시스템내에 bonding  모듈이 적재되어 있는지 확인한다. 

적재되어 있지 않을 경우 moprobe 명령어를 통해 적재한다. 

[root@cronus ~]# lsmod | grep "bonding"                   ### 모듈에 bonding이 로딩되어 있는지 확인한다. 
[root@cronus ~]# modprobe --first-time bonding            ### 로딩이 되어 있지 않는다면 로딩한다. 
[root@cronus ~]# lsmod | grep "bonding"                   ### 로딩 여부 확인
bonding               152656  0

 

Bond interface를 위한 bond config 파일 생성한다. 여기서는 bond1로 생성한다. 

[root@cronus network-scripts]# cat << EOF >>/etc/sysconfig/network-scripts/ifcfg-bond1
> DEVICE=bond1
> NAME=bond1
> TYPE=Bond
> IPADDR=192.168.200.11
> NETMASK=255.255.255.0
> ONBOOT=yes
> BOOTPROTO=none
> BONDING_OPTS="mode=1 miimon=100"
> EOF
[root@cronus network-scripts]#
[root@cronus network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-bond1
DEVICE=bond1
NAME=bond1
TYPE=Bond
IPADDR=192.168.200.11
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=1 miimon=100"

 

Bond로 묶을 interface를  slave설정을 한다. 

[root@cronus network-scripts]# cat << EOF >> ifcfg-em2
> DEVICE=em2
> NAME=em2
> TYPE=Ethernet
> BOOTPROTO=none
> ONBOOT=yes
> MASTER=bond1
> SLAVE=yes
> EOF
[root@cronus network-scripts]# cat << EOF >> ifcfg-p5p3
DEVICE=p5p3
NAME=p5p3
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond1
SLAVE=yes
EOF

 

네트워크 매니저가 활성화 되어 있는지 확인하고 활성화 되어 있을 경우 비활성화 한다. 

[root@cronus network-scripts]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since 수 2019-06-19 14:10:18 KST; 2h 0min ago
     Docs: man:NetworkManager(8)
 Main PID: 9166 (NetworkManager)
   CGroup: /system.slice/NetworkManager.service
           └─9166 /usr/sbin/NetworkManager --no-daemon

 6월 19 14:31:33 localhost.localdomain NetworkManager[9166]:   [1560922293.1952] device (em1): state change: ip-config -> ip-check (reason 'none', sys-iface-state: 'managed')
 6월 19 14:31:33 localhost.localdomain NetworkManager[9166]:   [1560922293.1967] device (em1): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'managed')
 6월 19 14:31:33 localhost.localdomain NetworkManager[9166]:   [1560922293.1969] device (em1): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed')
 6월 19 14:31:33 localhost.localdomain NetworkManager[9166]:   [1560922293.1990] device (em1): Activation: successful, device activated.
 6월 19 14:33:33 localhost.localdomain NetworkManager[9166]:   [1560922413.4525] device (em1): state change: activated -> deactivating (reason 'user-requested', sys-iface-state: 'managed')
 6월 19 14:33:33 localhost.localdomain NetworkManager[9166]:   [1560922413.4541] audit: op="device-disconnect" interface="em1" ifindex=2 pid=12169 uid=0 result="success"
 6월 19 14:33:33 localhost.localdomain NetworkManager[9166]:   [1560922413.4542] device (em1): state change: deactivating -> disconnected (reason 'user-requested', sys-iface-state: 'managed')
 6월 19 15:25:29 cronus NetworkManager[9166]:   [1560925529.6879] hostname: hostname changed from "localhost.localdomain" to "cronus"
 6월 19 15:25:29 cronus NetworkManager[9166]:   [1560925529.6881] policy: set-hostname: set hostname to 'cronus' (from system configuration)
 6월 19 15:45:35 cronus NetworkManager[9166]:   [1560926735.6070] manager: (bond0): new Bond device (/org/freedesktop/NetworkManager/Devices/10)
[root@cronus network-scripts]# systemctl stop NetworkManager
[root@cronus network-scripts]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.

 

네트워크를 재시작 한다. 

[root@cronus network-scripts]# systemctl restart network

 

bonding 동작 상태를 확인한다. 

 

[root@cronus ~]# cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: em2
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: em2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 80:18:44:eb:39:85
Slave queue ID: 0

Slave Interface: p5p3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0a:f7:cb:ed:8a
Slave queue ID: 0

 

반응형