ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CentOS 6.x] 서버 본딩설정
    Linux server(CentOS 6.x, 7.x) 2019. 4. 18. 16:41

    ◈  CentOS 6.x  Bonding(본딩)설정 


    1. 본딩이란? 

    한대의 서버에 여러개의 랜카드를 이용하여 대역폭 또는 예비 회선으로 사용할 수 있도록 하는 전송 속도의 분배및 대비책으로 사용하기 위한 기술입니다. 윈도우에서는 티밍(teaming)이라고 불리우기도 하는 기술



    2. 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을 통해서 수행됩니다.



    3. 기본적인 부분

    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 - 송수신패킷 로드밸런싱 / 동일 스위치에 물려있어야 함


    4. Miimon 옵션은?

    링크 감시설정 모드로 Link의 헬스를 체크하는 옵션, 0으로 설정하면 비활성화된다. 


    5. 본딩설정하기 

    5.1 /etc/sysconfig/network 설정


    ex)
    NETWORKING=yes
    HOSTNAME=localhost
    GATEDEV=bond0



    5.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


    ex)
    DEVICE=bond0
    BOOTPROTO=none
    ONBOOT=yes
    TYPE=Ethernet
    IPADDR=192.168.0.170
    NETMASK=255.255.255.0
    GATEWAY=192.168.0.1



    5.3 /etc/sysconfig/network-scripts/ifcfg-eth0, eth1  설정


    DEVICE=eth           # 연결 디바이스명 (eth0,1)
    BOOTPROTO=none        # Static (고정), DHCP, none, bootp 형식등이 있음
    ONBOOT=yes            # 부팅시 동작
    USERCTL=no            # 사용자 컨트롤 금지
    TYPE=Ethernet         # 이더넷 타입
    MASTER=bond0          # MASTER는 Bonding 명

    SLAVE=yes             # 대비책으로 구성 (Master는 bond0이므로 Slave 그룹에 가입)


    ex) 
    DEVICE=em1    ( eth1은 이름만바꿈됨)
    BOOTPROTO=none
    ONBOOT=yes
    TYPE=Ethernet
    MASTER=bond0
    SLAVE=yes



    5.4 /etc/modeprobe.d/modeprobe.conf  설정

    alias bond0 bonding
    options bonding mode=0 miimon=100​



    5.5 모듈 로딩 및 네트워크 재시작

    modprobe bonding # 본딩 모듈 로딩
    service network restart 



    5.6 본딩 적용 상태 확인


    - vim /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  # 맥주소가 동일


    ※ 알게된 점 

    스위치에서 이더채널을 설정하여 물리적인 회선 2개를 논리적으로 1개인것처럼 묶은 상태에서  
    서버의 본딩모드를 

    mode 0(RR)로 구성하게되면
    스위치 논리적포트 1개(물리 2개)   ---  서버 논리적포트 1개(물리 1,2개) 로 연결해도 통신이 잘됨

    mode 1(Active-Stanby)로 구성하게되면
    스위치 논리적포트 1개(물리 2개)  ---   서버 논리적포트 1개(물리 1개)로 연결해야 통신이 된다.   서버쪽에 물리2개를  이더채널그룹포트에 묶으면 통신이 안된다.
    이유는 스위치가 같은회선이라 생각하여 패킷을 뿌리는데 서버입장에서는 한쪽은 failover로 사용하기떄문에 정상통신이 안됨


    -- 본딩 모드변경방법
    1.  vim /etc/modprobe.d/modprobe.conf 
    ​alias bond0 bonding
    options bonding mode=0 miimon=100   모드 숫자를변경하면됨
    2. service network restart
    3. reboot
    4. /proc/net/bonding/bond0  본딩설정내용확인











Designed by Tistory.