Profile picture

[Linux] Ubuntu 22.04 네트워크 본딩(Bonding) 설정하기 (Netplan)

JaehyoJJAng2023년 07월 15일

◾️ 사전 준비

  • 최소 2개의 NIC(Network Interface Card)가 존재하는 Ubuntu 22.04 또는 Debian 계열 리눅스 서버
  • root 계정 또는 sudo 권한을 가진 사용자에 대한 액세스

◾️ bonding 구성도

image


◾️ bonding 실습

  • Ubuntu 또는 Debian 계열 배포판에서 실습 진행
  • 이번 게시글에서는 mode0(balance-rr)를 사용하지만 다른 모드를 사용하고 싶은 경우 모드만 바꿔서 참고하면 된다.

▪️ 패키지 설치

  • 본딩을 구성하기 위해서는 ifenslave, ethtool 패키지가 필요하다.

A. ifconfig 명령을 통하여 네트워크 인터페이스 확인

# net-tools가 설치되지 않은 경우 net-tools 설치 후 실행
sudo apt-get install -y net-tools

ifconfig -a

image
ens3, ens4, ens5 총 세 개의 네트워크 인터페이스가 확인된다. 해당 인터페이스들을 bond0로 구성할 것이다.


B. ifenslave, ethtool 패키지 설치

sudo apt-get install ifenslave ethtool

▪️ bonding 모듈 적재

A. lsmod 명령을 통하여 본딩 모듈이 적재 되었는지 확인하도록 하자.
(아무런 모듈이 출력되지 않는 경우 modprobe bonding 명령어를 통하여 본딩 모듈을 올려주어야 한다.)
모듈 적재 후 lsmod 명령을 통하여 bonding 모듈이 잘 적재되었는지 확인하자.

lsmod | grep -i "bonding"

# bonding 모듈이 적재 되지 않은 경우 아래 명령어 실행
modprobe bonding
lsmod | grep -i "bonding"

image


B. cat 명령어를 통하여 /etc/modules 파일을 수정하도록 하자.
하기와 같이 'bonding' 열을 삽입

sudo sh -c 'cat >> /etc/modules << EOF
bonding
EOF'

image


▪️ mode 0 (STATIC)

  • /etc/netplan 경로에 존재하는 YAML 파일의 이름은 사용자 환경에 따라 달라질 수 있습니다.

A. 하기와 같이 기존 인터페이스(ens3,ens4,ens5)의 DHCP 설정을 false로 변경하고 bonds 이하 내용들을 추가하도록 하자.
(해당 섹션에서는 bond0 를 STATIC로 설정하여 진행)

sudo sh -c 'cat >> /etc/netplan/00-installer-config.yaml << EOF
network:
  ethernets:
    ens3:
      dhcp4: false
    ens4:
      dhcp4: false
    ens5:
      dhcp4: false

  bonds:
    bond0:
      dhcp4: false
      interfaces: [ens3, ens4, ens5]
      addresses: [172.16.0.40/27]  # 여기에 사용할 IP 주소 및 서브넷 마스크를 입력하세요
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]  # 필요에 따라 DNS 서버 주소를 입력하세요
      parameters:
        mode: balance-rr # mode 0 채택
        mii-monitor-interval: 1 # 본딩 인터페이스의 링크 모니터링 간격
      routes:
        - to: default
          via: 172.16.0.33 # 네트워크 게이트웨이 IP 주소를 입력하세요

  version: 2
  renderer: networkd
EOF'

▪️ mode 0 (DHCP)

  • /etc/netplan 경로에 존재하는 YAML 파일의 이름은 사용자 환경에 따라 달라질 수 있습니다.

A. 하기와 같이 기존 인터페이스(ens3,ens4,ens5)의 DHCP 설정을 false로 변경하고 bonds 이하 내용들을 추가하도록 하자.
(해당 섹션에서는 bond0 를 DHCP로 설정하여 진행)

sudo sh -c 'cat > /etc/netplan/00-installer-config.yaml << EOF
network:
  ethernets:
    ens3:
      dhcp4: false
    ens4:
      dhcp4: false
    ens5:
      dhcp4: false
  version: 2
  renderer: networkd

  bonds:
    bond0:
      dhcp4: true
      interfaces: [ens3,ens4,ens5]
      parameters:
        mode: balance-rr # mode 0 채택
        mii-monitor-interval: 1 # 본딩 인터페이스의 링크 모니터링 간격
EOF'

B. netplan apply 명령어로 변경사항을 적용하자.

sudo netplan apply

▪️ bond 적용 확인

A. ifconfig -a 명령으로 bond0 인터페이스가 생성된 것을 확인해보자.

ifconfig -a | grep -A6 -i "^bond"

image


A-a. ethtool bond0 명령을 통해 bond0 인터페이스의 정보를 확인해볼 수 있다.

ethtool bond0

image


A-b. 추가적으로 하기의 명령을 통해서도 본딩 상태를 확인할 수 있다.

cat /proc/net/bonding/bond0

image


◾️ bonding mode

  • 본딩 모드는 여러가지가 있지만 대표적으로는 mode 0과 mode 1을 가장 많이 사용한다.
MODE NAME
mode=0 balance-rr
mode=1 active-backup
mode=2 balance-xor
mode=3 broadcast
mode=4 802.3ad
mode=5 balance-tlb
mode=6 balance-alb

1. MODE 0 : round-robin

하나로 묶인 네트워크인터페이스들의 트레픽을 같이 사용 하여 대역폭을 분산 시킬 때 사용 하며
failover 기능이 제공 됩니다.


MODE 1 : active-backup

2개의 인터페이스를 하나로 묶었을 경우 하나는 Active 상태에서 대기, 나머지 하나는 Standby 상태에서 대기를 하고 있다가 Active 상태인 인터페이스에 장애가 발생 하였을 경우 Standby 인터페이스가 Active로 활성화 되어 중단 없는 서비스를 제공 할 수 있습니다.


이외에도 3,4,5,6도 있지만 잘 사용하지 않는 관계로 본 가이드에서는 생략 하도록 하겠으며,

하기의 모드 별 설명 자료를 참고해 보시기 바랍니다.

일반적으로 현업 에서는 대부분 MODE 1 (active-backup) 방식이 가장 많이 사용 됩니다.


Loading script...