zoukankan      html  css  js  c++  java
  • 24.绑定两块网卡

    借助于网卡绑定技术,不仅可以提高网络传输速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务。

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

    两种最常见的双网卡绑定模式:

      (1) roundrobin - 轮询模式

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

      (2) activebackup - 主备模式

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

    在虚拟机系统中再添加一块网卡设备,请确保两块网卡都处在同一个网络连接中(即网卡模式相同)。处于相同模式的网卡设备才可以进行网卡绑定,否则这两块网卡无法互相传送数据。

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

      1)nmcli dev:查看物理网卡信息  

    [root@localhost network-scripts]# nmcli dev
    DEVICE      TYPE      STATE      CONNECTION         
    virbr0      bridge    connected  virbr0             
    ens33       ethernet  connected  ens33              
    ens37       ethernet  connected  Wired connection 1 
    lo          loopback  unmanaged  --                 
    virbr0-nic  tun       unmanaged  --                 

      nmcli connection show:查看网卡连接信息  

    [root@localhost network-scripts]# nmcli connection show
    NAME                UUID                                  TYPE            DEVICE 
    Wired connection 1  8a06d1d5-18c2-3cb0-b2a4-d318aedde9aa  802-3-ethernet  ens37  
    ens33               5daa0579-8f5c-408f-b0a7-24a64ea73a60  802-3-ethernet  ens33  
    virbr0              bfb37186-ac0f-437f-9713-f6f307485e8e  bridge          virbr0 
    Wired connection 1 表示没有设置过的有线网卡连接。接下来要修改这个有线连接的命名方法,并生成网卡配置文件:
    2)nmcli connection delete UUID:删除网卡连接
    [root@localhost network-scripts]# nmcli connection delete 8a06d1d5-18c2-3cb0-b2a4-d318aedde9aa 
    Connection 'Wired connection 1' (8a06d1d5-18c2-3cb0-b2a4-d318aedde9aa) successfully deleted.

      3)再次创建新的连接并生成配置文件  

    nmcli connection add type ethernet con-name ens37 ifname ens37:
    [root@localhost network-scripts]# nmcli connection add type ethernet con-name ens37 ifname ens37
    Connection 'ens37' (ab73ab8c-8f3f-4823-960d-b7c1d93c92b7) successfully added.  
    [root@localhost network-scripts]# nmcli connection show 
    NAME    UUID                                  TYPE            DEVICE 
    ens33   5daa0579-8f5c-408f-b0a7-24a64ea73a60  802-3-ethernet  ens33  
    ens37   ab73ab8c-8f3f-4823-960d-b7c1d93c92b7  802-3-ethernet  ens37  
    virbr0  bfb37186-ac0f-437f-9713-f6f307485e8e  bridge          virbr0 

      两个网络连接和配置文件都生成了,接下来使用teaming模式进行双网卡绑定

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

      注意:

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

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

       1)使用nmcli命令操作,创建team接口team0,同时设置teaming模式为roundrobin  

    [root@localhost network-scripts]# nmcli connection add type team con-name team0 ifname  team0 config '{"runner":{"name": "roundrobin"}}'
    Connection 'team0' (8f7276a7-8963-49a3-b918-adf281cc2f1d) successfully added.   
    [root@localhost network-scripts]# vim ifcfg-team0 
    DEVICE=team0
    TEAM_CONFIG="{"runner":{"name": "roundrobin"}}"
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=dhcp
    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=team0
    UUID=8f7276a7-8963-49a3-b918-adf281cc2f1d
    ONBOOT=yes
    DEVICETYPE=Team

    2)给接口team0设置ip地址

      dhcp:  

    [root@localhost network-scripts]# nmcli connection modify team0 ipv4.method auto  
    [root@localhost network-scripts]# vim ifcfg-team0
    DEVICE=team0
    TEAM_CONFIG="{"runner":{"name": "roundrobin"}}"
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=dhcp
    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=team0
    UUID=98fd527f-c8d6-4e93-8304-24c8d6a6e52f
    ONBOOT=yes
    DEVICETYPE=Team
    

      手动:  

    [root@localhost network-scripts]# nmcli connection modify team0 ipv4.addresses '10.10.64.9/24' ipv4.gateway '10.10.64.1'
    [root@localhost network-scripts]# nmcli connection modify team0 ipv4.method manual
    [root@localhost network-scripts]# vim ifcfg-team0
    DEVICE=team0
    TEAM_CONFIG="{"runner":{"name": "roundrobin"}}"
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static
    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=team0
    UUID=98fd527f-c8d6-4e93-8304-24c8d6a6e52f
    ONBOOT=yes
    DEVICETYPE=Team
    IPADDR=10.10.64.9
    PREFIX=24
    GATEWAY=10.10.64.1

      3)将两张物理网卡加入到team中  

    [root@localhost network-scripts]#  nmcli con add type team-slave con-name team0-port1 ifname ens33 master team0
    Connection 'team0-port1' (45741585-4f7a-40a9-9339-3a6292c6cebf) successfully added.
    [root@localhost network-scripts]# 
    [root@localhost network-scripts]#  nmcli con add type team-slave con-name team0-port2 ifname ens37 master team0
    Connection 'team0-port2' (e3ea758c-9064-449a-bb8a-4e080e74c163) successfully added. 
    [root@localhost network-scripts]# nmcli connection show 
    NAME         UUID                                  TYPE            DEVICE 
    ens33        5daa0579-8f5c-408f-b0a7-24a64ea73a60  802-3-ethernet  ens33  
    ens37        a7918f7e-dd10-4ce2-83b7-47e0f30f4386  802-3-ethernet  ens37  
    team0        8f6fa8f1-7832-4d9c-8cb6-935bdfc0ec3f  team            team0  
    virbr0       2fb7c674-1630-4d66-85a6-db0c241cbafa  bridge          virbr0 
    team0-port1  ebd04d0c-e434-4a5c-b147-79a8f200bb62  802-3-ethernet  --     
    team0-port2  b9e7201c-7a2a-458c-bcb5-f2e8e6c2551f  802-3-ethernet  --    

     查看team0的状态:  

    [root@localhost network-scripts]# teamdctl team0 state
    setup:
      runner: roundrobin

      4)roundrobin问题排查

      通过直接查看网卡发现team0并没有启动  

    [root@localhost network-scripts]# ip addr | grep team0
    6: team0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000

      使用ifup 启动team0和sysetmctl restart network也都不成功

      发现team0-port1 team0-port2没有添加成功物理网卡  

    [root@localhost network-scripts]# nmcli connection show 
    NAME         UUID                                  TYPE            DEVICE 
    ens33        5daa0579-8f5c-408f-b0a7-24a64ea73a60  802-3-ethernet  ens33  
    ens37        a7918f7e-dd10-4ce2-83b7-47e0f30f4386  802-3-ethernet  ens37  
    team0        8f6fa8f1-7832-4d9c-8cb6-935bdfc0ec3f  team            team0  
    virbr0       2fb7c674-1630-4d66-85a6-db0c241cbafa  bridge          virbr0 
    team0-port1  ebd04d0c-e434-4a5c-b147-79a8f200bb62  802-3-ethernet  --     
    team0-port2  b9e7201c-7a2a-458c-bcb5-f2e8e6c2551f  802-3-ethernet  --    

      删除team0-port1 team0-port2以及两张物理网卡的连接  

    [root@localhost network-scripts]# nmcli connection delete ens33 ens37 team0-port1 team0-port2
    
    (process:49282): libnm-WARNING **: no object known for /org/freedesktop/NetworkManager/ActiveConnection/6
    
    Connection 'ens33' (5daa0579-8f5c-408f-b0a7-24a64ea73a60) successfully deleted.
    Connection 'team0-port1' (ebd04d0c-e434-4a5c-b147-79a8f200bb62) successfully deleted.
    Connection 'ens37' (a7918f7e-dd10-4ce2-83b7-47e0f30f4386) successfully deleted.
    Connection 'team0-port2' (b9e7201c-7a2a-458c-bcb5-f2e8e6c2551f) successfully deleted.
    [root@localhost network-scripts]# 
    [root@localhost network-scripts]# nmcli connection show 
    NAME                UUID                                  TYPE            DEVICE 
    Wired connection 1  d554b158-bbf6-3819-a19b-7391061b067f  802-3-ethernet  ens33  
    team0               8f6fa8f1-7832-4d9c-8cb6-935bdfc0ec3f  team            team0  
    virbr0              2fb7c674-1630-4d66-85a6-db0c241cbafa  bridge          virbr0 
    [root@localhost network-scripts]# 
    [root@localhost network-scripts]# nmcli connection delete d554b158-bbf6-3819-a19b-7391061b067f 
    Connection 'Wired connection 1' (d554b158-bbf6-3819-a19b-7391061b067f) successfully deleted.
    [root@localhost network-scripts]# 
    [root@localhost network-scripts]# nmcli connection show 
    NAME    UUID                                  TYPE    DEVICE 
    team0   8f6fa8f1-7832-4d9c-8cb6-935bdfc0ec3f  team    team0  
    virbr0  2fb7c674-1630-4d66-85a6-db0c241cbafa  bridge  virbr0 

      再次将两张物理网卡添加到team  

    [root@localhost network-scripts]# nmcli connection add type team-slave con-name team0-port1 ifname ens33 master team0
    Connection 'team0-port1' (c2d4edbf-5cb1-4e04-8359-3925bce440f1) successfully added.
    [root@localhost network-scripts]# nmcli connection add type team-slave con-name team0-port2 ifname ens37 master team0
    Connection 'team0-port2' (4818e0f2-420c-481e-b235-83c69be4c5b7) successfully added.  
    [root@localhost network-scripts]# nmcli connection show 
    NAME         UUID                                  TYPE            DEVICE 
    team0        8f6fa8f1-7832-4d9c-8cb6-935bdfc0ec3f  team            team0  
    team0-port1  c2d4edbf-5cb1-4e04-8359-3925bce440f1  802-3-ethernet  ens33  
    team0-port2  4818e0f2-420c-481e-b235-83c69be4c5b7  802-3-ethernet  ens37  
    virbr0       2fb7c674-1630-4d66-85a6-db0c241cbafa  bridge          virbr0 

      此时查看team0的状态  

    [root@localhost network-scripts]# teamdctl team0 state
    setup:
      runner: roundrobin
    ports:
      ens33
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
      ens37
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0  

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

    总结:

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

  • 相关阅读:
    WPF获取程序版本号(Version)的方法
    WPF中Popup等弹窗的位置不对(偏左或者偏右)
    WPF中Expander与ListBox(ItemsControl)嵌套中的问题
    WPF自定义Button样式(按钮长度随Content长度自适应)
    WPF解决当ScrollViewer中嵌套ItemsControl时,不能使用鼠标来滚动翻页
    WPF中Window的ShowInTaskbar、Owner和Topmost属性
    WPF通过<x:Array>直接为ListBox的ItemsSource赋值
    常用的谓词和逻辑运算符
    利用OVER开窗函数分页
    一个单表查询的示例
  • 原文地址:https://www.cnblogs.com/xinghen1216/p/13602997.html
Copyright © 2011-2022 走看看