Friday, April 20, 2012

Linux Network bonding

Linux Network bonding



Linux network Bonding is creation of a single bonded interface by combining 2 or more Ethernet interfaces. This helps in high availability of your network interface and offers performance improvement. Bonding is same as port trunking or teaming.

Steps for bonding in Redhat Enterprise Linux are as follows.. 


Step 1.

Create the file ifcfg-bond0 with the IP address, netmask and gateway. Shown below is my test bonding config file.

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

DEVICE=bond0
IPADDR=10.183.90.86
GATEWAY=10.183.90.1
NETMASK=255.255.255.0
NETWROK=10.183.90.0
USERCTL=no
BOOTPROTO=none
ONBOOT=yes




Step 2.

Modify eth0 and eth1  configuration as shown below. Comment out, or remove the ip address, netmask, gateway and hardware address from each one of these files, since settings should only come from the ifcfg-bond0 file above. Make sure you add the MASTER and SLAVE configuration in these files.

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

DEVICE=eth0
BOOTPROTO=none
HWADDR=00:1C:C4:96:21:60
ONBOOT=yes
# setting for Bond
MASTER=bond0
SLAVE=yes


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

DEVICE=eth1
BOOTPROTO=none
HWADDR=00:1C:C4:96:21:62
ONBOOT=yes
MASTER=bond0
SLAVE=yes



Step 3.

Set the parameters for bond0 bonding kernel module. Select the network bonding mode based on you need, documented at
http://unixfoo.blogspot.com/2008/02/network-bonding-part-ii-modes-of.html. The modes are
·       mode=0 (Balance 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)
Add the following lines to /etc/modprobe.conf
# bonding commands
alias bond0 bonding
options bond0 mode=1 miimon=100 



Step 4.

Load the bond driver module from the command prompt.

$ modprobe bonding


Step 5.

Restart the network, or restart the computer.

$ service network restart # Or restart computer

When the machine boots up check the proc settings.

$ cat /proc/net/bonding/bond0 

Look at ifconfig -a and check that your bond0 interface is active. 


To verify whether the failover bonding works.. 
  •   Do an ifdown eth0 and check /proc/net/bonding/bond0 and check the “Current Active slave”. 
  •    Do a continuous ping to the bond0 ipaddress from a different machine and do a ifdown the active interface. The ping should not break.


 

No comments: