侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Centos7/RHEL7双网卡绑定的方法

linux  /  管理员 发布于 7年前   337

1. 简要

双网卡绑定技术在centos7中使用了teaming技术,而在rhel6/centos7中使用的是bonding技术,在centos7中双网卡绑定既能使用teaming也可以使用bonding,这里推荐使用teaming技术,方便与查看和监控。

2. 原理

这里介绍两种最常见的双网卡绑定模式:

        (1) roundrobin - 轮询模式

            所有链路处于负载均衡状态,这种模式的特点增加了带宽,同时支持容错能力。

        (2) activebackup - 主备模式

            一个网卡处于活动状态,另一个处于备份状态,所有流量都在主链路上处理,当活动网卡down掉时,启用备份网卡。

3. 基础环境

系统:centos7

在centos7中,关闭虚拟机添加网卡,再开启虚拟机,系统是不会自动生成网卡的配置文件:

在centos7中要生成网卡配置文件的方法很简单,使用如下命令:

  # 查看物理网卡信息[root@localhost ~]# nmcli devDEVICE    TYPE   STATE   CONNECTION     eno16777736 ethernet connected eno16777736    eno33554984 ethernet connected Wired connection 1 eno50332208 ethernet connected Wired connection 2 lo      loopback unmanaged --

上面的信息可以看到,一共有四张网卡,其中lo是本地回环网卡,另外三张为物理网卡。

  # 查看网卡连接信息[root@localhost ~]# nmcli con shNAME        UUID     TYPE      DEVICE   Wired connection 2 9a1314bf-d273-406a-930a-dc4160dee4ec 802-3-ethernet eno50332208 Wired connection 1 47eef4a3-7fa4-4a73-83ef-1485bda9b950 802-3-ethernet eno33554984 eno16777736     51d00668-2cf5-41da-ad8d-5019d62e98ad 802-3-ethernet eno16777736

上面的信息可以查看到一共有3个连接,其中两个有线连接,表示没有设置过的网卡连接,还有一个enoxx连接。接下来要修改两个有线连接的命名方法,并生成网卡配置文件:

  # 首先,删除两个无用的有线连接[root@localhost ~]# nmcli con del 9a1314bf-d273-406a-930a-dc4160dee4ecConnection 'Wired connection 2' (9a1314bf-d273-406a-930a-dc4160dee4ec) successfully deleted.[root@localhost ~]# nmcli con del 47eef4a3-7fa4-4a73-83ef-1485bda9b950Connection 'Wired connection 1' (47eef4a3-7fa4-4a73-83ef-1485bda9b950) successfully deleted.
# 再次创建新的连接并生成配置文件[root@localhost ~]# nmcli conn add type ethernet con-name eno50332208 ifname eno50332208 Connection 'eno50332208' (eea2a115-63f8-4f33-be84-12559f02542c) successfully added.[root@localhost ~]# nmcli conn add type ethernet con-name eno33554984 ifname eno33554984Connection 'eno33554984' (32d2389e-4e82-4419-9d18-5aff8f0be003) successfully added.
 # 最后,查看下[root@localhost ~]# nmcli con shNAME     UUID     TYPE      DEVICE   eno16777736 51d00668-2cf5-41da-ad8d-5019d62e98ad 802-3-ethernet eno16777736 eno33554984 32d2389e-4e82-4419-9d18-5aff8f0be003 802-3-ethernet eno33554984 eno50332208 eea2a115-63f8-4f33-be84-12559f02542c 802-3-ethernet eno50332208[root@localhost ~]# ll /etc/sysconfig/network-scripts/ifcfg-eno*-rw-r--r--. 1 root root 394 Nov 26 05:59 /etc/sysconfig/network-scripts/ifcfg-eno16777736-rw-r--r--. 1 root root 288 Dec 26 08:44 /etc/sysconfig/network-scripts/ifcfg-eno33554984-rw-r--r--. 1 root root 288 Dec 26 08:44 /etc/sysconfig/network-scripts/ifcfg-eno50332208

网络连接和配置文件都成功生成了。 接下来通过eno33554984 和 eno50332208 使用teaming模式进行双网卡绑定

4. roundrobin模式:

roundrobin模式也称为轮询模式,它 基于每一个包 ,当某一台服务器的两张网卡设置为roundrobin模式teaming,此时服务器发出的数据包,就会在两个物理网卡上进行轮询,即第一个数据包走一张网卡,第二个数据包走第二张网卡,依次轮询。

注意:

        (1)roundrobin具有容错性,当一张网卡down掉,数据包依然发送成功。

        (2)在使用roundrobin模式必须要在交换机上做以太通道,不然会出现网络无法连通。

实际操作:

  # 使用nmcli命令操作,创建team接口team0,同时设置teaming模式为roundrobin[root@localhost ~]# nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name": "roundrobin"}}'Connection 'team0' (9dc48bd6-54b9-48db-b7dd-ecf34ae9196f) successfully added.
  # 给接口team0设置ip地址[root@localhost ~]# nmcli con modify team0 ipv4.address '10.0.0.2/24' ipv4.gateway '10.0.0.1'   # 设置为手动模式,取消DHCP[root@localhost ~]# nmcli con modify team0 ipv4.method manual
  # 将两张物理网卡加入到team中[root@localhost ~]# nmcli con add type team-slave con-name team0-port1 ifname eno33554984 master team0Connection 'team0-port1' (22d3640e-f5c8-499c-b0dd-913c8970d800) successfully added.[root@localhost ~]# nmcli con add type team-slave con-name team0-port2 ifname eno50332208 master team0Connection 'team0-port2' (12660d2a-0e1f-41e6-96b2-53de4fc6b78c) successfully added.[root@localhost ~]# nmcli con shNAME     UUID     TYPE      DEVICE   team0-port2 12660d2a-0e1f-41e6-96b2-53de4fc6b78c 802-3-ethernet --     eno16777736 51d00668-2cf5-41da-ad8d-5019d62e98ad 802-3-ethernet eno16777736 team0-port1 22d3640e-f5c8-499c-b0dd-913c8970d800 802-3-ethernet --     team0    9dc48bd6-54b9-48db-b7dd-ecf34ae9196f team      team0    eno33554984 32d2389e-4e82-4419-9d18-5aff8f0be003 802-3-ethernet eno33554984 eno50332208 eea2a115-63f8-4f33-be84-12559f02542c 802-3-ethernet eno50332208
  # 查看team0的状态[root@localhost ~]# teamdctl team0 stsetup: runner: roundrobin

4.1 roundrobin问题排查

第一次查看出现的是这样的结果,检查下配置:

  # 通过直接查看网卡发现team0并没有启动[root@localhost ~]# ip a | grep team05: team0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN  # 使用ifup 启动team0并没有成功,继续排查[root@localhost ~]# ifup team0[root@localhost ~]# ip a | grep team05: team0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN

直接sysetmctl restart network 也没有成功。

  # 发现team0-port1 team0-port2没有添加成功物理网卡,怎么回事呢?[root@localhost ~]# nmcli con shNAME     UUID     TYPE      DEVICE   team0-port2 ec96c1e1-d268-4ba1-a2f9-0133a9f02655 802-3-ethernet --     eno16777736 51d00668-2cf5-41da-ad8d-5019d62e98ad 802-3-ethernet eno16777736 team0-port1 22d3640e-f5c8-499c-b0dd-913c8970d800 802-3-ethernet --     team0    9dc48bd6-54b9-48db-b7dd-ecf34ae9196f team      team0    eno33554984 32d2389e-4e82-4419-9d18-5aff8f0be003 802-3-ethernet eno33554984 eno50332208 eea2a115-63f8-4f33-be84-12559f02542c 802-3-ethernet eno50332208 
  # 删除掉[root@localhost ~]# nmcli con del team0-port1Connection 'team0-port1' (22d3640e-f5c8-499c-b0dd-913c8970d800) successfully deleted.[root@localhost ~]# nmcli con del team0-port2Connection 'team0-port2' (ec96c1e1-d268-4ba1-a2f9-0133a9f02655) successfully deleted.  # 删除两张物理网卡的连接[root@localhost ~]# nmcli con shNAME     UUID     TYPE      DEVICE   eno16777736 51d00668-2cf5-41da-ad8d-5019d62e98ad 802-3-ethernet eno16777736 team0    9dc48bd6-54b9-48db-b7dd-ecf34ae9196f team      team0    eno33554984 32d2389e-4e82-4419-9d18-5aff8f0be003 802-3-ethernet eno33554984 eno50332208 eea2a115-63f8-4f33-be84-12559f02542c 802-3-ethernet eno50332208 [root@localhost ~]# nmcli con del eno33554984 eno50332208Connection 'eno33554984' (32d2389e-4e82-4419-9d18-5aff8f0be003) successfully deleted.Connection 'eno50332208' (eea2a115-63f8-4f33-be84-12559f02542c) successfully deleted.  # 删除成功[root@localhost ~]# nmcli con shNAME     UUID     TYPE      DEVICE   eno16777736 51d00668-2cf5-41da-ad8d-5019d62e98ad 802-3-ethernet eno16777736 team0    9dc48bd6-54b9-48db-b7dd-ecf34ae9196f team      team0
  # 再次将两张物理网卡添加到team[root@localhost ~]# nmcli con add type team-slave con-name team0-port1 ifname eno33554984 master team0Connection 'team0-port1' (0331ea43-95c0-4106-b388-8484d4c3940d) successfully added.[root@localhost ~]# nmcli con add type team-slave con-name team0-port2 ifname eno50332208 master team0Connection 'team0-port2' (880f2146-fe93-42dd-8d28-7d0dd50b4011) successfully added.[root@localhost ~]# nmcli con shNAME     UUID     TYPE      DEVICE   team0-port1 0331ea43-95c0-4106-b388-8484d4c3940d 802-3-ethernet eno33554984 eno16777736 51d00668-2cf5-41da-ad8d-5019d62e98ad 802-3-ethernet eno16777736 team0    9dc48bd6-54b9-48db-b7dd-ecf34ae9196f team      team0    team0-port2 880f2146-fe93-42dd-8d28-7d0dd50b4011 802-3-ethernet eno50332208

现在成功将两张物理网卡绑定到了team组中

  # 现在查看team0的状态就出现了,模式是:roundrobin[root@localhost ~]# teamdctl team0 st setup: runner: roundrobinports: eno33554984  link watches:   link summary: up   instance[link_watch_0]:    name: ethtool    link: up    down count: 0 eno50332208  link watches:   link summary: up   instance[link_watch_0]:    name: ethtool    link: up    down count: 0

这样,team模式的roundrobin搭建成功。

总结:

在做链路聚合的时候,所要使用到的物理网卡不能独立存在连接,也就是在nmcli con sh查看时,不能独立存在,否则就无法绑定到team模式中。

4.2 测试

因为这里是虚拟机环境,只能通过down掉网卡进行查看。

[root@localhost ~]# teamdctl team0 stsetup: runner: roundrobinports: eno33554984  link watches:   link summary: up   instance[link_watch_0]:    name: ethtool    link: up    down count: 0 eno50332208  link watches:   link summary: up   instance[link_watch_0]:    name: ethtool    link: up    down count: 0

两张网卡同时在线,现在down掉其中一张网卡,

[root@localhost ~]# nmcli con del team0-port1Connection 'team0-port1' (0331ea43-95c0-4106-b388-8484d4c3940d) successfully deleted.[root@localhost ~]# nmcli con shNAME     UUID     TYPE      DEVICE   eno16777736 51d00668-2cf5-41da-ad8d-5019d62e98ad 802-3-ethernet eno16777736 team0    9dc48bd6-54b9-48db-b7dd-ecf34ae9196f team      team0    team0-port2 880f2146-fe93-42dd-8d28-7d0dd50b4011 802-3-ethernet eno50332208[root@localhost ~]# teamdctl team0 stsetup: runner: roundrobinports: eno50332208  link watches:   link summary: up   instance[link_watch_0]:    name: ethtool    link: up    down count: 0

这样就发现eno33554984网卡已经down掉了。

[root@localhost ~]# nmcli con add type team-slave con-name team0-port1 ifname eno33554984 master team0Connection 'team0-port1' (59acd6bf-affc-4994-a050-83c45816859a) successfully added.[root@localhost ~]# [root@localhost ~]# teamdctl team0 stsetup: runner: roundrobinports: eno33554984  link watches:   link summary: up   instance[link_watch_0]:    name: ethtool    link: up    down count: 0 eno50332208  link watches:   link summary: up   instance[link_watch_0]:    name: ethtool    link: up    down count: 0

 虚拟机环境就这样测试了吧,至于生产环境就直接拔网线,ping测试。

资料有说linux下roundrobin具有容错的效果,为了测试是否有容错的效果,虚拟机做了下更改来验证:

这一次网卡全部改成桥接模式,为了更好的测试是否具有容错性。

roundrobin已经配置完毕。接下来我们down掉一张网卡检查是否具有容错性。

 

通过虚拟机测试,容错性是存在的。

 5. 双网卡绑定activebackup的实现

[root@localhost ~]# nmcli con sh NAME     UUID     TYPE      DEVICE   team0-port2 2a1aa534-e021-4452-bb0a-2002dabcbc08 802-3-ethernet eno50332208 team0-port1 9a10c9ef-ee9c-4151-9a47-59b4668e8934 802-3-ethernet --     eno16777736 51d00668-2cf5-41da-ad8d-5019d62e98ad 802-3-ethernet eno16777736 team0    c2278f3f-5c6b-4e1d-b925-514d3c3832b6 team      team0    [root@localhost ~]# nmcli con del team0 team0-port1 team0-port2Connection 'team0' (c2278f3f-5c6b-4e1d-b925-514d3c3832b6) successfully deleted.Connection 'team0-port1' (9a10c9ef-ee9c-4151-9a47-59b4668e8934) successfully deleted.Connection 'team0-port2' (2a1aa534-e021-4452-bb0a-2002dabcbc08) successfully deleted.[root@localhost ~]# nmcli con sh NAME     UUID     TYPE      DEVICE   eno16777736 51d00668-2cf5-41da-ad8d-5019d62e98ad 802-3-ethernet eno16777736 # 以上操作就删除了roundrobin模式,恢复到初始状态。
 
# 添加逻辑网卡team0,并启用activebackup模式[root@localhost ~]# nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'Connection 'team0' (f0794e59-419d-4c2a-96b9-464610b6321a) successfully added.# 绑定ip[root@localhost ~]# nmcli con modify team0 ipv4.address 192.168.118.122/24 ipv4.gateway 192.168.118.1[root@localhost ~]# nmcli con modify team0 ipv4.method manual# 添加物理网卡到activebackup模式[root@localhost ~]# nmcli con add type team-slave con-name team0-port1 ifname eno33554984 master team0Connection 'team0-port1' (52656904-6e85-4a04-98b4-2b19773fa290) successfully added.[root@localhost ~]# nmcli con add type team-slave con-name team0-port2 ifname eno50332208 master team0Connection 'team0-port2' (44d96e3a-014a-481f-9122-4ca2d3be9f7a) successfully added.
[root@localhost ~]# teamdctl team0 stsetup: runner: activebackupports: eno33554984  link watches:   link summary: up   instance[link_watch_0]:    name: ethtool    link: up    down count: 0 eno50332208  link watches:   link summary: up   instance[link_watch_0]:    name: ethtool    link: up    down count: 0runner: active port: eno33554984

成功,处于活动中的网卡为 eno33554984

5.1 测试

通过down掉活动网卡测试网络是否仍然处于连通状态

 

测试成功。

注意: 在做网卡绑定的时候,如果发现物理网卡总是无法绑定到team0,请检查该物理网卡是否处于up状态。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


  • 上一条:
    linux如何无损调整分区大小
    下一条:
    无桌面的linux安装VMWare Tools配置教程
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在Linux系统中使用Iptables实现流量转发功能流程步骤(0个评论)
    • vim学习笔记-入门级需要了解的一些快捷键(0个评论)
    • 在centos7系统中实现分区并格式化挂载一块硬盘到/data目录流程步骤(0个评论)
    • 在Linux系统种查看某一个进程所占用的内存命令(0个评论)
    • Linux中grep命令中的10种高级用法浅析(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2017-07
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-03
    • 2022-04
    • 2022-08
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-06
    • 2023-07
    • 2023-10
    • 2023-12
    • 2024-01
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客