使用Ubuntu 13进行网络绑定bonding

时间:2020-01-09 10:42:45  来源:igfitidea点击:

说明

绑定网络接口允许我们创建容错功能,通过负载平衡提高网络可用性或者增加服务器的网络带宽,从而增强网络服务。本教程将指导我们为Ubuntu 13.04或者更高版本配置bonding绑定。

准备工作

  • 两个或者多个网络接口卡。
  • 每个网络接口卡的MAC地址(硬件地址)。可以在物理卡上或者虚拟服务器的网络硬件设置中找到该文件。
  • 所有接口都连接到同一网络。
  • 具有802.3ad功能的开关(仅用于更高级的绑定)。

服务器配置

为了使我们更容易理解,我们的服务器将具有以下配置。

网络接口接口名称MAC地址
网卡#1eth000:0c:29:58:65:cc
网卡#2eth100:0c:29:58:65:d6

创建网络绑定后,将为服务器分配以下网络设置:

IP地址子网网关DNS服务器
172.30.0.77255.255.255.0172.30.0.1172.30.0.5

启用NIC绑定

  • 开箱即用,Ubuntu将无法绑定网络接口。我们需要通过安装ifenslave软件包来安装bonding内核模块。
sudo apt-get install ifenslave
  • 要启用新安装的模块,请停止网络服务。
sudo stop networking
  • 现在启用绑定内核模块。
sudo modprobe bonding

创建网络接口

  • 在文本编辑器(如VI)中打开网络接口配置文件。
sudo vi /etc/network/interfaces
  • 要创建使用接口1(eth0)和接口2(eth1)的容错绑定(我们称为bond0),请添加以下行。
# Network bond for eth0 and eth1
auto bond0
iface bond0 inet static
address 172.30.0.77
netmask 255.255.255.0
gateway 172.30.0.1
bond-mode 1
bond-miimon 100
slaves eth0 eth1
  • 添加以下行以将接口1(eth0)配置为bond0的从属。为接口分配希望使用的NIC的MAC地址非常重要。没有,我们可能不知道接口eth0分配给哪个NIC,这在进行维护时至关重要。
# eth0 - the first network interface
auto eth0
iface eth0 inet manual
hwaddress ether 00:0c:29:58:65:cc
bond-master bond0
  • 添加以下行以将接口2(eth1)配置为bond0的从属。就像我们对eth0所做的一样,请记住添加MAC地址。
# eth1 - the second network interface
auto eth1
iface eth1 inet manual
hwaddress ether 00:0c:29:58:65:d6
bond-master bond0
  • 现在,配置文件应类似于以下示例。切记修改突出显示的值以匹配环境。
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The first network bond
auto bond0
iface bond0 inet static
address 172.30.0.77
netmask 255.255.255.0
gateway 172.30.0.1
bond-mode 1
bond-miimon 100
slaves eth0 eth1

#eth0 - the first network interface
auto eth0
iface eth0 inet manual
hwaddress ether 00:0c:29:58:65:cc
bond-master bond0

#eth1 - the second network interface
auto eth1
iface eth1 inet manual
hwaddress ether 00:0c:29:58:65:d6
bond-master bond0
  • 保存更改并退出文本编辑器。
  • 使网络服务重新联机。
sudo start networking

验证连接

现在已经创建了绑定,我们需要对其进行测试以确保其正常运行。

  • 运行以下命令以检查绑定。
cat /proc/network/bonding/bond0
  • 如果成功,则输出应类似于以下内容:
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:58:65:d6
Slave queue ID: 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:58:65:cc
Slave queue ID: 0
  • 现在ping另一个网络节点或者本地网关以测试连接性。我将使用前面提到的网关IP作为示例。
ping 172.30.0.1
  • 如果成功,我们应该看到以下输出:
PING 172.30.0.1 (172.30.0.1) 56(84) bytes of data.
64 bytes from 172.30.0.1: icmp_req=1 ttl=64 time=0.340 ms
64 bytes from 172.30.0.1: icmp_req=2 ttl=64 time=0.194 ms
64 bytes from 172.30.0.1: icmp_req=3 ttl=64 time=0.153 ms
64 bytes from 172.30.0.1: icmp_req=4 ttl=64 time=0.343 ms
64 bytes from 172.30.0.1: icmp_req=5 ttl=64 time=0.488 ms

--- 172.30.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.153/0.303/0.488/0.121 ms

绑定模式

在我们的示例中,我们使用了绑定模式1,该模式用于基本的容错功能。以下是可以使用的其他选项。有关选项的完整列表,请查看Linux以太网绑定驱动程序HOWTO文档。

价值描述
平衡rr或者0
主动备份或者1
平衡异或者或者2