Collects/LinuxServer

Linux Bonding Skill

NWAN 2008. 5. 20. 22:24
 
     

 

여러장의 이더넷 카드를 묶어 하나의 ip를 부여하여 그만큼 대역폭을 확보하는 방법 입니다. 물론 케이블 불량을 대비한 고장대비 방법이라고도 볼수 있습니다.

- 개인적인 생각에서는 케이블 불량을 대비한 고장대비보다는 100메가 포트 2개를 이용한 높은 대역폭을 얻기 위해서 본딩 구성을 하는 것이 아닐까라는 생각이 듭니다.




랜카드 2장

커널에서 : Network device support 에서 Bonding driver support 가 채크되어야 합니다..(RedHat은 기본)으로 체크 되있습니다.
커널에서 지원하기 위해서는 다음과 같이 설정하고 커널을 컴파일하여야 한다.

Network device support --->
<*> Bonding driver support

멀티 Ethernet Channel을 사용하기 위해서 [Y]나 [M]으로 설정하여 컴파일합니다.
이 기능은, 이 모듈(Bonding)를 이용해서 두배의 속도를 가진 하나의 장치(bond)처럼 작동합니다.


- redhat 계열이나, fedora core계열에서 kernel update에서 bonding 구성을 할 수 있다.





# cd /etc/sysconfig
# vi network
----------------------------------------------------------
## 현재 설정을 그대로 유지한채 다음 GATEWAYDEV 설정만 바꿈.
## 그래야 외부 네트워크로 패킷이 나갈 수 있습니다.
##
## 중간 생략
##
GATEWAYDEV=bond0





/etc/modules.conf (또는 /etc/conf.modules)
## 중간 생략
##
alias bond0 bonding
alias eth0 e1000 ## <-- 현재 장착되어 있는 이더넷
alias eth1 e1000 ## <-- 새로 장착할 두번째 이더넷
alias scsi_hostadapter mptbase
alias scsi_hostadapter mptscsih
alias usb_contorller uhci_hcd
install bond0 /sbin/modporbe bonding -o bond0 miimon=100 mode=1 primary=eth1
##
##
## bond0에서 0는 숫자 0입니다.
## bonding은 커널 모듈을 의미합니다.
## e1000 는 모듈이름입니다(3Com 905B-TX 10/100M).
## primary=eth1 ->모든 디바이스가 eth1의 mac address를 따른다.



etc/sysconfig/network-scripts/ifcfg-bond0

# cd /etc/sysconfig/network-scripts
# mv ifcfg-eth0 ifcfg-bond0
# vi ifcfg-bond0
----------------------------------------------------------
DEVICE=bond0 ## <-- 이부분 만 수정함. 나머진 기존의 eth0를 그대로 유지
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
NETMASK=255.255.255.XXX
IPADDR=XXX.XXX.XXX.XXX

' >/etc/sysconfig/network-scripts/bond0




/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

이 부분은 묶일 물리적 장치를 정합니다. eth0 는 첫번째 랜카드입니다. 위와같이 설정합니다.
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=none




# pwd
/etc/sysconfig/network-scripts
# ls ifcfg-*
ifcfg-bond0 ifcfg-eth0 ifcfg-eth1 ifcfg-lo
#
이상으로 설정이 모두 끝났습니다.

시스템 재부팅 및 설정 확인(예)

두번째 이더넷을 장착하고 시스템을 부팅하면 다음과 같은 메시지를 볼 수 있습니다.

Setting network parameters: [ OK ]
Bringing up interface lo: [ OK ]
Bringing up interface bond0: [ OK ]
Bringing up interface eth0: [ OK ]
Bringing up interface eth1: [ OK ]


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

[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 (또는 netstat -i)
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