RHEL7.X双网卡绑定
为了提高网络容错或吞吐量,一般服务器都会采取多网卡绑定的策略,在RHEL6中使用的是Bonding
,而RHEL7提供了一项新的实现技术Teaming
,具体原理和对比列表大家可以参考扩展阅读中的RedHat官方博客。配置Teaming有两种方式,第一种是使用nmclii命令,第二种是直接修改配置文件。
2.原理
这里介绍两种最常见的双网卡绑定模式:
(1) roundrobin - 轮询模式
所有链路处于负载均衡状态,这种模式的特点增加了带宽,同时支持容错能力。
(2) activebackup - 主备模式
一个网卡处于活动状态,另一个处于备份状态,所有流量都在主链路上处理,当活动网卡down掉时,启用备份网卡
3.配置
在RHEL7和Centos7中使用nmtui命令来配置网络,系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络的守护进程,能够让网络设备保持连接状态。可以使用 nmcli 命令来管理 Network Manager 服务。
[root@localhost ~]# nmtui
查看网卡连接信息
[root@localhost ~]# nmcli connection show
NAME UUID TYPE DEVICE
virbr0 b286b35c-cb10-4d7c-980c-af2778929b66 bridge virbr0
查看物理网卡信息
[root@localhost ~]# nmcli dev
设备 类型 状态 CONNECTION
eno16777736 ethernet 已断开 --
eno33554960 ethernet 已断开 --
lo loopback 未管理 --
上面信息可以查看到连接只有virbr0,物理网卡有两个未连接,首先删除无用连接
[root@localhost ~]# nmcli connection delete b91bbba9-5019-48a5-a873-5e1b13df2a7d
建立两个连接
[root@localhost ~]# nmcli connection add type ethernet con-name eno16777736 ifname eno16777736
Connection 'eno16777736' (86cc9bf6-5492-4c41-bfd8-ab89cde271e8) successfully added.
[root@localhost ~]# nmcli connection add type ethernet con-name eno33554960 ifname eno33554960
Connection 'eno33554960' (48db52c1-0449-41c8-9a2b-da3951ea4076) successfully added.
再次查看连接信息
[root@localhost ~]# nmcli connection show
名称 UUID 类型 设备
eno33554960 48db52c1-0449-41c8-9a2b-da3951ea4076 802-3-ethernet eno33554960
eno16777736 86cc9bf6-5492-4c41-bfd8-ab89cde271e8 802-3-ethernet eno16777736
网络连接和配置文件都成功生成,接下来通过eno33554960和eno16777736使用teaming模式进行双网卡绑定
3.1 roundrobin - 轮询模式
roundrobin模式也称为轮询模式,它 基于每一个包 ,当某一台服务器的两张网卡设置为roundrobin模式teaming,此时服务器发出的数据包,就会在两个物理
网卡上进行轮询,即第一个数据包走一张网卡,第二个数据包走第二张网卡,依次轮询。
注意:
(1)roundrobin具有容错性,当一张网卡down掉,数据包依然发送成功。
(2)在使用roundrobin模式必须要在交换机上做以太通道,不然会出现网络无法连通。
使用nmcli命令操作,创建team接口team0,同时设置teaming模式为roundrobin
[root@localhost ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name": "roundrobin"}}'
Connection 'team0' (283eb25f-7212-4cc2-a5b5-85d6aa5f2152) successfully added.
给team0设置IP地址,IP模式为手动
[root@localhost ~]# nmcli connection mod team0 ipv4.addresses 192.168.1.20/24 ipv4.gateway 192.168.1.1 ipv4.method manual connectio.autoconnect yes
将两张物理网卡加入到team中
[root@localhost ~]# nmcli connection add type team-slave con-name team0-port1 ifname eno33554960 master team0
Connection 'team0-port1' (96f914fa-f43a-4bc9-8458-10e3923c62f9) successfully added.
[root@localhost ~]# nmcli connection add type team-slave con-name team0-port2 ifname eno16777736 master team0
Connection 'team0-port2' (b1eb81ce-d190-44bb-83a5-deba333fa7b2) successfully added.
重新载入连接配置
[root@192 jun]# nmcli connection reload
启动team0
[root@192 jun]# nmcli connection up team0
成功激活(主服务器等待从服务器)连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/8)
查看状态
[root@192 jun]# teamdctl team0 state
setup:
runner: activebackup
runner:
active port:
[root@192 jun]# nmcli connection show
名称 UUID 类型 设备
ens33 f1ce3db1-bea6-44a9-94be-1bc13c1a7a8b 802-3-ethernet ens33
ens38 a2dbd32a-af3f-4c69-82a2-160ae3af95f8 802-3-ethernet ens38
team0 5b68aca4-cd1f-4204-889a-2f7d7467afbc team team0
virbr0 7fbf45c9-eee4-4742-8188-c4c51603f4fa bridge virbr0
team0-port1 027eef4c-52c4-4ce9-a0f0-25acd901beff 802-3-ethernet --
team0-port2 f05ff513-b7de-4729-8b2c-7b886aa22dc6 802-3-ethernet --
[root@192 jun]# nmcli dev
发现发现team0-port1 team0-port2没有添加成功物理网卡
删除掉没有添加成功team0-port1 team0-port2两张网卡
[root@192 jun]# nmcli connection delete team0-port1
成功删除连接 'team0-port1'(7df353c3-b279-4641-9fb9-b9f6276077d1)。
[root@192 jun]# nmcli connection delete team0-port2
成功删除连接 'team0-port2'(0cff2fae-5aa0-4158-8bf4-660ab1445399)。
删除两张物理网卡ens33,ens38
[root@192 jun]# nmcli connection delete ens33 ens38
成功删除连接 'ens38'(a2dbd32a-af3f-4c69-82a2-160ae3af95f8)。
成功删除连接 'ens33'(f1ce3db1-bea6-44a9-94be-1bc13c1a7a8b)。
再次添加team0-port1 team0-port2两张网卡
[root@192 jun]# nmcli connection add type team-slave con-name team0-port1 ifname ens33 master team0
连接“team0-port1”(964b7117-a6e6-4d52-a9bf-d12378aa7eae) 已成功添加。
[root@192 jun]# nmcli connection add type team-slave con-name team0-port2 ifname ens38 master team0
连接“team0-port2”(12794ede-75c1-4737-8a46-69738943f4b2) 已成功添加。
再次查看状态
[root@192 jun]# teamdctl team0 state
setup:
runner: activebackup
ports:
ens33
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens38
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: ens33
3.2 activebackup-主备模式
一个网卡处于活动状态,另一个处于备份状态,所有流量都在主链路上处理,当活动网卡down掉时,启用备份网卡。
[root@localhost ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name": "activebackup"}}'
其余命令一样。
总结:
知道两张物理网卡连接名则:
nmcli connection add type team ifname team0 con-name team0 config '{"runner":{"name":"activebackup"}}'
nmcli connection mod team0 ipv4.addresses 192.168.1.20/24 ipv4.gateway 192.168.1.1
nmcli connection modify team0 ipv4.method manual
nmcli connection add type team-slave con-name team0-port1 ifname ens33 master team0
nmcli connection add type team-slave con-name team0-port2 ifname ens38 master team0
systemctl restart network
teamdctl team0 state