一、链路聚合
如果只有一张网卡连到交换机,容易出现单点故障,并且,带宽有限,所以需要链路聚合
所谓链路聚合,就是把多张网卡绑定在一起,逻辑上看来就是一张网卡,从而实现故障转移和更高的吞吐量。
实现:
-
内核程序,处理网络进来的包
-
数据包到底从哪个网卡进来,是由网络交换机决定的,比如思科的chanel
用户态程序:
centos6:bond
centos7:team
1、常用链路聚合方式
链路聚合分为动态和静态两种,静态的通过手工配置,动态的通过协议协商(LACP)
-
静态链路聚合,不需要控制协议,通过手工配置,当组成员端口启动后,立即生效,成为活动的成员端口。
-
动态链路聚合,需要使用链路聚合控制协议(LACP),组成员是否成为活动端口,取决于LACP的协商结果。
注意:
-
主机和交换机配置需要一致,如果选用静态方式,主机和交换机都需要配置成静态;如果选用动态方式,主机和交换机都需要配置成动态。
-
建议使用静态方式
2、工作模式
2.1、activebackup
主从,数据包从主走,只有主down了,才会走从
TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"
2.2、roundrobin
轮询,第一个包从第一个物理网卡出去,第二个包从第二个物理网卡出去,第三个又从第一个网卡出去
2.3、loadbalance
监控流量,并使用hash以尝试在选择传输端口的时候,达到完美均衡
2.4、lacp
使用802.3ad链路聚合协议。
特点:
-
只要一个物理网卡可用,整个逻辑网卡都可用
-
只有所有物理网卡都不可用了,逻辑网卡才失效
-
不能给物理网卡配IP,只能给逻辑网口(team口)设置IP
3、配置链路聚合
3.1、创建team口
#创建一个team口叫team1,并为它创建链接文件也叫team1,并且指定使用loadbalance方式
nmcli connection add type team con-name t1 ifname 1 \
config '{"runner":{"name":"loadbalance"}}'
3.2、把物理网卡加入到team口
前提:所有物理网卡必须是up状态,ip addr show查看
#把eth0和eth1两个网卡加入到team1,并创建新的配置文件,分别是team1-slave1和team1-slave2
nmcli connection add type team-slave con-name s1 \
ifname eth0 master t1
nmcli connection add type team-slave con-name s2 \
ifname eth1 master t1
3.3、team配置文件
DEVICE=t1
TEAM_CONFIG="{\"runner\":{\"name\":\"roundrobin\"}}"
DEVICETYPE=Team
BOOTPROTO=dhcp
NAME=t1
ONBOOT=yes
3.4、网卡配置文件
NAME=s1
DEVICE=eno16777736
ONBOOT=yes
TEAM_MASTER=t1
DEVICETYPE=TeamPort
注意:
-
不要置IP地址
3.5、验证
#查看t1这个team的状态
teamdctl t1 state
注意:
-
小心创建team的链接文件的命令
-
物理网卡必须处于up状态
-
物理网卡不能有IP
-
物理网卡的链接文件,不是team-slave的链接文件,所以请把不需要的链接文件删除。
二、桥接
用软件的方式实现一个网桥,常用于虚拟化和云环境。
1、创建网桥
#创建一个网桥
nmcli connection add type bridge con-name br0 ifname br0
#查看配置文件
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=172.25.0.11
ONBOOT=yes
2、添加接口
#将网卡eno16777736接到这个桥
nmcli connection add type bridge-slave con-name br0-port1 \
ifname eno16777736 master br0
#查看配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=static
ONBOOT=yes
BRIDGE=br0
3、brctl工具
#查看桥接信息
brctl show
#新建一个桥br1
brctl addbr br1
#将eth0口,添加到br1桥
brctl addif br1 eth0
注意:
-
使用brctl命令创建的桥及添加的端口,只是当前生效,重启失效。
-
如果想长期有效,需要添加配置文件