리눅스 본딩 구성

2014. 2. 18. 00:02 | 리눅스
리눅스에서 본딩 구성하는 방법 (Redhat 계열)

아래와 같은 시나리오로 본딩을 구성해보자.

1. NIC는 총 4개
2. eth0, eth2를 bond0으로 묶고, eth1, eth3을 bond1로 묶음
3. bond0을 Default Gateway로 잡고 필요한 Static Route는 bond1에 설정

반복되는 부분 때문에 조금 길지만... 아래와 같이 구성해 보았다.

# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
IPADDR=192.168.0.101
NETMASK=255.255.255.0
GATEWAY=192.168.0.1

DNS1=168.126.63.1
DNS2=168.126.63.2
BONDING_OPTS="mode=1 miimon=100"
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
MASTER=bond0
SLAVE=yes
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
# /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
MASTER=bond0
SLAVE=yes
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
# /etc/sysconfig/network-scripts/ifcfg-bond1
DEVICE=bond1
IPADDR=10.10.0.101
NETMASK=255.255.255.0

BONDING_OPTS="mode=1 miimon=100"
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
# /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
MASTER=bond1
SLAVE=yes
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
# /etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE=eth3
MASTER=bond1
SLAVE=yes
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
# /etc/sysconfig/network-scripts/route-bond1
10.10.0.0/16 via 10.10.0.1 dev bond1

일단 파란색으로 표기한 공통 부분에 대해 알아보자.

ONBOOT=yes
=> 부팅시 자동으로 활성화

BOOTPROTO=none
=> bootp나 dhcp를 사용하지 않음 (static으로 구성)

USERCTL=no
=> 일반 유저가 컨트롤 할 수 없음 (root 권한 필요)

NM_CONTROLLED=no
=> NetworkManager가 컨트롤 할 수 없음

다음은 녹색으로 표시한 본딩 옵션에 대해 알아보자.

BONDING_OPTS="mode=1 miimon=100"
=> 본딩 모드를 Active-Backup으로 설정하고 MII 링크 모니터링 주기를 100ms (0.1초) 로 설정

본딩 모드는 아래와 같다. 보통 mode 1 또는 5를 많이 사용하는 듯.

mode=0 (round-robin)
mode=1 (active-backup)
mode=2 (balance-xor)
mode=3 (broadcast)
mode=4 (802.3ad)
mode=5 (balance-tlb)
mode=6 (balance-alb)

Static Route는 특정 대역을 Default Gateway가 아닌 bond1로 보내기 위해 /etc/sysconfig/network-scripts/route-bond1 파일에 설정하였고, 아래와 같이 route 명령어로 잘 설정되었음을 확인할 수 있다.

[root@CentOS ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.0.0       0.0.0.0         255.255.255.0   U     0      0        0 bond1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 bond0
10.10.0.0       10.10.0.1       255.255.0.0     UG    0      0        0 bond1
169.254.0.0     0.0.0.0         255.255.0.0     U     1006   0        0 bond0
169.254.0.0     0.0.0.0         255.255.0.0     U     1007   0        0 bond1
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 bond0

network-scripts 설정이 완료되면 service network restart 한번 해주고, 아래와 같이 bonding 상태를 확인할 수 있다.

[root@CentOS ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:15:5d:00:02:00
Slave queue ID: 0
Slave Interface: eth2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:15:5d:00:02:25
Slave queue ID: 0
[root@CentOS ~]# cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:15:5d:00:02:24
Slave queue ID: 0
Slave Interface: eth3
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:15:5d:00:02:26
Slave queue ID: 0