configure NIC (Network interface card ) bonding on centos 7
NIC (Network Interface Card) bonding is also known as Network bonding. It is a combination of two or more NICs into a single bond interface.It provide a high availability and redundancy.
In this article we will learn how to configure netwok bonding on centos 7 server.
First,we need to enable the bondingl module. In CentOS/RHEL it is not enabled by default and you can check with lsmod
lsmod | grep bonding
If it is not enabled, enable it using the following command.
Now create bond interface file
Add the following into above file.
DEVICE=bond0 NAME=bond0 TYPE=Bond BONDING_MASTER=yes IPADDR=192.168.1.10 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 PREFIX=24 ONBOOT=yes BOOTPROTO=none BONDING_OPTS="mode=5 miimon=100"
Also Read -> How to Change TimeZone in Centos 7
Here is the followig bonding types
(balance-rr) ---> mode=0
Round-robin policy: Transmit packets in sequential order from the first available slave through the last. This mode provides load balancing and fault tolerance.
(active-backup) ---> mode=1
Active-backup policy: Only one slave in the bond is active. A different slave becomes active if the active slave fails.This mode provides fault tolerance.
XOR [exclusive OR] ---> mode=2
In this mode the, the MAC address of the slave NIC is matched up against the incoming request’s MAC and once this connection is established same NIC is used to transmit/receive for the destination MAC.This mode provides load balancing and fault tolerance.
Broadcast ---> mode=3
All transmissions are sent on all slaves.This mode provides fault tolerance.
Dynamic Link Aggregation ---> mode=4
This mode is known as a Dynamic Link Aggregation mode that has it created aggregation groups having same speed. It requires a switch that supports IEEE 802.3ad dynamic link. The slave selection for outgoing traffic is done based on a transmit hashing method.This mode requires an 802.3ad-compliant network switch.
Transmit Load Balancing (TLB) ---> mode=5
The outgoing traffic is distributed depending on the current load on each slave interface. Incoming traffic is received by the current slave. If the receiving slave fails, another slave takes over the MAC address of the failed slave.This mode does not require any special switch support.
Adaptive load balancing (ALB) ---> mode=6
This mode includes transmit load balancing (tlb) and receive load balancing (rlb) for IPv4 traffic and does not require any special switch support. Receive load balancing is achieved by ARP negotiation.
Now edit NIC interface files
Add below content to it.
TYPE=Ethernet BOOTPROTO=none DEVICE=enp0s3 ONBOOT=yes HWADDR="08:00:27:08:d7:55" MASTER=bond0 SLAVE=yes
Add following content to above file.
TYPE=Ethernet BOOTPROTO=none DEVICE=enp0s8 ONBOOT=yes HWADDR="08:00:27:e5:0e:b3" MASTER=bond0 SLAVE=yes
Then restart Network Service with the following command.
systemctl restart network
now you can check whether the bonding interface bond0 is up and running with the following command.
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: transmit load balancing Primary Slave: None Currently Active Slave: enp0s3 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: enp0s3 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:08:d7:55 Slave queue ID: 0 Slave Interface: enp0s8 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:e5:0e:b3 Slave queue ID: 0
Test fault tolerance
To test if the network bonding is working or not, bring one of the network interfaces down. To do that run as below.
you can verify by making a http or ssh request to the server via the bonding interface IP address, network should be working just fine and agian check with below command which interface is up or down.
That's it. now you have successfully configured NIC bonding on centos 7 server.
Also Read -> How to Install Varnish with Apache on Centos 7