Skip to main content

Centos에서 본딩구성하기

시작하는말

안녕하세요, 고니입니다.
기존에 작성했던 컨텐츠들 업데이트를 하면서 문서의 리팩토링(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