OS [Linux] Network Bonding 설명 및 구성
페이지 정보
작성자 LeeHyongDong 아이디로 검색 전체게시물 댓글 0건 조회 11,214회 좋아요 0회 작성일 20-04-28 16:31본문
- Network Bonding 설명 및 구성 방법
소개
물리적으로 구성된 서버에서 네트워크를 구성할때 NIC를 논리적으로 묶어서 한개의 네트워크로 보이게 하는 기술
환경
RHEL/CentOS 7버전
사용 Network Device명 ens224, ens256
구성
서버에서 2개의 NIC를 묶어 하나의 네트워크로 사용하는 방법.
이슈
물리적 서버에서 본딩 구성이 되지 않은경우 네트워크에 이상이 생겨 서비스가 중간에 내려가는 경우가 생길수 있습니다.
1. Bonding 설명
1.1. Bonding설명
Bonding은 여러개의 NIC카드를 하나의 NIC로 논리적으로 묶어 사용하는 기술
대역폭을 확장하거나 네트워크 결함을 대비해 Active-Stand by로 사용할수 있다.
본딩(Bonding)의 다른 이름으로는 티밍(Teaming)이 있으며 티밍(Teaming)은 윈도우에서 본딩(Bonding)은 Linux에서 사용되는 용어입니다.
두개의 하는 역활은 같으며 RHEL7버전에서는 티밍(Teaming)과 본딩 두개 다 사용 가능합니다.
1.2. Bonding mode 설명
0 : Balance-round robine 정책 : 2개 이상의 NIC를 첫번째 슬레이브부터 마지막까지 순차적으로 패킷을 분산해 부하를 분산 시켜줍니다.
1 : Active-standby 정책 : 한개의 Slave를 Active상태로 두고 문제가 발생시 대기중이던 다른 NIC로 넘어감 NIC가 여러개 있어도 하나의 슬레이브만 액티브가 됩니다.
2 : Balnce-XOR 정책 : 0과 비슷하지만 xor연산을 사용해 목적지 Mac과 근원지 Mac을 이용한 분배 [(출발지 Mac 주소와 도착지 Mac 주소의 XOR) modula 슬레이브 1개]에 기초하여 전송합니다.
3 : Broadcast 정책 : 2개의 NIC에서 어떠한 규칙 없이 데이터 통신함 모든 슬레이브 인터페이스에 모든것을 전송합니다.
4 : 802.3ad (link aggregation) - switch에 aggregation 그룹 생성이 필요함.
IEEE 802.3ad dynamic link aggregation정책을 설정하며 전송과 받는 것은 active aggregator 내부의 모든 slave에 의해 작동됩니다.
5 : tansmit load 밸런스로서 보내는 패킷만 밸런스 합니다.
outgoing traffic은 각 slave 인터페이스에 현재의 부하에 따라서 분배됩니다.
incoming traffic은 현재의 slave로 받습니다.
6 : receive와 transmit 패킷을 밸런스 하며 이때 5,6은 하나의 스위치에 있을때만 작동합니다.
2. Bonding 구성
본딩 구성에는 네트워크 구성과 같이 총 3개가 존재합니다
3가지 방법으로 네트워크 구성하는 방법은 다른 글에서 설명을 찾아볼수 있습니다.
http://www.chlux.co.kr/bbs/board.php?bo_table=board02&wr_id=76&sca=OS&page=2
2.1. graphical 설정
graphical 설정은 명령어 nmtui를 사용하며 기본적으로 NetworkManager가 있어야 합니다.
- nmtui 초기 화면
명령줄에 nmtui를 입력하면 위 그림과 같은 사진이 나오며 기본 설정 방법은 네트워크 구성법과 같습니다.
- nmtui 추가 및 설정
본딩을 구성할때 다른 구성 방법에서는 각 장치를 따로 추가를 해줘야 하지만 nmtui에서는 한번에 구성이 됩니다.
- Bond 선택
bond 외에도 team도 있지만 저는 bond를 선택해 구성하겠습니다.
- bonding 설정 첫화면
bond를 선택하면 위와 같이 나오며 여기에서 설정이 필요한 내용은 bonding name설정, slave 추가, mode설정, ipv4 설정이 있겠습니다.
- slave 추가
slave 추가를 할때 존재하는 device를 입력해야 합니다. 만약 잘못 입력할 경우 잘못 입력한 slave는 bonding구성에 추가되지 않으며
모든 slave를 잘못 입력할경우 bonding구성이 되어도 작동되지 않습니다.
- nmtui 모드 선택
모드를 선택할때 보통 대역폭의 확장이 필요하다면 Round-robin을 선택하고
대역폭의 확장보다 네트워크의 안정성이 필요하다면 active-backup을 선택합니다.
- nmtui ip추가
여기에서 Active-Backup을 선택하면 primary를 추가할수 있습니다 최우선으로 설정된 Device를 Active상태로 설정하는 명령어입니다.
primary를 추가할경우 생길수 있는 문제가 있습니다.
ens224를 primary로 설정을 했지만 ens224가 잠시 연결 문제가 생겨 ens256으로 넘어갔다가
다시 ens224로 바로 연결이 변경되는 순간 패킷로스가 생길수 있습니다.
물론 primary를 추가하고 설정을 하게된다면 다시 넘어가는 경우를 없앨수 있습니다.
설정 방법은 nmcli와 config에서 알려드리겠습니다.
설정에 IP를 추가한다음 설정 저장하고 마치게 되면 별다른 명령어 없이 처음엔 설정이 적용 됩니다.
2.2. command 설정
command는 nmtui보다 외워야 하는 명령어가 많지만 추가적인 설정을할때 더욱 편합니다.
- nmcli dev
nmcli dev로 현재 device를 확인할수 있습니다.
- nmcli add bond
nmcli 를 추가할때 옵션을 추가할수 있습니다 만약 primary를 지정하고 싶다면 bond.options를 사용해야합니다.
- nmcli bond.options사용
위와 같은 옵션을 사용하면 primary를 설정 하지만 오토 페일백을 하지 않아 ens224가 끊어졌다가 다시 연결된다 해도 ens256에서 Active를 유지합니다
mode=1 위에서 알려드린 0~6까지의 숫자로 옵션을 선택합니다. 숫자가 아닌 정책명으로 할수 있습니다
miimon 모니터링 주기 설정입니다
primary=ens224 primary 설정 옵션입니다.
primary_reselect=2 오토 페일백을 하지 않겠다는 옵션입니다. 0(default)오토페일벡 사용 1 slave중 더 좋은 장치 사용
- nmcli add slave
slave를 추가합니다 nmtui와 달리 장치명을 잘못적으면 추가가 안됩니다.
- nmcli con mod bond0
2.3 config 설정
config 설정은 /etc/sysconfig/network-scripts/에 config를 추가하면 됩니다.
- bond0 설정
nmcli 와 nmtui로 설정을 해도 파일이 똑같이 생성됩니다 nmcli를 사용하다가 nmtui로 설정할수 있으며 중간에 config로 수정을 할수도 있습니다.
- slave ens224
bonding slave는 TYPE, NAME, DEVICE, ONBOOT, MASTER, SLAVE 만 있어도 설정이 됩니다.
똑같이 ens256을 추가해준다음 network를 재시작합니다.
- systemctl restart network
network를 재시작 시켜주면 설정이 변경되거나 추가된것을 다시 불러 옵니다.
- ip a
3. 관련 페이지
네트워크 설정
http://www.chlux.co.kr/bbs/board.php?bo_table=board02&wr_id=76&sca=OS&page=2
댓글목록
등록된 댓글이 없습니다.