Skip to main content

Centos에서 본딩구성하기

image.png

perplexity에서 생성한 AI이미지

시작하는말

안녕하세요, 고니입니다.
기존에 작성했던 컨텐츠들 업데이트를 하면서 문서의 리팩토링(Refactoring)을 진행해보려고 합니다.

Bonding 소개

여려개의 NIC를 논리적인 NIC로 묶어서 대역폭을 확장하거나 Active/Standby 형태로 가용성을 보장하기 위해 사용하는 기술이고
가상화환경에 올라간 VM이나  Public Cloud환경에서는 대부분 사용할 필요는 없으나, Bare-metal환경에서는 아직 유용하게 활용되고 있는 방법입니다.

  1. Bonding 구성

    모드 방 식
    • Balance-Round robin
    • 설정된 모든 NIC가 활성화가 되어 NIC별로 순차적으로 데이터를 전송하는 방식
    • 장점 : 모든 NIC의 대역폭을 합산하기 때문에 높은 대역폭을 유지,
    • 단점 : NIC의 link상태를 고려하는 방식은 없기 때문에 특정 NIC의 링크가 끊어진 경우 패킷손실 가능성이 존재합니다
    1
    • Active-Standby
    • 하나의 NIC가 활성화, 나머지는 Standby로 구성되어 데이터를 전송하는 방식
    • 장점 :  높은 고가용성을 보장
    • 단점 : 하나의 NIC만 활성화가 되기 때문에 네트워크 대역폭이 증가하진 않습니다.
    2
    • balance-xor
    • 기본적인 데이터 전송은 Bonding mode 0과 비슷하지만 xor연산을 이용해 특정 해시 알고리즘을 사용하여 링크에 분산시키는 방식
    •  bonding mode 0과 동일한 장/단점을 지니고 있습니다.
    3
    • broadcast
    • 모든 트래픽을 모든 NIC로 전송하는 방식입니다.
    • 장점 :  특정 NIC가 Down되어도 활성화된 NIC에서 데이터 전송을 할 수 있기 때문에 높은 고가용성 보장
    • 단점 : 동일한 데이터의 중복전송이 이루어지기 때문에 높은 네트워크 비용이 발생할 수 있습니다.
    4
    • 802.3ad, LACP(Link Aggregation Control Protocol)를 사용하여 NIC를 묶고, 트래픽을 분산합니다. 
    • 장점 : 높은 고가용성을 제공하여, 링크상태를 감지하여 조절합니다.
    • 단점 : LACP를 지원하는 Switch장비가 필요합니다. (Switch장비에서 논리적으로 Group으로 구성이 필요합니다)

Bonding 구성하기

  • Bonding Mode 1(Active / Standby)로 구성
  • Active NIC : eth0, Standby NIC : eth1, Bond NIC : bond0 
  1. 커널에 boding module 인식 확인
    # 본딩정보 커널 인식
    $> modprobe bonding 
    
    # 본딩정보 확인
    $ lsmod  | grep bond
    bonding               152979  0
  2. eth0에 본딩 선언
    $> vi /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    BOOTPROTO=none

  3. eth1에 본딩 선언
    $> vi /etc/sysconfig/network-scripts/ifcfg-eth1
    DEVICE=eth1
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    BOOTPROTO=none

  4. 본딩 NIC 설정
    $> vi /etc/sysconfig/network-scripts/ifcfg-bond0
    DEVICE=bond0
    BOOTPROTO=static
    ONBOOT=yes
    IPV6INIT=no
    IPADDR=192.168.10.221
    NETMASK=255.255.255.0
    BONDING_OPTS="mode=1 miimon=100" #mode값을 원하는 값으로 변경하면 됨.

  5. 네트워크 서비스 재시작
    $> systemctl restart network (Centos7 이상 버전인 경우 사용)
    $> /etc/init.d/network restart (Centos 6이하 버전인 경우에만 사용)

  6. 본딩구성정보 확인
    $> cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.1.2 (January 20, 2007)
    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: eth0
    MII Status: up
    MII Polling Interval (ms): 80
    Up Delay (ms): 0
    Down Delay (ms): 0
    Slave Interface: eth0
    MII Status: up
    Link Failure Count: 0
    Permanent HW addr: 00:XX:XX:XX:XX:c2
    Slave Interface: eth1
    MII Status: up
    Link Failure Count: 0
    Permanent HW addr: 00:XX:XX:XX:XX:c4

Reference