Linux bonding 간단히 구성하기(Active-Standby)
I. Linux Kernel 2.6.x
Ø Linux 2.6.x 커널에서는 Teaming이라는 용어 대신 Bonding으로 바뀌었으면 2.4.x 커널에서 이용을 할려고 할 경우 ifenslave 를 업데이트를 하거나 2.4.12 커널이상으로 커널 컴파일을 실시하여 하여야 한다.
Ø Ifenslave 를 업데이트 하여 사용을 할 경우 정상적인 동작을 되지 않을 수 있으므로 2.6.x 의 버전을 설치하는 것을 추천한다.
1. Linux Bonding 세팅(test-web04)
1) vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=test-web04
GATEWAY=10.100.100.1
GATEDEV=bond0 à 추가사항
2) vi /etc/modprobe.conf
alias bond0 bonding à 해당 파일의 가장 최상단에 추가해 준다.
alias eth0 bnx2
alias eth1 bnx2
alias eth2 e1000
alias eth3 e1000
alias scsi_hostadapter megaraid_sas
alias usb-controller ehci-hcd
alias usb-controller1 uhci-hcd
options bonding mode=1 à bonding 방식 지정 : 1=active-standby 방식
options bond0 miimon=100 à NIC Health 체크 시간(1/100 sec)
* bonding mode
Ø 0 : balance-round robine ( 2개의 NIC를 통한 분배 + Fault Tolerance )
Ø 1 : active-standby ( Active상태의 NIC에 문제 발생시 Fault Tolerance )
Ø 2 : balance-xor ( 0과 비슷하지만 xor연산을 이용한 목적지 Mac과 근원지 Mac을 이용한 분배 + Fault tolerance)
Ø 3 : broadcast ( 2개의 NIC에 어떤 규칙 없이 데이터 통신 + Fault Tolerace)
Ø 4 : 802.3ad (link aggregation) – switch 에 aggregation 그룹생성이 필요
3) vi /etc/sysconfig/network-scripts/ifcfg-bond0 à 추가 파일 작성
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.100.100.24
NETMASK=255.255.255.0
NETWORK=10.100.100.0
4) vi /etc/sysconfig/network-scripts/ifcfg-eth2 à bonding용으로 eth2와 eth3 을 사용
DEVICE=eth2
BOOTPROTO=none
ONBOOT=yes
USERCTL=no à 해당 nic 카드를 root가 아닌 다른 사용자가 off 가능하게 할 지 여부
MASTER=bond0
SLAVE=yes
* ifcfg-eth3 도 위와 똑같이 세팅
5) 4번 작업시 가급적 console에서 작업을 하기 바람.
6) modprobe bonding à 모듈을 올려줍니다.
7) lsmod | grep bonding à 모듈이 올라왔는지 확인합니다.
bonding 64872 0
9) /etc/rc.d/init.d/network 재구동
10) ifconfig 로 확인
bond0 Link encap:Ethernet HWaddr 00:15:17:15:84:12 à bonding IP 및 MAC
inet addr:10.100.100.24 Bcast:10.100.100.255 Mask:255.255.255.0
inet6 addr: fe80::215:17ff:fe15:8412/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:139377078 errors:0 dropped:0 overruns:0 frame:0
TX packets:42875855 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:706627033 (673.8 MiB) TX bytes:634182662 (604.8 MiB)
eth2 Link encap:Ethernet HWaddr 00:15:17:15:84:12 à real nic는 slave로 되어 있어야함
inet6 addr: fe80::215:17ff:fe15:8412/64 Scope:Link
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:88307292 errors:0 dropped:0 overruns:0 frame:0
TX packets:42875850 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1545900323 (1.4 GiB) TX bytes:634182264 (604.8 MiB)
Base address:0xece0 Memory:fc3e0000-fc400000
eth3 Link encap:Ethernet HWaddr 00:15:17:15:84:12 à real nic는 slave로 되어 있어야함
inet6 addr: fe80::215:17ff:fe15:8412/64 Scope:Link
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:51069786 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3455694006 (3.2 GiB) TX bytes:398 (398.0 b)
Base address:0xecc0 Memory:fc3a0000-fc3c0000
9) 현재 Bonding 구동 현황 파악
[root@test-web04 sysconfig]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v2.6.3 (June 8, 2005) à Bonding 버전
Bonding Mode: fault-tolerance (active-backup) à Bonding Mode
Primary Slave: None
Currently Active Slave: eth2 à 현재 Active한 Real NIC
MII Status: up à Link 상태
MII Polling Interval (ms): 100 à Fail시 전환
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth2
MII Status: up à Link 상태
Link Failure Count: 0 à O/S startup 이후 Link Fail 건수
Permanent HW addr: 00:15:17:15:84:12
Slave Interface: eth3
MII Status: up à Link 상태
Link Failure Count: 1 à O/S startup 이후 Link Fail 건수
Permanent HW addr: 00:15:17:15:84:13