Você está na página 1de 5

How to configure bonding/teaming on Redhat Linux

All the system admin would like to avoid server outage by having redundancy for
root filesystem using mirroring, Multiple FC links to SAN with help of multi-
pathing and many more.So here the question is how do you provide redundancy in
network level ?
Having a multiple network card will not give any redundancy.In redhat Linux you
need to configure bonding to accomplish the network level redundancy.Once you have
configured the bonding/teaming by using two NIC cards,kernel will automatically
detect the failure of any NIC and work smartly according to that without any
riot.Bonding can be used for load sharing as well between two physical links.
NIC Bonding enables two or more network interfaces to act as one, simultaneously
increasing the bandwidth and providing redundancy. This is a great way of achieving
redundancy to a server. If one physical NIC is down or unplugged, it will
automatically move resource to other NIC card. NIC Bonding will work with the help
of bonding driver in kernel.
I present and explain in a very simple language so that you will understand it
efficient manner.

The below diagram will explain how the bonding is happening .

As for example we combine above nic 1 and nic 2, so if one of them dies..one is
remain active. This provide redundancy..
Another way to get high availability and link aggregation we combine two nic of 1
gb each, so that we get 2 gb .
PROCESS -
modprobe bonding - get configuration of driver
modinfo bonding - info of your bonding
create channel bonding interface
vi /etc/sysconfig/network-scripts/ifcfg-bond0
configure channel bonding interface for eth2
vi /etc/sysconfig/network-scripts/ifcfg-eth2
configure channel bonding interface for eth4
vi /etc/sysconfig/network-scripts/ifcfg-eth4
Restarting network service
service network restart

Operating system used: Redhat Linux 6.3


NIC Details:
[root@mylinz2 network-scripts]# ifconfig -a |grep eth
eth2 Link encap:Ethernet HWaddr 00:0C:29:79:17:FA
eth4 Link encap:Ethernet HWaddr 00:0C:29:79:17:04
eth3 Link encap:Ethernet HWaddr 00:0C:29:79:17:F0
[root@mylinz2 network-scripts]#

Goal:
Configure bonding between eth2 and eth4 with name of bond0.

Step 1:
Add the below line in /etc/modprobe.conf to load the bonding module in to kernel.
alias bond0 bonding

In redhat 6.3 , you need to create new file called �bonding.conf� under
/etc/modprobe.d/ with below mentioned line.

# cat /etc/modprobe.d/bonding.conf
alias bond0 bonding
Step 2:
Now time to create a bonding interface configuration file in
/etc/sysconfig/network-scripts/ directory like the below one.
[root@mylinz2 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@mylinz2 network-scripts]# cat ifcfg-bond0
#This is congiguration file for bond0.Used NIC's eth2 & eth4
DEVICE=bond0
IPADDR=192.168.10.25
NETMASK=255.255.255.0
USRCTL=no
ONBOOT=yes
BOOTPRO=none
BONDING_OPTS="mode=0 miimon=100"
[root@mylinz2 network-scripts]#
Step:3
Create a configuration files under �/etc/sysconfig/network-scripts/� for network
interfaces if not exists.If exists,have a contents like the below one.
[root@mylinz2 network-scripts]# cat ifcfg-eth2
DEVICE=eth2
HWADDR=00:0C:29:79:17:FA
BOOTPRO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
[root@mylinz2 network-scripts]# cat ifcfg-eth4
DEVICE=eth4
HWADDR=00:0C:29:79:17:04
BOOTPRO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
Note:Do not copy paste the content from above output.MAC and DEVICE name will
differ for each system.
The above directives are self explanatory for many system admin, however, let me
explain to newbie.
DEVICE: Indicates what is the device name
USERCTL: Indicates that can user control this device(here its no)
ONBOOT: Indicates that at the boot time do this device should be up?
MASTER: Is this device has master? Then what it is(here its bond0)
SLAVE: Is this device acting as slave?
BOOTPROTO: What about getting IP Address from DHCP? It�s set to none which indicate
it�s a static IP)
Step:4
Now restart the network service to load the configuration.
Note:Do not restart the network service without server maintenance window.
[root@mylinz2 ~]# service network restart
Shutting down interface eth2: Device state: 3 (disconnected) [ OK ]
Shutting down interface eth4: Device state: 3 (disconnected) [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: Active connection state: activated
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/15
[ OK ]
Bringing up interface eth3: Active connection state: activated
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/16
[ OK ]
[root@mylinz2 ~]#
Step:5
Verify whether �bond0� has come up with IP or not .
[root@mylinz2 Desktop]# ifconfig -a
bond0 Link encap:Ethernet HWaddr 00:0C:29:79:17:FA
inet addr:192.168.10.25 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe79:17fa/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3843 (3.7 KiB) TX bytes:4169 (4.0 KiB)

eth2 Link encap:Ethernet HWaddr 00:0C:29:79:17:FA


UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2031 (1.9 KiB) TX bytes:2064 (2.0 KiB)

eth4 Link encap:Ethernet HWaddr 00:0C:29:79:17:FA


UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1812 (1.7 KiB) TX bytes:2105 (2.0 KiB)

In the above output,you can see NIC eth2 and eth4 have flag �SLAVE� and interface
�bond0� has flag MASTER.Another thing you note both, the NIC interface will show
same MAC address.

Step:6
Performing the live test to ensure bonding is providing the fault tolerance.
First i am removing the LAN cable from eth4 and let see what happens.
[root@mylinz2 Desktop]# ifconfig -a
bond0 Link encap:Ethernet HWaddr 00:0C:29:79:17:FA
inet addr:192.168.10.25 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe79:17fa/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3843 (3.7 KiB) TX bytes:4169 (4.0 KiB)

eth2 Link encap:Ethernet HWaddr 00:0C:29:79:17:FA


UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2031 (1.9 KiB) TX bytes:2064 (2.0 KiB)

eth4 Link encap:Ethernet HWaddr 00:0C:29:79:17:FA


UP BROADCAST SLAVE MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1812 (1.7 KiB) TX bytes:2105 (2.0 KiB)
Still the bond0 interface is UP and RUNNING fine.At the same time,�RUNNING� flag
has disappear from eth4.
Now i have connected LAN cable back to eth4 and pulling out from eth2.
[root@mylinz2 Desktop]# ifconfig -a
bond0 Link encap:Ethernet HWaddr 00:0C:29:79:17:FA
inet addr:192.168.10.25 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe79:17fa/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3843 (3.7 KiB) TX bytes:4169 (4.0 KiB)

eth2 Link encap:Ethernet HWaddr 00:0C:29:79:17:FA


UP BROADCAST SLAVE MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2031 (1.9 KiB) TX bytes:2064 (2.0 KiB)

eth4 Link encap:Ethernet HWaddr 00:0C:29:79:17:FA


UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1812 (1.7 KiB) TX bytes:2105 (2.0 KiB)
Still �bond0� interface running with UP & RUNNING flag.So you have successfully
configured bonding on Redhat Linux 6.

To see complete bonding info,use below command.

[root@mylinz2 Desktop]# cat /proc/net/bonding/bond0


Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: load balancing (round-robin)


MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth2


MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:79:17:fa
Slave queue ID: 0

Slave Interface: eth4


MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:79:17:04
Slave queue ID: 0
[root@mylinz2 Desktop]#

To verify the current bonding mode,use below command.


[root@mylinz2 Desktop]# cat /sys/class/net/bond0/bonding/mode
balance-rr 0
You can modify the bonding mode by editing �mode� in the ifcfg-bond0 configuration
file.

[root@mylinz2 Desktop]# cat /etc/sysconfig/network-scripts/ifcfg-bond0 |grep -i


mode
BONDING_OPTS="mode=0 miimon=100"

POLICY DETAILS
Ploicy Name Code Description
balance-rr 0 Round-Robin policy for fault tolerance
active-backup 1 Active-Backup policy for fault tolerance
balance-xor 2 Exclusive-OR policy for fault tolerance
broadcast 3 All transmissions are sent on all slave interfaces.
802.3ad 4 Dynamic link aggregation policy
balance-tlb 5 Transmit Load Balancing policy for fault tolerance
balance-alb 6 Active Load Balancing policy for fault tolerance

To list the currently configured bonds,


[root@mylinz2 Desktop]# cat /sys/class/net/bonding_masters
bond0
- CHANDAN KUMAR DAS
LINUX SYSTEM ADMINISTRATOR

Você também pode gostar