메뉴 닫기

ubunut bonding 설정 및 트래픽 테스트

CentOS 본딩 자료는 많은데 Ubuntu 본딩 자료는 정형화된 자료를 찾기가 싶지 않습니다.

그래서 Ubuntu 14.04 설치된 서버로 본딩 설정중 랜선 2개를 한개 처럼 사용하는 라운드 로빈
방식으로 구성후 트래픽 테스트로 얼만큼 속도가 나오는지 테스트 해보겠습니다.

Ubuntu를 설치 했는데 인터페이스명이 기존의 eth~~ 아니고 p9p1 이런 형식으로 나옵니다.

smileserv@localhost:~$ ifconfig 
lo Link encap:Local Loopback 
 inet addr:127.0.0.1 Mask:255.0.0.0
 inet6 addr: ::1/128 Scope:Host
 UP LOOPBACK RUNNING MTU:65536 Metric:1
 RX packets:88 errors:0 dropped:0 overruns:0 frame:0
 TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:0 
 RX bytes:7176 (7.1 KB) TX bytes:7176 (7.1 KB)

p9p1 Link encap:Ethernet HWaddr 0c:c4:7a:72:49:a0 
 inet addr:115.xxx.xxx.16 Bcast:115.xxx.xxx.255 Mask:255.255.255.0
 inet6 addr: fe80::ec4:7aff:fe72:49a0/64 Scope:Link
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 RX packets:2288 errors:0 dropped:0 overruns:0 frame:0
 TX packets:286 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:1000 
 RX bytes:309253 (309.2 KB) TX bytes:84788 (84.7 KB)
 Interrupt:48 Memory:fe9e0000-fea00000 

 

이럴때는 /etc/default/grub에서 GRUB_CMDLINE_LINUX=”net.ifnames=0 biosdevname=0″로 변경하고 
grub-mkconfig 명령어후 리부팅을 하고 나면 디바이스 이름이 전통적인 디바이스 명인 eth~로 변경됩니다.

root@localhost:~# vi /etc/default/grub
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

root@localhost:~# grub-mkconfig -o /boot/grub/grub.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.13.0-24-generic
Found initrd image: /boot/initrd.img-3.13.0-24-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done

 

본딩 설정을 하기위해서는 ifenslave를 다운받아야 하고 /etc/modules에 bonding을 추가해줍니다.

root@localhost:~# apt-get install ifenslave
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다 
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
 ifenslave
0개 업그레이드, 1개 새로 설치, 0개 제거 및 191개 업그레이드 안 함.
13.1 k바이트 아카이브를 받아야 합니다.
이 작업 후 88.1 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://kr.archive.ubuntu.com/ubuntu/ trusty-updates/main ifenslave all 2.4ubuntu1.1 [13.1 kB]
내려받기 13.1 k바이트, 소요시간 0초 (104 k바이트/초)
Selecting previously unselected package ifenslave.
(데이터베이스 읽는중 ...현재 55909개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../ifenslave_2.4ubuntu1.1_all.deb ...
Unpacking ifenslave (2.4ubuntu1.1) ...
Processing triggers for man-db (2.6.7.1-1) ...
ifenslave (2.4ubuntu1.1) 설정하는 중입니다 ...

root@localhost:~# cat /etc/modules 
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

lp
rtc
bonding

 

이제 본격적으로 본딩 설정을 해 보죠. 설정은 /etc/network/interfaces에서 합니다.

cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
bond-master bond0

auto eth1
iface eth1 inet manual
bond-master bond0

# The primary network interface
auto bond0
iface bond0 inet static
address 115..xxx.xxx.16
gateway 115.xxx.xxx.1
netmask 255.255.255.0
nameserver 168.126.63.1
mtu 9000
bond-miimon 100
bond-downdelay 200 
bond-updelay 200 
bond-mode 0
bond-slaves none

 

설정후 네트웍 재시작후 정상적으로 올라왔는지 확인 합니다..

root@localhost:~# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200

Slave Interface: eth0
MII Status: up
Speed: 100 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 0c:c4:7a:72:49:a0
Slave queue ID: 0

Slave Interface: eth1
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 0c:c4:7a:72:49:a1
Slave queue ID: 0

 

네트웍 속도 테스트를 위해 iperf를 설치 합니다. 

root@localhost:~# apt-get install iperf
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다 
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
 iperf
0개 업그레이드, 1개 새로 설치, 0개 제거 및 191개 업그레이드 안 함.
56.3 k바이트 아카이브를 받아야 합니다.
이 작업 후 174 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://kr.archive.ubuntu.com/ubuntu/ trusty/universe iperf amd64 2.0.5-3 [56.3 kB]
내려받기 56.3 k바이트, 소요시간 0초 (445 k바이트/초)
Selecting previously unselected package iperf.
(데이터베이스 읽는중 ...현재 55923개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../iperf_2.0.5-3_amd64.deb ...
Unpacking iperf (2.0.5-3) ...
Processing triggers for man-db (2.6.7.1-1) ...
iperf (2.0.5-3) 설정하는 중입니다 ...

 

iperf는 서버와 클라이언트 개념이기에 동일한 서버 2대에서 진행하겠습니다.

※ 서버에서 실행
root@localhost:~# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

※ 클라이언트에서 실행
root@ubuntu:~# iperf -c 115.xxx.xxx.14 -t 600
------------------------------------------------------------
Client connecting to 115.xxx.xxx.14, TCP port 5001
TCP window size: 325 KByte (default)
------------------------------------------------------------
[ 3] local 115.xxx.xxx.16 port 48791 connected with 115.xxx.xxx.14 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-600.0 sec 96.8 GBytes 1.39 Gbits/sec

네트웍 속도가 1.4G 나왔으며 각 포트별로 트래픽이 분산되는게 확인 됩니다.

mrtg

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x