Linux

[Linux] 네트워크 본딩(Network Bonding)의 개념 및 구성

현또다 2023. 10. 18. 16:11

▶ 본딩(Bonding) 의 개념 및 기능  

1) 본딩 (Bonding) 이란 ?

여러 개의 물리적 또는 가상의 네트워크 인터페이스 컨트롤러(NIC)를 논리적으로 하나의 인터페이스로 결합하는 기술

 

2) 본딩의 기능

-  서버의 대역폭을 확장할 수 있음

- 서버의 기능을 분산할 수 있는 부하 분산(Load Balancing)이 가능함

- 부분적으로 장애가 발생해도 시스템이 동작할 수 있음

 

3) 본딩 모드 종류

모드 종류 기능
mode 0 : Round-robin 부하 분산과 failover를 제공하며, 첫번째부터 마지막까지 순차적으로 NIC에 트래픽을 분산시켜 전송하는 모드
mode 1 : Active-backup 1개의 NIC만 활성화되며, 다른 NIC는 현 활성화된 NIC에서 장애가 발생했을 경우
활성화 됨
mode 2 : balance-xor mode 0과 비슷하지만 xor연산을 이용해 목적지 Mac과 근원지 Mac을 이용하여 분배
mode 3 : broadcast 모든 NIC에 동일한 패킷을 broadcast로 발송함
mode 4 : LACP(802.3ad) 802.3ad를 지원하는 스위치가 필요하며, 2개 이상의 네트워크 port를 묶어 더 큰 대역폭을 만드는 방법으로 NIC의 개수만큼 대역폭 확장 가능
mode 5 : balance-tlb
스위치 지원이 필요 없으며, 로드 밸런싱 정책으로 밖으로 내보내지는 트래픽은 분산되어 송출되고 들어오는 트래픽은 active되어있는 NIC로 패킷 받음
mode 6 : balance-alb 802.3ad를 지원하지 않는 경우 스위치 지원이 필요 없는 이 모드를 사용하며, mode 5와 같이 동작하지만 데이터 수신 시에는 로드 밸런싱을 하는데 2개의 링크에서 ARP 협상을 통해 동작함

 

▶ 본딩(Bonding) 구성 방법  

1. 인터페이스 확인

- grep 명령어 통해 2개 이상의 물리적 또는 가상 이더넷 NIC 확인

- 현재 인터페이스 상태 확인

ip a | grep ens
nmcli device status

 

2. Bonding Master 인터페이스 생성 및 Bonding Slave 설정

# master 인터페이스 생성
nmcli con add type bond con-name bond0 ifname bond0 bond.options “mode=1, miimon=100"
(mode = 1 or active-backup 입력, miimon = 모니터링 간격 추가 설정)

# slave 설정
nmcli con add type ethernet slave-type bond con-name bond0-portN ifname ens000 master bond0

3. Bonding 네트워크 설정

- 생성된 connection을 수정하여 네트워크 설정 후 활성화

nmcli con mod bond0 ipv4.method manual ipv4.addresses [ip/prefix] ipv4.gateway [gateway] autoconnect yes
nmcli con reload		# 변경 사항 반영
nmcli con up bond0		# bond0 인터페이스 활성화

4. Bonding 설정 및 상태 확인

cat /proc/net/bonding/bond0		# 본딩 설정 확인
nmcli device status			# device 상태 확인