** 리눅스 본딩(Bonding)이란

   여러개의 NIC(랜카드)를 논리적으로 묶어서 한 개의 NIC의 개수만큼 대역폭을 확장하는 기술

   Fault Tolerance(결함 감내)와 같은 기능을 하며 2개의 NIC를 한 개의 NIC로 묶어서 Active와 Stand By로 

   구성하기도 한다.

 

 

 

** O/S 별 설명

    - HP-UX    : APA

    - SUN      : SunTrunking(IPMP)

    - IBM      : EtherChannel

    - Cisco    : EtherChannel

    - Windows  : Teaming

    - Linux    : Bonding(RedHat(CentOS) 7버전 이상은 Teaming이 별도로 추가됨)

    - 표준용어  : Link Aggregation

 

 

 

**Bonding mode 설명

 

0 : Balance-round robine 정책 : 2개의 NIC를 통한 분배

   첫 번째 가능한 슬레이브부터 마지막까지 순차적으로 전송하며

   이 모드는 부하분산과 장애 감내를 제공합니다.

 

1 : Active-standby 정책 : Active상태의 NIC에 문제 발생시 Fault Tolerance 

    bond에서 하나의 슬레이브만 활성화되며 다른 슬레이브는 활성화된 슬레이브가

    fail 된 경우에만 활성화 됩니다.

 

2 : Balance-XOR 정책 : 0과 비슷하지만 xor연산을 이용한 목적지 Mac과 근원지 Mac을 이용한 분배

    [(출발지 MAC 주소와 도착지 MAC 주소의 XOR) modula 슬레이브 1개]에 기초하여 전송합니다.

    이것은 도착지 MAC 주소에 대해서 동일한 슬레이브를 선택하게 된다. 이 모드는 부하분산과 장애감지를 제공합니다.

  

3 : Broadcast 정책 : 2개의 NIC에 어떤 규칙 없이 데이터 통신 모든 슬레이브 인터페이스에 모든 것을 전송합니다.

 

4 : 802.3ad (link aggregation) - switch에 aggregation 그룹생성이 필요함.

    IEEE 802.3ad dynamic link aggregation정책을 설정하며

    전송과 받는 것은 active aggregator 안에서 모든 slaves 위에서 됩니다.

 

5 : transmit load 밸런스로써 보내는 패킷만 밸런스 합니다.

    outgoing traffic은 각 slave 인터페이스에 현재의 부하에 따라서 분배됩니다.

    incoming traffic는 현재의 slave로 받음. 

 

6 : receive와 transmit패킷을 밸런스 하며 이때 5,6 은 하나의 스위치에 있을때만 동작합니다.

 

    이 mode는 load balancing를 더하여 balance-tlb를 포함 합니다.

 

 

 

 

 

/*--------------------------------------------------*/

/* 본딩 설정(운영서버 적용시 붉은색 수정필요)               */

/*--------------------------------------------------*/

 

 

# cd /etc/sysconfig/network-scripts/

# vi ifcfg-bond0

 

    DEVICE="bond0"

    TYPE="Bond"

    NAME="bond0"

    ONBOOT="yes"

    BOOTPROTO="none"

    IPADDR="192.168.0.190"

    NETMASK="255.255.255.0"

    GATEWAY="192.168.0.1"

    DNS1="8.8.8.8"

    DNS2="168.126.63.1"

    BONDING_MASTER="yes"

    BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1 primary=eno1"

 

 

** 가상화(VirtualBox, vmware등) 서버에서 작업 및 테스트시는 fail_over_mac=1 primary=eno1 옵션이 추가되어야
본딩 운영이 가능하다.

 

 

 

* 내용 추가 및 수정(IPADDR, NETMASK, GATEWAY, DNS1, DNS2 삭제 또는 주석처리)

 

# vi ifcfg-eno1

 

    MASTER="bond0"

    SLAVE="yes"

    DEFROUTE="no"

 

 

 

# vi ifcfg-eno2

 

    MASTER="bond0"

    SLAVE="yes"

    DEFROUTE="no"

 

 

 

# systemctl restart NetworkManager

 

# systemctl restart network

 

# nmcli d (or nmcli c) 

 

  bond0 활성화 여부 확인

 

 

 

 

 

** 본딩 테스트

콘솔 화면을 3개를 접속하거나 연다.

콘솔 1번은 gateway에 ping을 날린다.


# ping 192.168.0.1

 

 

 

콘솔 2번은 bonding 상태를 확인한다.

# watch -d -n 1 "cat /proc/net/bonding/bond0"

 

 

 

 

 

콘솔 3번은 Active된 NIC를 임의로 다운시켜 콘솔 2번, 1번 화면을 확인한다.(또는 랜선을 제거해 본다)

 

 

# ifdown eno1

 

 

 

* 본딩 환경설정 파일

ifcfg-bond0
다운로드
ifcfg-enp0s3
다운로드
ifcfg-enp0s8
다운로드

 

 

 

 

/*--------------------------------------------------*/

/* Teaming 설정(운영서버 적용시 붉은색 수정필요)          */

/* Redhat/CentOS 7.x 이상 버전                        */

/*--------------------------------------------------*/

 

** 기존 NIC 접속 종료
# nmcli con mod enp0s3 connection.autoconnect no
# nmcli con mod enp0s8 connection.autoconnect no

** 티밍 추가 (nmcli 명령어 가각 한줄로 실행)
# nmcli con add con-name team0 type team ifname team0 config 

  '{

    "runner":{"name":"activebackup","hwaddr_policy":"by_active"},

    "link_wath":{"name":"ethtool","delay_up":2500,"delay_down":1000},

     "ports":{"enp0s3":{"prio":-10,"sticky":true},"enp0s8":{"prio":100}}

  }'

 

# nmcli con add con-name team0-port1 type team-slave ifname enp0s3 master team0
# nmcli con add con-name team0-port2 type team-slave ifname enp0s8 master team0
# nmcli con mod team0 ipv4.addresses 192.168.0.186/24
# nmcli con mod team0 ipv4.gateway 192.168.0.1
# nmcli con mod team0 ipv4.dns "8.8.8.8 168.126.63.1"
# nmcli con mod team0 ipv4.method manual
# nmcli con down team0 && nmcli con up team0

본딩 설정과 마찬가지로 티밍 구성시 강상화서버 추가 옵션 "hwaddr_policy":"by_active" 적용해야 정상 적으로 운영(테스트)이 가능하다.

 


** 티밍 상태 확인
teamdctl team0 state

** 티밍 포트 상태 확인
teamnl team0 ports

** 티밍 액티브 포트 상태 확인
teamnl team0 getoption activeport

** NIC 다운
nmcli dev dis enp0s3

** NIC 업
nmcli dev con enp0s3

 

 

* 티밍 환경설정 파일

ifcfg-team0
0.00MB
ifcfg-team0-port1
0.00MB
ifcfg-team0-port2
0.00MB

블로그 이미지

유효하지않음

,