一、bond
1 链路聚合
链路聚合通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效的提高链路的可靠性
2 linux 以太网绑定模式
轮转策略(balance-rr):按照顺序轮流使用每个接口来发送和接收数据包,提高了负载均衡的能力,但是需要交换机的支持,因为该模式所有端口的mac地址相同,交换机不能识别多个一个Mac地址对应多个端口,所以需要做链路聚合 ----Ethernet Channel
mode=0
主备策略(active-backup):只使用其中一个网卡,当网卡损坏时激活另外的一个网卡
mode=1
平衡策略(balance-xor): 基于所选择的传送hash策略
mode=2
广播策略:所有卡上都接收和发送报文,提高了容错性
mode=3
802.3ad策略(802.3ad): LACP 链路聚合模式,交换机得开启链路聚合,将两张网卡当做一张来使用,提高链路性能,需要交换机支持802.3ad 动态链路聚合和服务器硬件支持ethtool
mode=4
自适应传输负载均衡(balance-tlb):不需要配置交换机。在每个网卡会根据上根据当前的负载情况来分配流量。如果一个网卡出现故障,那么另外一个网卡会接管故障网卡
mode=5
自适应负载均衡(balance-alb): 包括balance-tlb,不需要另外配置交换机,接受负载均衡通过ARP协商实现
当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来,当ARP应答从对端到达 时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。这个问题可以通过给所有的对端发送更新 (ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。当新的slave加入到bond中时,或者某个未激活的slave重新 激活时,接收流量也要重新分布。接收的负载被顺序地分布(round robin)在bond中最高速的slave上
当某个链路被重新接上,或者一个新的slave加入到bond中,接收流量在所有当前激活的slave中全部重新分配,通过使用指定的MAC地址给每个 client发起ARP应答。下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值,从而保证发往对端的ARP应答 不会被switch(交换机)阻截。
mode=6
3 轮循模式bond的添加
实验之前删除原有的连接:
添加bond:
nmcli connection add con-name bond0 ifname bond0 type bond ip4 172.25.254.116/24
添加两块网卡:
nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0
nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0
查看添加的设备:
cat /proc/net/bonding/bond0
4 主备模式bond的添加
实验之前删除原有的连接
添加bond:
nmcli connection add con-name bond0 ifname bond0 type bond mode active-backup ip4 172.25.254.116/24
添加两块网卡:
nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0
nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0
查看添加的设备:
cat /proc/net/bonding/bond0
此时,当使用ifcongfig eth0 down
关闭eth0网卡时,eth1会立即生效:
5 bond的删除
nmcli connection delete bond0
nmcli connection delete eth0
nmcli connection delete eth1
二、Team
bond最多支持的网卡数量为2块,team最多支持的网卡数量为8块
1 主备模式team的设定
实验前删除原有连接
team的设定:
nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"aactivebackup"}}' ip4 172.25.254.116/24
查看team的工作状态:
teamdctl team0 stat
添加网卡:
nmcli connection add con-name eth0 ifname eth0 type team-slave master team0
nmcli connection add con-name eth1 ifname eth1 type team-slave master team0
添加后查看team工作状态:
测试:
2 team的删除
nmcli connection delete team0
nmcli connection delete eth0
nmcli connection delete eth1
三、桥接
实验环境的准备:
cd /etc/sysconfig/network-scripts/
mkdir /backup
mv ifcfg-br0 ifcfg-enp4s0f1 /backup #由于桥接需要修改两个文件,所以提前备份 删除后只剩ifcfg-lo
nm-connection-editor #调用图形管理工具,除了virbr0 virbr1的接口,其他的都删除,自己添加一个网卡接口,命名为westos
1 桥接的原理
桥接就是把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。
交换机就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。于是,与交换机相连的若干主机就能够通过交换机的报文转发而互相通信
2 桥接的设定
在真机网卡设备上面配置:
cd /etc/sysconfig/network-scripts/
vim ifcfg-westos
DEVICE=enp4s0f1
BOOTPROTO=none
ONBOOT=yes
BRIDGE=br0
vim ifcfg-br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.254.117
PREFIX=24
TYPE=Bridge
systemctl restart network
brctl show #查看设置的桥接接口信息
3 还原实验环境
cd /etc/sysconfig/network-scripts/
rm -rf ifcfg-westos ifcfg-br0 #删除自己修改的文件
mv /backup/* . #将之前备份的文件移动到本地
systemctl restart network #重启网络环境
四、桥接的相关命令
更改配置文件设置的网桥是永久的,也可以设置临时的网桥(设备重启后还原):
1 临时添加网桥
brctl addbr br0
2 为网桥添加ip
ifconfig br0 172.25.254.216/24
3 将网桥连接到网卡上
brctl addif br0 eth0
4 桥接的删除
brctl delif br0 eth0 #将网桥br0从网卡eth0上抜下
ifconfig br0 down #关闭网桥
brctl delbr br0 #删除网桥