Overview
Bonding is the ability to take two or more network interfaces and present them as one to a client. Depending on the method you use, the bond can create different types of connections. You can, for example, create an aggregate channel to double or even triple your total bandwidth; create a fault tolerant connections to improve server reliability; or load balance connections to handle more requests and to improve response times.
Some of the more advanced bonding methods, like channel aggregation, require switches that support IEEE 802.3ad dynamic link aggregation policy. However, simple load balancing and fault tolerance can be done without.
Server Configuration
To make it easier for you to follow along, the following configuration will be used in this tutorial.
Hostname | Network Interface | MAC Address | IP Address | Netmask | Gateway |
---|---|---|---|---|---|
SERVER01 | ETH0 | 00:1F:29:E6:EB:2A | 172.30.0.34 | 255.255.255.0 | 172.30.0.1 |
ETH1 | 00:26:55:35:24:FE |
It’s important that you record the MAC address (hardware address) of every interface. Although not required, it is best practice to assign a MAC address to each bond slave. Without doing so, you cannot confidently unplug an interface and know which slave will be offline, potentially causing a service outage.
Prepare the Interfaces
Before we configure the type of bond we’ll be using, we need to prepare the interfaces first. This envolves creating the bond0 configuration file, and then modifying the existing configurations files for each of your physical network interfaces. In this lab, there are only two.
The steps for configuring the different bond types can be found after this section. Choose one and then follow the instructions.
Create the Bonded Interface
This is the interface your clients will be connecting to.
- Create the configuration file for the first bond, bond0.
touch /etc/sysconfig/network-scripts/ifcfg-bond0
- Open the file in a text editor.
nano /etc/sysconfig/network-scripts/ifcfg-bond0
- Add the following lines to the file.
DEVICE=bond0 IPADDR=172.30.0.34 NETMASK=255.255.255.0 GATEWAY=172.30.0.1 ONBOOT=yes BOOTPROTO=none USERCTL=no
- Save your changes and exit the text editor.
Configure Slave 1
- Open the configuration file for the first interface, eth0, into a text editor.
nano /etc/sysconfig/network-scripts/ifcfg-eth0
- Modify the configuration file to look like the following, replacing the highlighted parts to match your environment.
DEVICE=eth0 ONBOOT=yes BOOTPROTO=none HWADDR=00:1F:29:E6:EB:2A USERCTL=no MASTER=bond0 SLAVE=yes
Configure Slave 2
- Open the configuration file for the second interface, eth1, into a text editor.
nano /etc/sysconfig/network-scripts/ifcfg-eth1
- Modify the configuration file to look like the following, replacing the highlighted parts to match your environment.
DEVICE=eth1 ONBOOT=yes BOOTPROTO=none HWADDR=00:26:55:35:24:FE USERCTL=no MASTER=bond0 SLAVE=yes
Configure a Fault Tolerant Bond
Also called an Active-Passive connection, this bond type will protect you from a failed physical network interface and, depending on your Ethernet configuration, a failure on your physical network.
- If it doesn’t already exist, create a new file called bonding.conf in /etc/modprobe.d
touch /etc/modprobe.d/bonding.conf
- Open the file in a text editor.
nano /etc/modprobe.d/bonding.conf
- Add the following lines to the file.
alias bond0 bonding options bond0 miimon=80 mode=1
TABLE2 – Bonding.conf options bond0 Name of the bonded interface being created. miimon Defines how often, in milli-seconds, the interface is checked to see if it is still active. mode Type of bond being created. - Save your changes and exit the text editor.
Create Round-Robin Bond
Robin-Robin load balancing splits the connections between the two slaves evenly. The incoming connections alternate between the active slaves, taking the load off of each other, to improve request time.
- If it doesn’t already exist, create a new file called bonding.conf in /etc/modprobe.d
touch /etc/modprobe.d/bonding.conf
- Open the file in a text editor.
nano /etc/modprobe.d/bonding.conf
- Add the following lines to the file.
alias bond0 bonding options bond0 miimon=80 mode=0
TABLE3 – bonding.conf options bond0 Name of the bonded interface being created. miimon Defines how often, in milli-seconds, the interface is checked to see if it is still active. mode Type of bond being created. - Save your changes and exit the text editor.
Create Aggregate Bond
Network aggregation combines the target network interfaces to create one large network interface. This will multiple the available bandwidth of the server’s network connection by the of NICs installed.
For this bond to work, you need your interfaces to be connected to a switch that supports IEEE 802.3ad dynamic link aggregation policy. Also, the ports have the feature enabled.
- If it doesn’t already exist, create a new file called bonding.conf in /etc/modprobe.d
touch /etc/modprobe.d/bonding.conf
- Open the file in a text editor.
nano /etc/modprobe.d/bonding.conf
- Add the following lines to the file.
alias bond0 bonding options bond0 miimon=80 mode=4
TABLE4 – bonding.conf options bond0 Name of the bonded interface being created. miimon Defines how often, in milli-seconds, the interface is checked to see if it is still active. mode Type of bond being created. - Save your changes and exit the text editor.
Restart the Network Services
Our bond is created. It’s time to restart the network services to apply our configuration.
- Restart the sevices
services network restart