본문 바로가기

와사비크래커 IT Tip/Linux

Linux Bonding 설정하기

728x90
반응형

Linux Bonding 설정하기

본딩이란?한대의 서버에 여러개의 랜카드를 이용하여 대역폭 또는 예비 회선으로 사용할 수 있도록 하는 전송 속도의 분배및 대비책으로 사용하기 위한 기술
윈도우에서는 티밍(teaming)이라고 불리우기도 하는 기술
Bonding 종류
  • Mode 0 (balance-rr) balance-round robine ( 2개의 NIC을 순차적으로 분배 + Fault Tolerance) 회선이 2회선일 경우 트래픽을 같이 사용할 수 있어 대역폭을 분산시키는데 효율적. [ A nic -> B nic -> A nic -> B nic 순] 으로 패킷을 분산 시키는 방법. 또한, 장애허용으로 인하여, 한쪽 네트워크에 단절이 오더라도 이를 보안하는 기능이 존재

  • Mode 1 (active-backup) 일반 기업들이 많이 쓰고, 흔히들 말하는 네트워크 이중화에 대한 부분으로 사용. 실제 사용시에는 2개의 백본에 2개의 NIC에 연결이 되며, 활성화 되어있는 NIC에 문제 발생시 예비 NIC으로 이첩시키는 기능. 보통 IDC같은 곳에서는 이중화 보다는 같은 네트워크 스위치에 2회선으로 물려 사용. 이 모드도 장애허용에 대하여 지원

  • Mode 2 (balance-xor) XOR 방식에 따라 패킷을 전송 (Source MAC Address가 Target MAC Address로 비트연산을 하여 ) 모드 0과 비슷하지만 근원지 MAC에서 목적지 MAC으로 비트 연산을 통하여 분배. 보통 방화벽과 비슷한 방식이기는 하나 들어오는 리퀘스트에 MAC을 연결하는 방식.

  • Mode 3 (broadcast) 모든 NIC에 동일한 패킷을 brocast로 발송.

  • Mode 4 (802.3.ad) Dynamic Link Aggregation 정책으로 동작. speed와 duplex 설정을 공유하는 aggregation groups를 스위칭 장비에서 설정하여야 함. 단, 802.3.ad를 지원하는 스위치에서만 사용이 가능하며, 연결대수에 상관없이 그룹화에 따라 회선의 정책이 변경되어 무단절 인터넷 연결을 가능하게 만드는 방식.

  • Mode 5 (balance-tlb) 로드 발랜싱 정책으로 밖으로 내보내지는 트래픽은 분산되어 송출되며, 들어오는 트래픽은 Active되어있는 NIC으로 패킷을 받음. 만일 Active 되어있는 NIC의 문제로 패킷을 받지 못하면 또다른 NIC이 실패한 NIC의 MAC Address를 물려받게 됨.

  • Mode 6 (balance-alb) 들어오는 트래픽을 분산 처리하여 받음. bond에서 트래픽이 많이 존재하지 않는 NIC으로 분산. 들어오는 로드 발렌싱은 ARP negotiation을 통해서 수행.

기본적인 부분
0 - RR(RoundRobin)방식 로드밸런스. 인터페이스의 라운드로빈(대역폭 상승 + Failover)
1 - Active-Standby (NIC 의 Failover 만을 위한 모드)
한개는 Standby로 기존 것이 문제 생길경우 active로 전환
2 - XOR 방식 / 수신시에는 MAC 어드레스로 매핑, 송신시 1번 NIC 사용
3 - Broadcast 방식 / 모든 Slave NIC 으로 통신 failover 제공
4 - 802.3ad Dynamic Link aggregation
5 - 송신패킷만 로드밸런싱 / 동일 스위치에 물려있어야 함
6 - 송수신패킷 로드밸런싱 / 동일 스위치에 물려있어야 함
Miimon 옵션은?
링크 감시설정 모드로 ms 단위를 사용하며 디폴트값이 0(사용안함)
즉, 0으로 설정하면 Failover가 비활성화되는 부분으로 사용하며,
기본적으로 리눅스에서는 100ms로 사용.
Bonding 하기
지금부터는 CentOS를 이용하여 본딩하는 방법. 이는 Redhat 계열에서는 많이 이용되며, 주로 많이 현업에서 많이 사용되는 것은 모드 1번(Active&Standby)을 사용.

  1. /etc/sysconfig/network 설정 (기본 Gateway를 설정) 맨 밑줄에 GATEDEV=bond0 추가
  2. /etc/sysconfig/network-scripts/ifcfg-bond0 설정
    DEVICE=bond0 # 연결 디바이스명
    BOOTPROTO=none # Static (고정), DHCP, none, bootp 형식등이 있음
    ONBOOT=yes # 부팅시 동작
    USERCTL=no # 사용자컨트롤 금지
    TYPE=Ethernet # 타입은 이더넷
    IPADDR=10.0.1.101 # IP
    NETMASK=255.255.255.0 # Netmask
    GATEWAY=10.0.1.1 # Gateway
    BONDING_OPTS=`mode=1 miimon=100 use_carrier=0 primary=eth0`
  3. /etc/sysconfig/network-scripts/ifcfg-eth(x) 설정 x=(ex:eth0,1)
    DEVICE=ethX # 연결 디바이스명 (eth0,1)
    BOOTPROTO=none # Static (고정), DHCP, none, bootp 형식등이 있음
    ONBOOT=yes # 부팅시 동작
    USERCTL=no # 사용자 컨트롤 금지
    TYPE=Ethernet # 이더넷 타입
    MASTER=bond0 # MASTER는 Bonding 명
    SLAVE=yes # 대비책으로 구성 (Master는 bond0이므로 Slave 그룹에 가입)
  4. /etc/modprobe.conf 설정내에 아래의 사항을 추가
    alias bond0 bonding
    options bond0 mode=1 miimon=100

    # 만일 두개의 본딩을 구성하셔야 한다면 아래 부분으로 이용
    alias bond0 bonding
    alias bond1 bonding
    options bonding max_bonds=2
    options bonding miimon=100 mode=1
  5. 모듈 로딩 및 네트워크 재시작.
    modprobe bonding # 본딩 모듈 로딩
    /etc/init.d/network restart 혹은 service network restart
  6. /proc/net/bonding/bond0 에서 bonding 확인
    Bonding Mode: fault-tolerance (active-backup) # 본딩 모드
    Primary Slave: None
    Currently Active Slave: eth0 # 현재 Active 디바이스명
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    Slave Interface: eth0
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 1x:xx:xx:xx:e1:40
    Slave Interface: eth1
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 1x:xx:xx:xx:e1:41


반응형