OS 및 스토리지/Linux

[Linux][RHEL/CentOS 7] Teaming 구성

Cloud Engineer 2022. 3. 6. 13:43

1. 들어가기 전

과거에는 네트워크 인터페이스를 이중화할 때 Bonding을 바탕으로 구성했습니다. 다만 Bonding 구성 시, Network에 영향받지 않게 NetworkManager를 종료 후 구성해야됬습니다. 하지만 Redhat 7 이상부터 Teaming을 사용하여 네트워크 인터페이스 이중화하게 되었습니다. Bonding과 다르게 Teaming은 NetworkManger 종료 없이 해당 데몬을 사용하여 구성할 수 있게 되었습니다. 본 포스팅에서는 NetworkManager를 사용하여 Teaming을 구성하는 방식에 대해 알아보겠습니다. 

2. 구성도

Teaming 구성도

3. 구성방식

3-1. Pre-Requirements

  • 물리적 네트워크 인터페이스 2개 (ex - ens35, ens36)
  • NetworkManager 패키지 설치

3-2. ens35, ens36을 team0이라는 가상 인터페이스로 이중화

3-2-1. OS에 구성된 네트워크 인터페이스 확인

$ nmcli device status

3-2-2. teaming 생성

  • connection name : team0
  • interface name : team0
  • interface type : team
  • 이중화 방식 : activebackup

team 이중화 방식 종류

이중화 종류 설명
activebackup Active-StandBy 모드
loadbalance Hash Function 기반의 로드밸런싱
broadcast Active-Active 모드 기반이며, 모든 포트로 패킷 전송
roundrobin Active-Active 몯 ㅡ기반이며, Round-Robin 방식의 패킷 전송
$ nmcli connection add con-name team0 type team ifname team0 config '{"runner":{"name":"activebackup"}}'

3-2-3. team이 정상적으로 구성되었는지 확인

$ nmcli conenction show

3-2-4. 2개의 물리적 네트워크 인터페이스를 Team Port로 설정

$ nmcli connection add con-name team0-port1 type team-slave ifname ens35 master team0
$ nmcli connection add con-name team0-port2 type team-slave ifname ens36 master team0

3-2-5. Team Device에 IP 할당

$ nmcli connection modify team0 ipv4.addresses 172.16.10.5/24 ipv4.method manual

3-2-6. 네트워크 서비스 재시작

$ systemctl restart network
$ systemctl restart NetworkManager

3-2-7. Team 구성 확인

# team 구성 상태 확인
$ teamdctl team0 state

# team에 구성된 포트 확인
$ teamnl team0 ports

# 현재 team에 활성화 되어있는 port 확인
$ teamnl team0 getoption activeport

3-3. 이중화 테스트

# Active 상태인 포트 연결 중단
$ nmcli device disconnect ens35

# Active Port가 변경되었는지 확인
$ teamdctl team0 state

# 포트 정상화
$ nmcli device connect ens35

# team 구성 상태 확인
$ teamdctl team0 state