리눅스 네트워크 본딩(Bonding)으로 이중화 구성하기
서버의 네트워크 인터페이스가 단일 장애점(SPOF)이 되면 NIC 장애 시 서비스 중단이 발생합니다. 리눅스 본딩(Bonding)은 여러 NIC를 하나의 논리 인터페이스로 묶어 이중화와 대역폭 증대를 동시에 구현합니다.
본딩 모드 종류
| 모드 | 이름 | 설명 |
|---|---|---|
| mode=0 | Round-robin | 패킷을 순서대로 분산 전송 (대역폭 증대) |
| mode=1 | Active-backup | 하나만 활성화, 장애 시 교체 (이중화) |
| mode=2 | XOR | 송수신 MAC 기반 분산 |
| mode=3 | Broadcast | 모든 인터페이스로 동시 전송 |
| mode=4 | LACP (802.3ad) | 스위치와 협상하여 동적 링크 집계 |
| mode=5 | Adaptive TLB | 수신은 활성 포트, 송신은 분산 |
| mode=6 | Adaptive LB | 송수신 모두 분산 (스위치 설정 불필요) |
실무에서 가장 많이 사용하는 모드는 mode=1(이중화) 와 mode=4(LACP) 입니다.
NetworkManager로 본딩 설정 (RHEL 8+)
# 본딩 인터페이스 생성
nmcli connection add type bond \
con-name bond0 \
ifname bond0 \
bond.options "mode=active-backup,miimon=100"
# 슬레이브 인터페이스 추가
nmcli connection add type ethernet \
con-name bond0-slave1 \
ifname ens3 \
master bond0
nmcli connection add type ethernet \
con-name bond0-slave2 \
ifname ens4 \
master bond0
# IP 주소 설정
nmcli connection modify bond0 \
ipv4.addresses "192.168.1.100/24" \
ipv4.gateway "192.168.1.1" \
ipv4.dns "8.8.8.8 8.8.4.4" \
ipv4.method manual
# 활성화
nmcli connection up bond0
nmcli connection up bond0-slave1
nmcli connection up bond0-slave2
설정 파일로 본딩 구성
bond0 마스터 인터페이스
# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
BONDING_OPTS="mode=active-backup miimon=100 fail_over_mac=1"
슬레이브 인터페이스
# /etc/sysconfig/network-scripts/ifcfg-ens3
DEVICE=ens3
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
# /etc/sysconfig/network-scripts/ifcfg-ens4
DEVICE=ens4
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
LACP 모드 설정 (스위치 협업)
# LACP 본딩 생성
nmcli connection add type bond \
con-name bond0 \
ifname bond0 \
bond.options "mode=802.3ad,miimon=100,lacp_rate=fast,xmit_hash_policy=layer3+4"
# 스위치측에도 LACP/EtherChannel 설정 필요
# Cisco 스위치 예시:
# interface Port-channel1
# switchport mode access
# interface GigabitEthernet1/0/1
# channel-group 1 mode active
본딩 상태 확인
# 본딩 상태 상세 확인
cat /proc/net/bonding/bond0
# 출력 예시:
# Ethernet Channel Bonding Driver: v3.7.1
# Bonding Mode: fault-tolerance (active-backup)
# Primary Slave: None
# Currently Active Slave: ens3
# MII Status: up
# MII Polling Interval (ms): 100
# 링크 상태 확인
ip link show bond0
ip addr show bond0
# 슬레이브 통계
cat /sys/class/net/bond0/bonding/slaves
장애 조치(Failover) 테스트
# 활성 슬레이브 강제 전환
ip link set ens3 down
# 전환 후 상태 확인
cat /proc/net/bonding/bond0
# 원복
ip link set ens3 up
# 핑 테스트로 연결 유지 확인
ping -c 100 192.168.1.1 &
ip link set ens3 down
# 핑 손실 없이 계속되면 성공
본딩 + VLAN 구성
# 본딩 위에 VLAN 인터페이스 추가
nmcli connection add type vlan \
con-name bond0.100 \
ifname bond0.100 \
dev bond0 \
id 100 \
ipv4.addresses "10.0.100.1/24" \
ipv4.method manual
nmcli connection up bond0.100
네트워크 본딩은 서버 인프라의 가용성을 높이는 가장 기본적인 방법입니다. 스위치와의 연동이 필요한 LACP 모드는 사전에 네트워크 팀과 협의하여 스위치 설정을 함께 구성해야 합니다.
댓글남기기