본문 바로가기
IT/System Engineering

리눅스 본딩

by Jany 2013. 5. 14.
반응형
 

# 차례

1. 본딩이란?

2. 본딩 설정 종류

3. 본딩 설정하기

3-1) redhat linux(centos포함)에서 본딩 설정하기

3-2) debian linux에서 본딩 설정하기

3-3) gentoo linux에서 본딩 설정하기

 

 

1. 본딩(bonding)이란?

여러개의 이더넷을 하나로 묶어 네트워크 대역폭을 늘리는 방법이다.

이와 비슷한 기술은 시스템에 따라 다양한 이름으로 명명된다.

HP-UX   : APA

SUN     : SunTrunking

Cisco   : EtherChannel

Windows : Teaming

Linux   : Bonding

이기술은 제한적인 인터페이스의 대역폭 향상을 목적으로 두고 있지만

개념적 특성으로 인해 클러스터링의 기본 기술로 사용 가능하다.

 

2. 본딩 설정 종류

mode는 해당 bonding 정책을 정의 한다.

Default는 0이다.

Mode의 정의는 다음과 같다.

   0 : Round-robin 정책

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

   이 모드는 부하분산과 failover 제공한다.

   (Active-Active, 이론상 슬레이브 만큼의 배수대로 대역폭을 확장가능하다.)

   1 : Active-backup 정책

   bond에서 하나의 슬레이브만 활성화된다.

   다른 슬레이브는 활성화된 슬레이브가fail 경우에만 활성화 된다.

   (대역폭은 활성화 슬레이브 하나만큼의 대역폭을 갖는다.)

   2 : XOR 정책

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

   이것은 도착지 MAC 주소에 대해서 동일한 슬레이브를 선택하게 된다.

   이 모드는 부하분산과 failover 제공한다.

   3 : Broadcast 정책

   모든 슬레이브 인터페이스에 모든 것을 전송한다.

   이것은 failover 제공한다.(mirror, 하나의 슬레이브만큼의 대역폭을 갖는다)

 

3. 본딩 설정하기

3-1) redhat linux(centos포함)에서 본딩 설정하기

# /etc/modules.conf

# ================================================================================= #

alias   bond0   bonding

alias   eth0      3c59x  ## <-- 현재 장착되어 있는 이더넷

alias   eth1      3c59x  ## <-- 새로 장착할 두번째 이더넷

bond0에서 0는 숫자 0입니다.

bonding은 커널 모듈을 의미합니다.

3c59x 는 모듈이름입니다(3Com 905B-TX 10/100M).

# ================================================================================= #

 

/etc/sysconfig/network-scripts/ifcfg-bond0

# ================================================================================= #

DEVICE=bond0

BOOTPROTO=none

USERCTL=no

ONBOOT=yes

NETWORK=xxx.xxx.xxx.96

NETMASK=255.255.255.0

GATEWAY=xxx.xxx.xxx.xxx

IPADDR=xxx.xxx.xxx.123

# ================================================================================= #

 

/etc/sysconfig/network-scripts/ifcfg-eth0

# ================================================================================= #

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0

SLAVE=yes

USERCTL=no

# ================================================================================= #

 

/etc/sysconfig/network-scripts/ifcfg-eth1

# ================================================================================= #

DEVICE=eth1

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0

SLAVE=yes

USERCTL=no

# ================================================================================= #

# bonding 모듈 삽입

insmod /lib/modules/{커널버전}/kernel/drivers/net/bonding/bonding.ko mode=1

# 설정 끝

 

 

각 네트워크 인터페이스 확인하기

  [bond0 / eth0 / eth1 모두 같아야 부분]

  - 이더넷 MAC Address : HWaddr 00:xx:C9:xx:E7:xx

    , 첫번째 이더넷(eth0) MAC Address 모두 따른다.

  - IP Address : inet addr:211.xxx.159.xxx

  - Brocast Address : Bcast:211.xxx.159.xxx

  - Net Mask :  Mask:255.255.255.xxx

 

  [서로 틀려야할 부분]

  - MASTER / SLAVE(******** 확인********)

    bond0 : ... RUNNING MASTER MULTICAST ...

    eth0/eth1 : ... RUNNING SLAVE MULTICAST ...

  - 이더넷 I/O Address(서로 다른 이더넷임을 확인)

    eth0 : Base address:0x7000

    eth1 : Base address:0x9000

  - 기타 패킷

 

# /sbin/ifconfig

bond0     Link encap:Ethernet  HWaddr 00:xx:C9:xx:E7:xx

          inet addr:211.xxx.159.xxx  Bcast:211.xxx.159.xxx  Mask:255.255.255.xxx

          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:1107 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

eth0      Link encap:Ethernet  HWaddr 00:xx:C9:xx:E7:xx

          inet addr:211.xxx.159.xxx  Bcast:211.xxx.159.xxx  Mask:255.255.255.xxx

          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

          RX packets:1721 errors:0 dropped:0 overruns:0 frame:0

          TX packets:554 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:100

          Interrupt:9 Base address:0x7000

eth1      Link encap:Ethernet  HWaddr 00:xx:C9:xx:E7:xx

          inet addr:211.xxx.159.xxx  Bcast:211.xxx.159.xxx  Mask:255.255.255.xxx

          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

          RX packets:1746 errors:0 dropped:0 overruns:0 frame:0

          TX packets:553 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:100

          Interrupt:10 Base address:0x9000

lo        Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

 

# ls /proc/sys/net/ipv4/conf

all  bond0  default  eth0  eth1  lo

# 체크사항

게이트웨이나 네트워크 또는 외부 네트워크에 패킷을 보내고 받아본다.

네트워크 연결이 안되거나 속도가 현저하게 느리다면, 랜선이 허브와 이더넷에 올바르게 

연결되어있는지 확인하거나 허브 장비에 해당 Link가 On되어 있는지 꼭 확인한다.

RX / TX 패킷 확인하기

# cat /proc/net/dev (또는 /sbin/ifconfig 의 결과에서 RX/TX 패킷 비교)

(행의 길이가 길어서 필요한 것만 옮겼음)

(단위 : 패킷 양)

Iface   RX-OK  RX-ERR  RX-DRP  RX-OVR      TX-OK  TX-ERR  TX-DRP TX-OVR

   lo    340       0       0       0        340      0       0      0

bond0      0       0       0       0       3313      0       0      0

 eth0  14711       0       0       0       1657      0       0      0

 eth1  14746       0       0       0       1656      0       0      0

 

반응형

'IT > System Engineering' 카테고리의 다른 글

도메인 라이프 사이클  (0) 2013.07.31
리눅스 파일시스템 체크  (0) 2013.05.20
MySQL Error Code  (0) 2013.03.22
[JAVA] JVM OutofMemory 발생시 자동 dump 생성 JVM 옵션  (0) 2013.02.27
Apache Maxclients 설정  (0) 2013.02.08

댓글