Linux 서버를 운영하다 보면 네트워크 이중화(Bonding)를 구성했음에도 특정 NIC가 장애를 일으키거나, 트래픽이 한쪽 인터페이스로만 몰리거나, 장애 발생 시 자동 전환(Failover)이 되지 않는 문제가 발생할 수 있습니다.
이러한 현상은 대부분 Bonding(또는 Teaming) 설정 오류로 인해 발생합니다. Bonding은 여러 개의 네트워크 인터페이스를 하나의 논리 인터페이스로 묶어 가용성과 성능을 향상시키는 기술입니다.
이번 글에서는 Linux Bonding(Teaming) 문제의 원인과 확인 방법, 해결 방법을 실무 중심으로 알아보겠습니다.
Bonding이란?
Bonding은 여러 개의 NIC를 하나처럼 사용하는 기술입니다.
대표적인 구성은 다음과 같습니다.
bond0
│
┌────────┴────────┐
│ │
eth0 eth1
Bonding을 사용하면 다음과 같은 장점이 있습니다.
- 네트워크 이중화(Failover)
- 대역폭 증가
- 장애 발생 시 자동 전환
- 서비스 가용성 향상
Bonding 문제가 발생하는 주요 원인
대표적인 원인은 다음과 같습니다.
- Bonding Mode 설정 오류
- Switch 설정 오류
- LACP 설정 오류
- Slave 인터페이스 DOWN
- MTU 불일치
- NIC Driver 문제
- 케이블 불량
- VLAN 설정 오류
- ARP Monitoring 설정 오류
- MII Monitoring 설정 오류
실무에서는 LACP 설정 오류와 Switch 구성 문제가 가장 많이 발생합니다.
1. Bonding 상태 확인하기
현재 Bonding 상태를 확인합니다.
cat /proc/net/bonding/bond0
대표적인 출력입니다.
Bonding Mode: IEEE 802.3ad
Slave Interface: eth0
MII Status: up
Slave Interface가 정상적으로 등록되어 있는지 확인합니다.
2. 인터페이스 상태 확인하기
NIC 상태를 확인합니다.
ip link
또는
ethtool eth0
다음 항목을 확인합니다.
- Link detected
- Speed
- Duplex
- Interface State
Slave 인터페이스가 DOWN이라면 Bonding이 정상적으로 동작하지 않습니다.
3. Bonding Mode 확인하기
현재 Mode를 확인합니다.
cat /proc/net/bonding/bond0
대표적인 Mode입니다.
- Mode 0 (balance-rr)
- Mode 1 (active-backup)
- Mode 2 (balance-xor)
- Mode 4 (802.3ad LACP)
- Mode 5 (balance-tlb)
- Mode 6 (balance-alb)
환경에 맞는 Mode를 사용하는 것이 중요합니다.
4. Switch 설정 확인하기
Mode 4(LACP)를 사용하는 경우 스위치에서도 동일하게 LACP가 설정되어 있어야 합니다.
확인 사항입니다.
- LACP 활성화
- Port Channel 구성
- 동일한 Speed
- 동일한 Duplex
Switch 설정이 맞지 않으면 Bonding이 정상 동작하지 않습니다.
5. MTU 확인하기
모든 인터페이스의 MTU가 동일해야 합니다.
ip link show
예시
bond0 mtu 9000
eth0 mtu 1500
이처럼 MTU가 다르면 문제가 발생합니다.
6. 트래픽 분산 확인하기
현재 인터페이스 통계를 확인합니다.
ip -s link
또는
sar -n DEV 1
특정 NIC만 사용된다면 Hash 정책이나 Mode를 확인해야 합니다.
7. tcpdump 분석하기
패킷을 확인합니다.
tcpdump -i bond0
또는
tcpdump -i eth0
Failover 시 패킷이 정상적으로 전환되는지 확인합니다.
8. Bonding 모듈 확인하기
커널 모듈을 확인합니다.
lsmod | grep bonding
모듈이 없다면
modprobe bonding
으로 로드합니다.
9. 로그 확인하기
Bonding 관련 로그를 확인합니다.
journalctl -k | grep bond
또는
dmesg | grep bonding
다음과 같은 메시지를 확인할 수 있습니다.
bond0: link status down
bond0: link status up
10. Failover 테스트하기
실제로 케이블 하나를 분리하여 테스트합니다.
확인 항목입니다.
- Ping 유지
- SSH 유지
- 서비스 유지
- 다른 NIC로 자동 전환
실제 장애 테스트를 해야 정상 동작 여부를 확인할 수 있습니다.
Bonding 문제 점검 순서
실무에서는 다음 순서대로 점검하는 것이 좋습니다.
- Bonding 상태 확인
- Slave 인터페이스 확인
- Bonding Mode 확인
- Switch 설정 확인
- MTU 확인
- 트래픽 분산 확인
- tcpdump 분석
- Bonding 모듈 확인
- 로그 확인
- Failover 테스트
Bonding 문제 사용 시 주의사항
다음 사항을 고려해야 합니다.
- Switch와 Linux 설정을 동일하게 맞춘다.
- LACP Mode에서는 반드시 스위치도 LACP를 사용해야 한다.
- 모든 NIC의 MTU를 동일하게 설정한다.
- Slave 인터페이스 상태를 항상 확인한다.
- 실제 장애 상황을 테스트한다.
- Driver와 Firmware도 최신 상태를 유지한다.
Bonding은 단순히 NIC를 여러 개 연결하는 것이 아니라 Switch와 서버가 함께 구성되어야 하는 기술입니다.
Bonding과 Teaming의 차이
| 항목 | Bonding | Teaming |
|---|---|---|
| 등장 시기 | 오래됨 | 비교적 최신 |
| 관리 방식 | Bond Driver | Team Driver |
| 성능 | 우수 | 더 유연함 |
| 설정 | 비교적 단순 | 다양한 Runner 지원 |
최근 배포판에서는 Teaming도 많이 사용되지만, 여전히 대부분의 서버에서는 Bonding이 널리 사용되고 있습니다.
자주 묻는 질문
Bonding Mode는 어떤 것을 가장 많이 사용하나요?
실무에서는 Mode 1(Active-Backup) 과 Mode 4(802.3ad LACP) 를 가장 많이 사용합니다. Mode 1은 이중화 목적, Mode 4는 이중화와 대역폭 향상을 동시에 제공할 수 있습니다.
Bonding을 사용하면 속도가 두 배가 되나요?
항상 그렇지는 않습니다. Mode와 스위치 구성, 트래픽 특성에 따라 달라집니다. 단일 TCP 연결은 대역폭 증가 효과를 체감하지 못하는 경우도 있습니다.
Bonding 없이 NIC 두 개를 연결하면 자동으로 이중화되나요?
아닙니다. 단순히 두 개의 NIC를 연결하는 것만으로는 이중화가 되지 않습니다. Bonding 또는 Teaming 설정이 반드시 필요합니다.
마무리
Bonding은 Linux 서버에서 네트워크 이중화와 고가용성을 구현하는 핵심 기술입니다. cat /proc/net/bonding, ip link, ethtool, tcpdump 등을 활용하면 대부분의 Bonding 문제를 빠르게 분석할 수 있으며, 서버와 스위치의 설정을 일치시키고 실제 Failover 테스트를 수행하는 것이 안정적인 운영의 핵심입니다.