linux系统中绑定两块网卡

linux系统中为什么要绑定两块网卡?

       一般来讲,生产环境必须提供7*24小时的网络传输服务。借助于网卡绑定技术,不仅可以提高网络传输的速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务。

       假设我们对两块网卡实施了绑定技术,这样在正常工作中它们会共同传输数据,使得网络传输的速度变得更快;而且即使有一块网卡突然出现了故障,另外一块网卡便会立即自动顶替上去,保证数据传输不会中断。

a:使得网络传输的速度变得更快。

b:即使有一块网卡突然出现了故障,另外一块网卡便会立即自动顶替上去,保证数据传输不会中断

1、首先在虚拟机中再添加一块网卡,保证有两块网卡,而且保证网卡模式相同(处于相同模式的网卡设备才可以进行网卡绑定,否则这两块网卡无法相互传送数据)

点击编辑虚拟机设置:

点击添加:

点击网络适配器,点击完成:

选仅主机模式,点击高级:

依次点击1、2、3:

效果:

2、开机虚拟机,查看网卡信息,查看是否支持绑定

[root@linuxprobe Desktop]# ifconfig ## 有两块网卡和两个MAC地址
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:e4:f7:b9  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno33554968: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:50:56:3e:97:cc  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 258  bytes 20876 (20.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 258  bytes 20876 (20.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@linuxprobe ~]# cat /boot/config-3.10.0-123.el7.x86_64 |grep -i bonding  ## 查看是否支持绑定
CONFIG_BONDING=m

3、使用vim编辑器来配置网卡设备的绑定参数。

      网卡绑定的理论类似于RAID磁盘阵列,需要对参与绑定的网卡设备逐个进行“初始设置”。需要注意的是,这些原本独立的网卡设备此时需要被设置成一块“从属”网卡,服务于“主”网卡,不应该再有自己的IP地址等信息。在进行初始设置之后,它们就可以支持网卡绑定。

编辑配置文件:

[root@linuxprobe Desktop]# cd /etc/sysconfig/network-scripts/  ## 进入配置文件所在目录
[root@linuxprobe network-scripts]# ls  ## 仅有一个网卡配置文件
ifcfg-eno16777728  ifdown-bnep  ifdown-ipv6  ifdown-ppp     ifdown-Team      ifup          ifup-eth   ifup-isdn   ifup-post    ifup-sit       ifup-tunnel       network-functions
ifcfg-lo           ifdown-eth   ifdown-isdn  ifdown-routes  ifdown-TeamPort  ifup-aliases  ifup-ippp  ifup-plip   ifup-ppp     ifup-Team      ifup-wireless     network-functions-ipv6
ifdown             ifdown-ippp  ifdown-post  ifdown-sit     ifdown-tunnel    ifup-bnep     ifup-ipv6  ifup-plusb  ifup-routes  ifup-TeamPort  init.ip
[root@linuxprobe network-scripts]# vim ifcfg-eno16777728  ## 使用vim创建从属网卡配置文件
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=eno16777728
MASTER=bond0
SLAVE=yes
[root@linuxprobe network-scripts]# vim ifcfg-eno33554968  ## 使用vim创建从属网卡配置文件
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=eno33554968
MASTER=bond0
SLAVE=yes
[root@linuxprobe network-scripts]# vim ifcfg-bond0  ## 使用vim创建主网卡配置文件
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond0
IPADDR=192.168.10.10
PREFIX=24
DNS=192.168.10.1
NM_CONTROLLED=no

配置文件中参数解释:

TYPE:网络类型

BOOTPROTO:获取网络的方式

ONBOOT:是否开机自动启动网卡

USERCTL:是否允许普通用户控制该网卡

DEVICE:网卡名称

MASTER:主网卡名称

SLAVE:是否从属于主网卡

IPADDR:指定IP地址

4、创建配置文件,让linux内核支持网卡绑定驱动

         常见的网卡绑定驱动有三种模式---mode0、mode1和mode6。

         mode0:(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。

         mode1:(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。

         mode6:(平衡负载模式):平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。

因此,mode6的优势非常明显:两块网卡同时工作,自动备援,无须交换机

使用vim编辑器创建一个用于网卡绑定的驱动文件,使得绑定后的bond0网卡设备能够支持绑定技术(bonding);模式mode6,且出现故障时自动切换的时间为100毫秒:

[root@linuxprobe ~]# cd /etc/modprobe.d/  ## 进入编辑驱动文件的目录
[root@linuxprobe modprobe.d]# ls
[root@linuxprobe modprobe.d]# vim bond.conf  ## 编辑驱动文件
alias bond0 bonding
option bond0 miimon=100 mode=6

5、重启网卡

[root@linuxprobe modprobe.d]# ifconfig  ## 查看重启网卡前的网卡信息
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:e4:f7:b9  txqueuelen 1000  (Ethernet)
        RX packets 10  bytes 1524 (1.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno33554968: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:50:56:3e:97:cc  txqueuelen 1000  (Ethernet)
        RX packets 10  bytes 1524 (1.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 898  bytes 72716 (71.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 898  bytes 72716 (71.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@linuxprobe modprobe.d]# systemctl restart network  ## 重启网卡,出现了如下图的报警信息

[root@linuxprobe modprobe.d]# ifconfig  ## 查看重置网卡后的网卡信息,主网卡bond0出现了IP信息,且主网卡和从属网卡的MAC地址变为一样的了,跟重启前eno16777728网卡的一致??印证报警信息?
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 192.168.10.10  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::20c:29ff:fee4:f7b9  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e4:f7:b9  txqueuelen 0  (Ethernet)
        RX packets 47  bytes 9084 (8.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 40  bytes 7034 (6.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno16777728: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:0c:29:e4:f7:b9  txqueuelen 1000  (Ethernet)
        RX packets 22  bytes 4676 (4.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22  bytes 3412 (3.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno33554968: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:0c:29:e4:f7:b9  txqueuelen 1000  (Ethernet)
        RX packets 25  bytes 4408 (4.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18  bytes 3622 (3.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 906  bytes 73556 (71.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 906  bytes 73556 (71.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

6、本地主机测试网络连通性

[root@linuxprobe modprobe.d]# ping -c 3 192.168.10.10  ## 本地主机测试网络连通性,没有问题
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.088 ms
64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.048 ms
64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=0.046 ms

--- 192.168.10.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.046/0.060/0.088/0.021 ms

7、测试自动备援功能,在本地主机检测连通性时,在虚拟机设置中移出一块网卡,观察是否有数据包丢失

 

 并没有数据丢失,说明没有起到临时备援的功能

原文地址:https://www.cnblogs.com/liujiaxin2018/p/13912178.html