Top Menu

Monday, March 24, 2014

Configure Network Bonding on RHEL 6/CentOS 6

Network Bonding is the aggregation of multiple LAN/NIC cards (eth0 & eth1) into a single interface called bond interface. Network Bonding is a kernel feature and also known as NIC teaming. Bonding is generally required to provide high availability and load balancing services.
In this tutorial we will configure network bonding on CentOS 6.X and RHEL 6.X, in my case i have two NIC Cards (eth0 & eth1) & will create bond interface (bond0).
Step: 1 Create the bond file (ifcfg-bond0) and specify the IP address, netmask & gateway
# vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
IPADDR=192.168.1.19
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
TYPE=Bond
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
Step: 2 Edit the files of eth0 & eth1 and make sure you enter the master and slave entry, as shown below
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:5C:A8:8F
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
Step: 3 Create the Bond file (bonding.conf)
# vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bond0 mode=1 miimon=100
Different Modes used in bonding.conf file .
balance-rr or 0round-robin mode for fault tolerance and load balancing.
active-backup or 1Sets active-backup mode for fault tolerance.
balance-xor or 2Sets an XOR (exclusive-or) mode for fault tolerance and load balancing.
broadcast or 3Sets a broadcast mode for fault tolerance. All transmissions are sent on all slave interfaces.
802.3ad or 4Sets an IEEE 802.3ad dynamic link aggregation mode. Creates aggregation groups that share the same speed & duplex settings.
balance-tlb or 5Sets a Transmit Load Balancing (TLB) mode for fault tolerance & load balancing.
balance-alb or 6Sets an Active Load Balancing (ALB) mode for fault tolerance & load balancing.
Step: 4 Now Restart the network Service
# service network restart
Using below command to check the bond Interface
root@localhost ~]# ifconfig bond0
bond0 Link encap:Ethernet HWaddr 08:00:27:5C:A8:8F
inet addr:192.168.1.19 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe5c:a88f/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:6164 errors:0 dropped:0 overruns:0 frame:0
TX packets:1455 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:482336 (471.0 KiB) TX bytes:271221 (264.8 KiB
Step: 5 Verify the Status of bond interface.
[root@localhost ~]# 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: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:5c:a8:8f
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:7f:04:49
Slave queue ID: 0
Note: As per the output shown above, we are currently using active-backup bonding. To do the testing just disables one interface and check whether you are still accessing your machine using the bond IP.