一、Bond网络接口
(一)概述
Bonding就是把多个物理网络接口绑定到一起,使它们就像一个网络接口那样运行。通过Bonding技术,可以实现网口冗余,负载均衡,从而达到高可用高可靠的目的。
那在传输数据包的时候,如何从已经绑定的接口中选择数据包传输的接口,是所有的接口都传输数据包(如mode=3),还是说从中选择一个或多个,怎么选择。
目前Bonding有7种mode:
0. mode=0 ,即:(balance-rr)Round-robin policy(平衡轮循环策略)
特点:传输数据包顺序是依次传输(第一个包走第一个接口,第二个包走第二个接口……),;此模式下,同一连接/会话的数据包可能使用不同的接口进行传输(走不同的路由路径),到达目的地的数据可能是无序的, 而无序到达的数据包需要重新要求被发送,进而导致网络的吞吐量下降。
此模式提供负载平衡和容错能力
1. mode=1,即: (active-backup)Active-backup policy(主-备份策略)
特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N
此模式只提供了容错能力
2. mode=2,即:(balance-xor)XOR policy(平衡策略)
特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址)% slave数量。其他的传输策略可以通过xmit_hash_policy选项指定。在此策略下,同一会话的数据包会使用同一个接口传输。
此模式提供负载平衡和容错能力
3. mode=3,即:broadcast(广播策略)
特点:在每个slave接口上传输每个数据包,
此模式提供了容错能力
(在这里只列举前四个,完整请参考文章最后博客链接)
(二)实验:Bond设置(以mode=1,即 (active-backup)Active-backup policy主-备份策略为例)
1、命令行方式设置
本次实验在虚拟机上进行,首先给虚拟机设置两块网卡(NIC)
真机输入virt-manager 打开窗口 -->选中要添加网卡的虚拟机desktop选上方的open -->在新窗口中选左下角的Add Hardware --> Network -->Device model 选virtio。改完以后左侧栏就会有网卡显示
运行虚拟机查看,可以看到有eth0,eth1两块网卡
nmcli connection add con-name bond0 ifname bond0 type bond mode active-backup ip4 172.25.254.135/24 ####添加bond0网络接口,为active-backup模式,ip为172.25.254.135
可以查看到多了一个bond0的接口。此时虚拟机仍然不能与其他用户通信,因为bond0只是一个虚拟的接口,还没有绑定真实的网卡。
nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0 ###插入一个网卡eth0
此时虚拟机可以与局域网内的用户通信
cat /proc/net/bonding/bond0 #####查看bond0状态
可以看到当前工作的网卡为eth0
同样的方式再插入一个网卡eth1并查看状态
此时处于工作状态的仍然是eth0
接下来我们把eth0网卡宕掉,看会有什么变化
ifconfig eth0 down
可以看到eth1立即顶替eth0工作,而eth0状态变为down,体现出ifconfig eth0 down的工作方式,可以看出容错能力增强,但资源利用率较低,只有一个网卡处于工作状态
激活eth0网卡,它就会等待着,只要eth1宕掉,立马替换上去当主设备开始工作
2、配置文件方式设置
实验之前先清空之前所有网卡的网络配置
可以通过图形方式nm-connection-editor
或命令方式
nmcli connection delete +网络配置名称(可以按Tab键两次查看都有哪些网络配置)
进入/etc/sysconfig/network-scripts/下看有没有网络配置文件
或者通过ifconfig命令查看一下两块网卡有没有配置ip,两个都行
可以看到两块网卡eth0,eth1都没有ip,bond0也删除了
在该目录下编辑bond0配置文件
vim ifcfg-bond0 -->输入
DEVICE=bond0
TYPE=Bond
BONDING_OPTS=mode=active-backup
BONDING_MASTER=yes
IPADDR=172.25.254.135
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
然后编辑eth0网卡的配置文件并重启网络查看
vim ifcfg-eth0 -->输入
DEVICE=eth0
SLAVE=yes
MASTER=bond0
ONBOOT=yes
BOOTPROTO=none
注意:这里有的时候systemctl restart network完了查看发现没有生效,可能是太慢,这个时候systemctl restart NetworkManager再查看就好。
同样的方式插入eth1网卡并重启查看
这里直接复制eth0的配置文件然后将文件里的DEVICE=eth0改为DEVICE=eth1即可
可以看到配置生效,可以ping通其他用户
二、Team网络接口
(一)概述
1、Team和bond功能类似
2、Team不需要手动加载相应内核模块
3、Team有更强的拓展性
4、支持8块网卡,而bond只支持2块网卡
(二)实验
1、命令方式设置
实验之前先清楚掉之前的网络配置,与之前一样。
nmcli connection add con-name team0 ifname team0 type team config ‘{“runner”:{“name”:“activebackup”}}’ ip4 172.25.254.135/24 ###设置一个Team0网络接口,模式为activebackup,ip为172.25.254.135
teamdctl team0 stat ####查看Team0状态
nmcli connection add con-name eth0 ifname eth0 type team-slave master team0 ####插入eth0网卡
nmcli connection add con-name eth1 ifname eth1 type team-slave master team0 ####插入eth1网卡
可以看到eth0为活跃状态,是工作的主设备
可以看到将eth0宕掉再恢复后eth1 变为活跃状态,成为主设备
实验完毕后删除网络配置(这是命令方式,图形方式也可以nm-connection-editor)
2、配置文件方式设置
仍然是先删除网卡的网络配置
进入/etc/sysconfig/network-scripts/目录下
插入eth0网卡
插入eth1网卡
删除Team网络接口配置
三、网桥设置
(一)命令方式设置
本次实验在虚拟机上进行(实际上是真机上设置的)
brctl show ####查看网桥信息
brctl addbr br0 ####添加网桥br0
ifconfig br0 172.25.254.135/24 ####给网桥设置ip
此时仍然不能与其他用户通信
brctl addif br0 eth0 ####插入eth0网卡
可以看到插入网卡后可以与其他用户通信
删除br0网桥
brctl delif br0 eth0 ####删除网卡
ifconfig br0 down ####宕掉网桥
brctl delbr br0 ####删除网桥
(二)配置文件设置
主要有两个文件ifcfg-br0和ifcfg-enp1s0,把其他的网卡的网络配置、wifi信息也删除
[kiosk@foundation97 network-scripts]$ cat ifcfg-br0
TYPE=Bridge
DEVICE=br0
IPADDR=172.25.254.35
ONBOOT=yes
BOOTPROTO=none
PREFIX=24
[kiosk@foundation97 network-scripts]$ cat ifcfg-enp1s0
DEVICE=enp1s0
ONBOOT=yes
BOOTPROTO=none
BRIDGE=br0
这两个文件编辑完毕重启就好
参考博客:
https://blog.csdn.net/windeal3203/article/details/49586035
https://www.cnblogs.com/wzzkaifa/p/6806843.html