네트워크 본딩(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 파일을 조회해보면 된다.
댓글