设为首页 收藏本站
查看: 610|回复: 0

[经验分享] Centos7 / RHEL 7 双网卡绑定

[复制链接]

尚未签到

发表于 2018-4-22 12:08:23 | 显示全部楼层 |阅读模式
  1. 简要
  双网卡绑定技术在centos7中使用了teaming技术,而在rhel6/centos7中使用的是bonding技术,
  在centos7中双网卡绑定既能使用teaming也可以使用bonding,这里推荐使用teaming技术,方便与查看和监控。
  2. 原理
  这里介绍两种最常见的双网卡绑定模式:
  (1) roundrobin - 轮询模式
  所有链路处于负载均衡状态,这种模式的特点增加了带宽,同时支持容错能力。
  (2) activebackup - 主备模式
  一个网卡处于活动状态,另一个处于备份状态,所有流量都在主链路上处理,当活动网卡down掉时,启用备份网卡。
  3. 基础环境
  系统:centos7
  在centos7中,关闭虚拟机添加网卡,再开启虚拟机,系统是不会自动生成网卡的配置文件:
DSC0000.png

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

    # 查看物理网卡信息  
[root@localhost ~]# nmcli dev
  
DEVICE       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-dc4160dee4ec
  
Connection 'Wired connection 2' (9a1314bf-d273-406a-930a-dc4160dee4ec) successfully deleted.
  
[root@localhost ~]# nmcli con del 47eef4a3-7fa4-4a73-83ef-1485bda9b950
  
Connection '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 eno33554984
  
Connection '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 team0
  
Connection 'team0-port1' (22d3640e-f5c8-499c-b0dd-913c8970d800) successfully added.
  
[root@localhost ~]# nmcli con add type team-slave con-name team0-port2 ifname eno50332208 master team0
  
Connection '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 st
  
setup:
  
  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-port1
  
Connection 'team0-port1' (22d3640e-f5c8-499c-b0dd-913c8970d800) successfully deleted.
  
[root@localhost ~]# nmcli con del team0-port2
  
Connection '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 eno50332208
  
Connection '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 team0
  
Connection 'team0-port1' (0331ea43-95c0-4106-b388-8484d4c3940d) successfully added.
  
[root@localhost ~]# nmcli con add type team-slave con-name team0-port2 ifname eno50332208 master team0
  
Connection '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: roundrobin
  
ports:
  
  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 st  
setup:
  
  runner: roundrobin
  
ports:
  
  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-port1  
Connection '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 st
  
setup:
  
  runner: roundrobin
  
ports:
  
  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 team0  
Connection 'team0-port1' (59acd6bf-affc-4994-a050-83c45816859a) successfully added.
  
[root@localhost ~]#
  
[root@localhost ~]# teamdctl team0 st
  
setup:
  
  runner: roundrobin
  
ports:
  
  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具有容错的效果,为了测试是否有容错的效果,虚拟机做了下更改来验证:
DSC0002.png

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

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

  通过虚拟机测试,容错性是存在的。
  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-port2
  
Connection '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 team0
  
Connection 'team0-port1' (52656904-6e85-4a04-98b4-2b19773fa290) successfully added.
  
[root@localhost ~]# nmcli con add type team-slave con-name team0-port2 ifname eno50332208 master team0
  
Connection 'team0-port2' (44d96e3a-014a-481f-9122-4ca2d3be9f7a) successfully added.


[root@localhost ~]# teamdctl team0 st  
setup:
  
  runner: activebackup
  
ports:
  
  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掉活动网卡测试网络是否仍然处于连通状态
DSC0005.png

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-450406-1-1.html 上篇帖子: CentOS6安装PHP7 下篇帖子: CentOS7下安装Docker-Compose
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表