网络组Network Teaming
网络组是将多块网卡逻辑地连接到一起从而允许故障转移或者提高吞吐率的方法。提高服务器网络可用性的一个方式是使用多个网卡。Linux 绑定驱动程序提供了一种将多个网卡聚合到一个逻辑的绑定接口的方法。这是个新的实现绑定的方法,并不影响linux内核中旧绑定驱动。
网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
网络组不同于旧版中bonding技术,提供更好的性能和扩展性
网络组由内核驱动和teamd守护进程实现.
多种方式runner:
broadcast:传输来自所有端口的每个包
roundrobin:以轮询方式传输来自每个端口的包
activebackup:故障转移,监视链接更改并选择活动端口进行数据传输
loadbalance:监控流量并使用哈希函数以尝试在为包传输选择端口时达到完美均衡
lacp(implements the 802.3ad Link Aggregation Control Protocol)
实施802.3链路聚合控制协议
启动网络组接口不会自动启动网络组中的port接口
启动网络组接口中的port接口始终会启动合作接口
禁用网络组接口会自动禁用网络组中的port接口
没有port接口的网络组接口可以启动静态IP连接
启用DHCP连接时,没有port接口的网络组会等待port接口的加入
创建网络组接口
nmcli命令可用于创建和管理组和端口接口。以下4个步骤用于创建和激活网络组接口:
1、创建组接口
2、确定组接口的IPv4和/或IPv6属性
3、分配端口接口
4、启动/关闭组接口和端口接口
创建组接口命令格式:组接口默认使用dhcp获取IP参数
nmcli con add type team con-name CNAME ifname INAME [configJSON]
CNAME:连接名,INAME:接口名
JSON指定runner方式
格式:'{"runner": {"name": "METHOD"}}'
METHOD可以是broadcast,roundrobin,activebackup,loadbalance, lacp
分配端口接口命令格式:
nmcli con add type team-slave con-name CNAME ifname INAME master TEAM
CNAME:连接名
INAME:网络接口名
TEAM:网络组接口名
连接名若不指定,默认为team-slave-IFACE
启动/关闭组接口和端口接口
nmcli dev dis INAME
nmcli con up CNAME
INAME设备名 CNAME网络组接口名或port接口
查看网络设备
创建网络组
-
创建网络组test:
nmcli connection add con-name test type team ifname test config '{"runner":{"name":"activebackup"}}' ip4 10.0.0.10/8 gw4 10.0.0.1
-
添加DNS:
nmcli connection modify test ipv4.dns 8.8.8.8
-
加入组成员:
nmcli connection add con-name test-eth0 type team-slave ifname ens34 master test
-
启动:
nmcli connection up test
-
查看状态:
teamdctl test stat
6.创建网络组test,会在/etc/sysconfig/network-scripts/目录下生成ifcfg-test文件
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-test
TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=10.0.0.10
PREFIX=8
GATEWAY=10.0.0.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=test
UUID=5c8971bf-830b-4143-a79e-e56cf9a79fd1
DEVICE=test
ONBOOT=yes
DEVICETYPE=Team #标示这个是一个team组接口
DNS1=8.8.8.8
组中端口配置文件:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-test-eth0
NAME=test-eth0
UUID=4d268ea4-ef72-48b4-a513-fcc2d55215eb
DEVICE=ens34
ONBOOT=yes
TEAM_MASTER=test #定义端口所属的组设备
DEVICETYPE=TeamPort #标示这是一个组端口接口