** 리눅스 본딩(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
* 본딩 환경설정 파일
/*--------------------------------------------------*/
/* 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
* 티밍 환경설정 파일