본문 바로가기
Old Posts/Linux

[Linux] '네트워크 본딩(Network Bonding)'

by A6K 2022. 1. 3.

네트워크 본딩(Network Bonding)은 여러개의 네트워크 인터페이스를 하나의 인터페이스로 묶는 기술이다. 두 개 이상의 네트워크 인터페이스를 하나로 묶어 대역폭(Bandwidth)을 확장하거나 하나의 주소에 대해 'Active-Standby' 구성을 하기 위해 사용한다.

네트워크 본딩하기

우선 시스템에 네트워크 인터페이스가 2개 이상 준비되어 있어야한다.

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 02:42:ac:11:00:02  txqueuelen 1000  (Ethernet)
        RX packets 10003  bytes 14552272 (13.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5615  bytes 308080 (300.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 02:42:ac:11:00:04  txqueuelen 1000  (Ethernet)
        RX packets 10003  bytes 14552272 (13.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5615  bytes 308080 (300.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

CentOS의 경우 /etc/sysconfig/network-scripts 디렉토리 밑에 있는 설정 파일들을 수정해줘야한다.

네트워크 본딩으로 묶을 두 인터페이스에 대한 설정인 ifcfg-eth0, ifcfg-eth1 파일을 열어 다음과 같이 설정한다.

DEVICE=eth0
MASTER=bond0
SLAVE=yes
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

 

DEVICE=eth1
MASTER=bond0
SLAVE=yes
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

 

그 다음 /etc/sysconfig/network-scripts/ifcfg-bond0 파일을 생성해서 다음 내용을 채워둔다.

DEVICE=bond0
NAME=bond0
TYPE=Bond
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.1
NETMAST=255.255.255.0
NETWORK=10.100.100.0
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"

본딩 옵션 항목에 들어가는 모드는 1로 설정했고, 모니터링 주기(miion)는 100ms로 설정했다.

본딩 모드로 설정할 수 있는 숫자는 다음과 같다.

모드 의미  설명
0 balance - rr 본딩된 인터페이스들에 라운드로빈으로 패킷을 전달 (기본설정)
1 Active / Backup Active - Standby 형태로 구성
Active 인터페이스가 메인으로 사용되다가 문제가 생기면 Standby 인터페이스로 Fail over됨
2 balance - xor source Mac과 destination Mac 주소를 XOR 연산해서 분배
3 Broadcast 모든 인터페이스에 전달
4 802.3ad - link aggregation IEEE 802.3ad 다이나믹 링크 기능을 제공하는 스위치가 있어야함
(Dynamic Link Aggregation 모드)
5 balance - tlb Adaptive transmit load balancing (전송패킷 로드밸런싱)
6 balance - alb Adaptive load balancing (송수신 패킷 로드밸런싱)

이후 /etc/modprobe.d/binding.conf 파일을 생성한다.

alias bond0 bonding
options bond0 mode=1 miimon=100

그리고 본딩 모듈을 사용한다.

$ sudo modprobe bond0

네트워크 서비스를 재시작 한다.

$ sudo service network restart
Restarting network (via systemctl):                                   [OK]

현재 본딩 상태를 확인하려면 /proc/net/bonding/bond0 파일을 조회해보면 된다.

댓글