네트워크 본딩
IT위키
더 많은 작업
네트워크 본딩(Network Bonding)은 서버에 꽂힌 네트워크 인터페이스(NIC) 여러 개를 하나의 논리 인터페이스로 묶어, 대역폭을 늘리거나 한 카드가 고장 나도 통신이 끊기지 않게 하는 기술이다.
리눅스에서는 커널의 bonding 드라이버가 eth0·eth1 같은 실제 인터페이스(슬레이브)를 bond0 같은 가상 인터페이스(마스터) 아래에 묶는다. IP 주소는 bond0 에 하나만 주고, 응용 프로그램은 카드가 몇 장인지 모른 채 bond0 로 통신한다. 윈도우·스위치 쪽에서는 같은 일을 NIC 티밍(teaming), 링크 집계(Link Aggregation, IEEE 802.3ad·802.1AX)라고 부른다. 레드햇 계열은 bonding 드라이버 말고 사용자 공간 데몬(teamd)으로 묶는 팀(team) 방식도 제공한다.
| 모드 | 이름 | 동작 |
|---|---|---|
| 0 | balance-rr | 패킷을 슬레이브에 차례로(라운드 로빈) 나눠 보낸다. 부하 분산과 장애 대비를 함께 한다 |
| 1 | active-backup | 한 장만 쓰고 나머지는 대기한다. 쓰던 카드가 죽으면 대기 카드가 넘겨받는다. 스위치 설정이 필요 없다 |
| 2 | balance-xor | 출발지·목적지 MAC 주소로 계산해 보낼 카드를 고른다 |
| 3 | broadcast | 모든 슬레이브로 같은 패킷을 보낸다 |
| 4 | 802.3ad | LACP 로 스위치와 협상해 묶는다. 스위치가 링크 집계를 지원해야 한다 |
| 5 | balance-tlb | 보내는 트래픽만 카드별 부하에 맞춰 나눈다 |
| 6 | balance-alb | 보내고 받는 트래픽을 모두 나눈다(ARP 응답을 조작해 수신도 분산) |
miimon=100처럼 링크 상태를 확인하는 주기(밀리초)를 함께 준다
레드햇 계열의 옛 방식은 ifcfg 파일을 둔다.
# /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 TYPE=Bond BONDING_MASTER=yes BONDING_OPTS="mode=1 miimon=100" IPADDR=192.168.0.10 PREFIX=24 ONBOOT=yes # /etc/sysconfig/network-scripts/ifcfg-eth0 (eth1 도 같은 모양) DEVICE=eth0 MASTER=bond0 SLAVE=yes ONBOOT=yes
NetworkManager 를 쓰면 nmcli 로 만든다.
# nmcli con add type bond ifname bond0 bond.options "mode=active-backup,miimon=100" # nmcli con add type ethernet ifname eth0 master bond0 # nmcli con add type ethernet ifname eth1 master bond0 # cat /proc/net/bonding/bond0 # 모드와 슬레이브 상태 확인