본문 바로가기
Linux

Bonding

by Yoon_estar 2024. 3. 13.
728x90
반응형

Bonding 이란?

Linux Bonding (또는 NIC Bonding)은 두 개 이상의 네트워크 인터페이스 카드(NIC)를 하나로 
묶어서 단일 인터페이스처럼 작동하게 하는 기술입니다. 
이 기술을 사용하면 네트워크의 고가용성(High Availability), 부하 분산(Load Balancing), 
그리고 대역폭 증가를 실현할 수 있습니다. 
Linux 시스템에서는 이를 위해 특별한 커널 모듈과 함께 ifenslave 패키지를 사용하여 구성할 수 있습니다.

실습 환경

System
- Master
- Node01
- Node02
- Node03
- File
Network
- VM Network0 - 본딩
- VM Network0 - 본딩
- VM Privacy0 == 192.168.234.0/24

사전 작업

# nmtui 로 진입하여 모든 이더넷 정보 삭제 
# cd /etc/sysconfig/network-scripts/ 디렉터리에 있는 설정 파일들 삭제 후 
# reboot

# cd /etc/sysconfig/network-scripts/
# ls
total 0

# nmtui

네트워크 CONNECTION 이름 변경

**# nmcli device status
DEVICE  TYPE      STATE                                  CONNECTION
eth0    ethernet  connected                              Wired connection 1 
eth1    ethernet  connected                              Wired connection 2 
bond0   bond      connecting (getting IP configuration)  bond0
eth2    ethernet  disconnected                           --
lo      loopback  unmanaged                              --

# nmtui
진입 후 Edit 에서 수정**

참고

오류가 발생 시 초기 설정으로 돌리고 다시한다.

# nmtui에 수동으로 네트워크 인터페이스를 등록할 때는 ifconfig 명령어로 이더넷의 MAC 주소를
파악한 후 아래와 같이 수동으로 등록하면 된다.

Bonding Mode

모드 0 (balance-rr, Round Robin)

패킷들을 순서대로 각각의 NIC을 통해 전송하여 부하를 분산시킵니다.
이 모드는 대역폭을 증가시키지만 순서가 중요한 데이터에는 적합하지 않을 수 있습니다.
전송은 첫 번째로 사용 가능한 결합된 포트 인터페이스에서 수신 및 순차적으로 전송합니다.

모드 1 (active-backup)

하나의 NIC만 활성화되어 있고, 다른 하나는 대기 상태에 있습니다.(실패한 경우에만 사용)
주 NIC에 문제가 발생하면 대기 중인 NIC이 활성화되어 네트워크 연결을 유지합니다. 
이 모드는 고가용성을 제공합니다.
첫 번째 사용 가능한 결합된 포트 인터페이스를 통해 전송이 수신되고 전송

모드 2 (balance-xor)

송수신되는 패킷의 MAC 주소를 기반으로 해시 계산 결과에 따라 NIC을 선택합니다.(해시 정책)
이는 일정한 패턴의 부하 분산을 제공합니다.

모드 3 (broadcast)

모든 패킷을 모든 NIC에 복사하여 전송합니다. 
이 모드는 네트워크의 신뢰성을 높이지만 대역폭 사용량이 증가합니다.
내결함성에 대한 브로드캐스트 정책을 설정합니다.
모든 전송은 모든 포트 인터페이스에서 전송합니다.
동일한 속도 및 이중화된 설정을 공유하는 집계 그룹을 생성합니다.
 활성 수집기의 모든 포트에서 전송 및 수신됩니다. 802.3ad 호환 가능한 스위치 필요합니다.

모드 4 (802.3ad, LACP):

이 모드는 동적으로 링크 집계를 구성합니다. 
이를 위해서는 스위치가 IEEE 802.3ad LACP를 지원해야 합니다. 
이 모드는 네트워크의 대역폭을 증가시키고 부하 분산을 제공합니다.
IEEE 802.3ad 동적 링크 집계 정책을 설정합니다.
 

모드 5 (balance-tlb, Adaptive Transmit Load Balancing)

아웃바운드 트래픽은 현재 부하에 따라 동적으로 분산되며, 
인바운드 트래픽은 active-backup 모드와 유사하게 처리됩니다.
내결함성 및 로드 밸런싱을 위해 Transmit Load Balancing(TLB) 정책을 설정합니다.

모드 6 (balance-alb, Adaptive Load Balancing)

모드 5의 기능에 더해 인바운드 트래픽의 부하 분산도 동적으로 조정합니다. 
이 모드는 특별한 스위치 구성 없이도 양방향의 부하 분산을 제공합니다.
내결함성 및 로드 밸런싱을 위한 적응형 로드 밸런싱(ALB) 정책을 설정합니다.

실습

  • 모든 서버에서 진행

bond0 인터페이스 생성

[root@master ~]# nmcli device status
DEVICE  TYPE      STATE                                  CONNECTION
eth0    ethernet  connected                              Wired connection 1 
eth1    ethernet  connected                              Wired connection 2 
eth2    ethernet  connecting (getting IP configuration)  Wired connection 3 
lo      loopback  unmanaged

[root@master ~]# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,miimon=1000"
Connection 'bond0' (6138e63d-c27d-41be-a33b-f56363f70d63) successfully added.

[root@master ~]# nmcli device status
DEVICE  TYPE      STATE                                  CONNECTION
eth0    ethernet  connected                              Wired connection 1
eth1    ethernet  connected                              Wired connection 2
bond0   bond      connecting (getting IP configuration)  bond0
eth2    ethernet  connecting (getting IP configuration)  Wired connection 3
lo      loopback  unmanaged                              --

인터페이스 이름 설정 및 slave 설정

# nmcli connection add type ethernet slave-type bond con-name bond0-eth0 ifname eth0 master bond0
# nmcli connection add type ethernet slave-type bond con-name bond0-eth1 ifname eth1 master bond0

# nmcli device status
DEVICE  TYPE      STATE                                  CONNECTION
eth0    ethernet  connected                              eth0
eth1    ethernet  connected                              Wired connection 1
bond0   bond      connecting (getting IP configuration)  bond0
eth2    ethernet  connecting (getting IP configuration)  Wired connection 2

생성한 bond0 인터페이스에 IP 설정

# nmcli connection modify bond0 ipv4.addresses 192.168.207.220/24

# nmcli connection modify bond0 ipv4.gateway 192.168.207.254

# nmcli connection modify bond0 ipv4.dns 168.126.63.1

# nmcli connection modify bond0 ipv4.method manual

완료된 상태 인터페이스 확인

# nmcli device status
DEVICE  TYPE      STATE         CONNECTION
bond0   bond      connected     bond0
eth0    ethernet  connected     bond0-eth0
eth1    ethernet  connected     bond0-eth1
eth2    ethernet  disconnected  --
lo      loopback  unmanaged     --

# ll /etc/sysconfig/network-scripts
total 16
-rw-r--r-- 1 root root 405 Mar 13 16:51 ifcfg-bond0
-rw-r--r-- 1 root root 139 Mar 13 17:10 ifcfg-bond0-eth0
-rw-r--r-- 1 root root 139 Mar 13 17:10 ifcfg-bond0-eth1
-rw-r--r-- 1 root root 278 Mar 13 17:16 ifcfg-eth2

# nmtui

재부팅 혹은 네트워크 재실행 후 아래와 같이 나타나야한다.(네트워크 파일이 아래와 같아야한다.)

  • 파일을 아래와 같이 맞추고 재부팅하면 nmtui 화면에 제대로 나올 것이다.
# ll
total 16
-rw-r--r-- 1 root root 423 Mar 13  2024 ifcfg-bond0
-rw-r--r-- 1 root root 139 Mar 13 17:10 ifcfg-bond0-eth0
-rw-r--r-- 1 root root 139 Mar 13 17:10 ifcfg-bond0-eth1
-rw-r--r-- 1 root root 278 Mar 13 17:16 ifcfg-eth2
[root@file network-scripts]# 
[root@file network-scripts]# pwd
/etc/sysconfig/network-scripts

Test

# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 1000
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:50:56:ad:4c:9d
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:a2:23:74
Slave queue ID: 0

# ifconfig eth1 down

# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 1000
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:50:56:ad:4c:9d
Slave queue ID: 0

Slave Interface: eth1
MII Status: down
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:a2:23:74
Slave queue ID: 0
[root@master network-scripts]# 
반응형

'Linux' 카테고리의 다른 글

리눅스 우분투 설치 후 기본 설정  (0) 2024.04.01
리눅스 시간 동기화  (0) 2024.03.13
Uptime  (0) 2024.02.27
Rsync 명령어  (1) 2024.02.27
Mount  (0) 2024.02.19