精华内容
下载资源
问答
  • 说明:经过查阅,原来双网卡绑定一个IP的专业名词叫做bond,可以实现负载均衡;如果想要实现两张网卡绑定到一个网桥,基本思路是两张网卡设置同一个网桥是行不通的,但如果先实现bond,然后将bond绑定到这个网桥上是...

     

    说明:经过查阅,原来双网卡绑定一个IP的专业名词叫做bond,可以实现负载均衡;如果想要实现两张网卡绑定到一个网桥,基本思路是两张网卡设置同一个网桥是行不通的,但如果先实现bond,然后将bond绑定到这个网桥上是行的。关键看你配置的思路。网桥一般情况用不到,主要是用在KVM上。

    双网卡绑定单个IP地址为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断。

    在Linux下叫bonding,IBM称为etherchanel,broadcom叫team,但是名字怎么变,效果都是将两块或更多的网卡当做一块网卡使用,在增加带宽的同时也可以提高冗余性。比如我们在CentOS 6.9下可以将eth0和eth1绑定成虚拟网卡bond0。

    如图:

     

    实验配置:

    mode=1:表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,其中一块网卡在工作(若eth0断掉),则自动切换到另一个块网卡(eth1做备份)。

    系 统

    设备名称

    IP地址

    子网掩码

     

    CentOS 6.9_64bit

    eth0

     

     

    eth1

     

     

    bond0

    10.1.3.210

    255.255.255.0

    1、查看主机网卡

    [root@web ~]# cd /etc/sysconfig/network-scripts/
    [root@web1 network-scripts]# ll
    total 200
    -rw-r--r--. 1 root root   212 Mar 20 22:15 ifcfg-eth0
    -rw-r--r--  1 root root   212 Mar 23 19:10 ifcfg-eth1

    2、复制ifcfg-bond0

    [root@web network-scripts]# cp ifcfg-eth0 ifcfg-bond0
    [root@web network-scripts]# ll
    total 204
    -rw-r--r--  1 root root   212 Mar 23 19:12 ifcfg-bond0
    -rw-r--r--. 1 root root   212 Mar 20 22:15 ifcfg-eth0
    -rw-r--r--  1 root root   212 Mar 23 19:10 ifcfg-eth1 

    3、编辑ifcfg-bond0、ifcfg-eth0、ifcfg-eth1

    [root@web network-scripts]# vim ifcfg-bond0
    DEVICE=bond0
    BOOTPROTO=static
    IPADDR=10.1.3.210
    NETMASK=255.255.255.0
    GATEWAY=10.1.3.254
    ONBOOT=yes
    USERCTL=no
    
    [root@web1 network-scripts]# vim ifcfg-eth0
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    
    [root@web1 network-scripts]# vim ifcfg-eth1
    DEVICE=eth1
    ONBOOT=yes
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes
    USERCTL=no

    4、模块加载

    [root@web1 ~]# vim /etc/modprobe.d/dist.conf 

    在最后添加以下内容:

    #加载bonding模块,对外虚拟网络接口设备为bond0

    alias bond0 bonding
    options bond0 miimon=100 mode=1

    查看

    [root@web1 ~]# grep bond0 /etc/modprobe.d/dist.conf
    alias bond0 bonding
    options bond0 miimon=100 mode=1 

    说明:

    miimon是用来进行链路监测的。 比如:miimon=100,单位是ms(毫秒)这边的100,是100ms,即是0.1秒那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0、1两种。 

    mode共有七种(0~6),这里解释两个常用的选项。

    mode=0:表示load balancing (round-robin)为负载均衡方式,两块网卡都在工作。

    mode=1:表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,其中一块网卡在工作(若eth0断掉),则自动切换到另一个块网卡(eth1做备份)。

    bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用。

    5、重启网络服务,使配置生效

    [root@web1 ~]# service network restart
    Shutting down interface eth0:                              [  OK  ]
    Shutting down interface eth1:                              [  OK  ]
    Shutting down loopback interface:                           [  OK  ]
    Bringing up loopback interface:                             [  OK  ]
    Bringing up interface bond0:  RTNETLINK answers: File exists
    Error adding address 10.1.3.210 for bond0.
    RTNETLINK answers: File exists                              [  OK  ]

    6、查看bond0接口状态

    [root@web1 ~]# cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: eth0       // eth0主模式
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    Slave Interface: eth0
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 00:0c:29:c9:6d:18
    Slave queue ID: 0
    Slave Interface: eth1
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 00:0c:29:c9:6d:22
    Slave queue ID: 0

    7、查看中路由表状态:

    [root@web1 ~]#  route  -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    10.1.3.0        0.0.0.0         255.255.255.0   U     0      0        0 bond0
    169.254.0.0     0.0.0.0         255.255.0.0     U     1004   0        0 bond0
    0.0.0.0         10.1.3.254      0.0.0.0         UG    0      0        0 bond0
    
    [root@web1 ~]# lsmod | grep bond
    bonding               127060  0

    8、测试

    选择一台windows 7机器ping测试机,然后停掉当前使用的网卡eth0,查看是否能够继续ping通;

    测试结果:丢失一个包。

     

    查看bond0接口状态

    [root@web1 ~]#cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: eth1      //eth1为主模式
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    Slave Interface: eth0
    MII Status: down
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 1
    Permanent HW addr: 00:0c:29:c9:6d:18
    Slave queue ID: 0
    Slave Interface: eth1
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 1
    Permanent HW addr: 00:0c:29:c9:6d:22
    Slave queue ID: 0

    配置完成!

    9、支持NetworkManager的centos系统

    只需要通过界面配置即可以完成多块网卡的绑定

     

    10、一个网桥、bond实例

    /etc/sysconfig/network-scripts/下的文件:

    ifcfg-ebr:

    vi 
    
    DEVICE=ebr  
    STP=yes  
    BRIDGING_OPTS=priority=128  
    TYPE=Bridge  
    BOOTPROTO=none  
    IPADDR=192.168.1.2  
    NETMASK=255.255.255.0  
    GATEWAY=192.168.1.1  
    DNS1=  
    DNS2=  
    DEFROUTE=yes  
    IPV4_FAILURE_FATAL=no  
    NAME=ebr  
    UUID=1ce71742-a273-42fe-b358-3b0a0ee77c50  
    ONBOOT=yes  
     ifcfg-ebrbond:
    DEVICE=ebrbond  
    BONDING_OPTS="miimon=100 mode=balance-alb"  
    TYPE=Bond  
    BONDING_MASTER=yes  
    BRIDGING_OPTS="priority=50 path_cost=33"  
    NAME=ebrbond  
    UUID=d0baebf0-282b-4dfe-b6d4-f6ff30ad81d1  
    ONBOOT=yes  
    BRIDGE=ebr

    ifcfg-eth0

    DEVICE=eth0  
    HWADDR=90:B1:1C:6E:AE:09  
    TYPE=Ethernet  
    NAME=eth0  
    UUID=c2eee5d8-34ee-4c0c-8d77-90029520b249  
    ONBOOT=yes  
    MASTER=ebrbond  
    SLAVE=yes  

    ifcfg-eth1

    DEVICE=eth1  
    HWADDR=00:10:18:EA:9E:FC  
    TYPE=Ethernet  
    NAME=eth1  
    UUID=71ee5282-ce19-49f4-972d-37ab030b8011  
    ONBOOT=yes  
    MASTER=ebrbond  
    SLAVE=yes  

     

    参考:

    http://blog.csdn.net/taiyang1987912/article/details/46550857(以上内容转自此篇文章)

    https://www.cnblogs.com/wonux/p/5555953.html

    https://www.cnblogs.com/weifeng1463/p/7549951.html

     

    转载于:https://www.cnblogs.com/EasonJim/p/8366467.html

    展开全文
  • Linux网卡绑定

    2018-08-28 11:31:00
    CentOS配置网卡绑定(bonding) 1. bonding 简介 将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡...

    CentOS配置网卡绑定(bonding)

    1. bonding 简介

    将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址

    2. bonding 工作模式

    常见的工作模式

    • Mode 0 (balance-rr) : 轮转(Round-robin)策略,从头到尾顺序的在每一个slave 接口上面发送数据包。本模式提供负载均衡和容错的能力
    • Mode 1 (active-backup) :活动-备份(主备)策略,只有一个slave被激活,当且仅当活动的 slave 接口失败时才会激活其他 slave 。为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
    • Mode 3 (broadcast) :在所有的slave接口上传送所有的报文,提供容错能力

    注意:active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用 EtherChannel,但在模式4中需要 LACP和 EtherChannel

    3. CentOS 6上实现 bonding

    准备两块网卡实现bonding(这两块网卡必须在同一物理网络中,这里使用vmware workstation虚拟机的仅主机模式),工作模式选择mode1

    (1) 关闭 NetworkManager

    [root@centos6 ~]# chkconfig NetworkManager off
    [root@centos6 ~]# service NetworkManager stop

    (2) 创建 bonding 设备和物理设备的配置文件

    [root@centos6 ~]# cd /etc/sysconfig/network-scripts/
    [root@centos6 network-scripts]# cat ifcfg-bond0   
    DEVICE=bond0                       // 设备名称
    BOOTPROTO=none
    BONDING_OPTS='miimon=100 mode=1'   // miimon=100表示每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路,mode用来指定bonding的工作模式
    IPADDR=192.168.249.100
    PREFIX=24
    
    [root@centos6 network-scripts]# cat ifcfg-eth0
    DEVICE=eth0             
    BOOTPROTO=none
    MASTER=bond0                       // 指定主设备为bond0
    SLAVE=yes                         // 将当前设备设置为从设备
    
    [root@centos6 network-scripts]# cat ifcfg-eth1
    DEVICE=eth1
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes

    (3) 重启网络服务使配置生效

    [root@centos6 network-scripts]# service network restart
    [root@centos6 network-scripts]# ip a
    ......
    2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
       link/ether 00:0c:29:4d:68:f8 brd ff:ff:ff:ff:ff:ff
    3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
       link/ether 00:0c:29:4d:68:f8 brd ff:ff:ff:ff:ff:ff
    4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
       link/ether 00:0c:29:4d:68:f8 brd ff:ff:ff:ff:ff:ff
       inet 192.168.249.100/24 brd 192.168.249.255 scope global bond0
       inet6 fe80::20c:29ff:fe4d:68f8/64 scope link tentative dadfailed 
          valid_lft forever preferred_lft forever

    可以看出只有 bonding 设备有IP地址,物理网卡没有 IP 地址,两块物理网卡的被修改为和 binding 设备相同的MAC地址

    (4) 查看 bonding 信息

    通过查看 /proc/net/bonding/bond0 能够查看网卡的的状态,在主备模式下那块网卡处于激活状态

    [root@centos6 network-scripts]# cat /proc/net/bonding/bond0 
    Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
    
    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: eth0
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    
    Slave Interface: eth0
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 00:0c:29:4d:68:f8
    Slave queue ID: 0
    
    Slave Interface: eth1
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 00:0c:29:4d:68:02
    Slave queue ID: 0

    这里eth0正处于active状态,如果断开eth0,eth1就会active,eth0的状态为down

    (5) 删除 bonding

    [root@centos6 network-scripts]# ifconfig bond0 down      // 停止bind0
    [root@centos6 network-scripts]# rmmod bonding            // 卸载bongding模块
    [root@centos6 network-scripts]# rm -rf ifcfg-bond0       // 删除bond0配置文件

    然后把eth0,eth1的配置文件改回原样,重启网络服务即可

    4. CentOS 7上实现 bonding

    CentOS 7也可以像上面那样通过修改配置文件来实现bonding,这里演示用nmcli命令来实现bonding

    (1) 添加 bonding 接口

    [root@centos7 ~]# nmcli con add type bond con-name bond0 ifname bond0 mode active-backup    // 创建bonding接口,模式为主从模式
    [root@centos7 ~]# nmcli con show
    NAME   UUID                                  TYPE      DEVICE 
    bon0   396e7d08-7824-4d1c-bd61-c34455caf6a3  bond      bond0  
    ......

    在/etc/sysconfig/network-scripts目录下生成了ifcfg-bond0文件

    (2) 为 bonding 接口添加从属接口

    [root@centos7 ~]# nmcli con add type bond-slave ifname ens33 master bond0    // 将ens33接口添加到bond0的从属接口
    [root@centos7 ~]# nmcli con add type bond-slave ifname ens34 master bond0    // 将ens34接口添加到bond0的从属接口

    在/etc/sysconfig/network-scripts目录下生成了ifcfg-bond-slave-ens33
    和ifcfg-bond-slave-ens34文件

    (3) 启动绑定,先要启动从属接口

    [root@centos7 ~]# nmcli con up bond-slave-ens33    // 启动绑定从属接口ens33
    [root@centos7 ~]# nmcli con up bond-slave-ens34    // 启动绑定从属接口ens34
    [root@centos7 ~]# nmcli con up bond0               // 启动绑定

    (4) 查看绑定状态信息

    可以用通过查看/proc/net/bonding/bond0文件来查看网卡状态信息,这里不再赘述

    (5) 删除绑定

    [root@centos7 ~]# nmcli con down bond0              // 停止 bond0,停掉后物理网络会自动开启 
    [root@centos7 ~]# nmcli con del bond0               // 删除绑定配置文件
    [root@centos7 ~]# nmcli con del bond-slave-ens33    // 删除绑定从属接口ens33配置文件
    [root@centos7 ~]# nmcli con del bond-slave-ens34    // 删除绑定从属接口ens34配置文件

    用nmcli命令删除这些配置文件后,网络会恢复到初始状态

    CentOS 7下通过网络组 Network Teaming 绑定

    1. Network Teaming 简介

    • 网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
    • 网络组不同于旧版中bonding技术,提供更好的性能和扩展性
    • 网络组由内核驱动和teamd守护进程实现
    • 多种方式 runner :broadcast,roundrobin,activebackup,loadbalance,lacp

    2. 创建网络组

    (1) 创建网络组接口

    使用如下命令创建网络组接口

    nmcli con add type team con-name CNAME ifname INAME [config JSON]

    其中 CNAME 是连接名,INAME 是接口名,JSON 指定 runner 方式,格式如下

    '{"runner": {"name": "METHOD"}}'

    METHOD 可以是 broadcast,roundrobin,activebackup,loadbalance,lacp

    下面创建一个 team0 接口

    [root@centos7 ~]# nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'

    在 /etc/sysconfig/network-scripts/ 目录下生成了 ifcfg-team0 文件

    修改 team0 接口的地址

    [root@centos7 ~]# nmcli con modify team0 ipv4.method manual ipv4.addresses 192.168.249.200/24

    网关和 DNS 也可以根据自行需求配置修改,这里就不配置了

    (2) 创建 port 接口

    使用如下命令创建 port 接口

    nmcli con add type team-slave con-name CNAME ifname INAME master TEAM

    其中 CNAME 是连接名,INAME 是网络接口名,TEAM 是网络组接口名,连接名若不指定,默认为 team-slave-IFACE

    下面将 ens33 和 ens34 添加到网络组

    [root@centos7 ~]# nmcli con add type team-slave con-name team0-ens33 ifname ens33 master team0
    [root@centos7 ~]# nmcli con add type team-slave con-name team0-ens34 ifname ens34 master team0

    在 /etc/sysconfig/network-scripts/ 目录下生成了 ifcfg-team0-ens33 和 ifcfg-team0-ens34 文件

    [root@centos7 ~]# nmcli con show
    NAME         UUID                                  TYPE      DEVICE
    ......
    team0        7f9c5773-47a6-47d4-8009-74a40fe2bc87  team      team0  
    team0-ens33  ba16e000-3fa7-4db2-b7c5-9a7ef248cb98  ethernet  --     
    team0-ens34  b5c77978-ff7f-4b3a-abc3-9df2eebb1ddb  ethernet  -- 

    (3) 启动网络组

    • 启动网络组接口不会自动启动网络组中的 port 接口
    • 启动网络组接口中的 port 接口总会自动启动网络组接口
    • 禁用网络组接口会自动禁用网络组中的 port 接口
    • 没有port接口的网络组接口可以启动静态 IP 连接
    • 启用DHCP连接时,没有 port 接口的网络组会等待 port 接口的加入
    [root@centos7 ~]# nmcli con up team0    // 启动网络组,完毕后就能 ping 通
    [root@centos7 ~]# nmcli con up team0-ens33
    [root@centos7 ~]# nmcli con up team0-ens34

    (4) 查看网络组状态信息

    [root@centos7 ~]# teamdctl team0 state
    setup:
      runner: activebackup
    ports:
      ens33
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
      ens34
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
    runner:
      active port: ens33

    (5) 删除网络组

    [root@centos7 ~]# nmcli con down team0    // 停掉 team0,停止后物理网络会自动开启
    [root@centos7 ~]# nmcli con del team0
    [root@centos7 ~]# nmcli con del team0-ens33
    [root@centos7 ~]# nmcli con del team0-ens34

    转载于:https://www.cnblogs.com/dugukeling/p/9547086.html

    展开全文
  • 网卡绑定技术在centos7中使用了teaming技术,而在rhel6/centos7中使用的是bonding技术,在centos7中双网卡绑定既能使用teaming也可以使用bonding,这里推荐使用teaming技术,方便与查看和监控。 2. 原理 这里介绍...
  • Python网卡绑定脚本

    千次阅读 2017-10-02 22:52:06
    前天写了一篇,发现有很多问题,...这个脚本在linux系统里面可以对各种脚本进行双网卡绑定(仅仅只能两两绑定),如果各位看客要三个,四个网口一起绑定的话,这 个脚本满足不了你的需求。绑定的类型是主备的,所以如果
    前天写了一篇,发现有很多问题,今天吧自己发现问题的地方都给修改后,在自己的虚拟机上面进行测试,至少目前没有发现任何问
    题,所以吧前一篇给删除了,现在重新写一篇,只是工作需要所以自己摸索的,再次申明我不是大神,是菜鸟。
    这个脚本在linux系统里面可以对各种脚本进行双网卡绑定(仅仅只能两两绑定),如果各位看客要三个,四个网口一起绑定的话,这
    脚本满足不了你的需求。绑定的类型是主备的,所以如果是需要冗余,负载等类型的,可以修改os.popen()的内容。废话不多说,
    下面上脚本源代码。
    
    
    # !/usr/bin/python
    # -*- coding:utf-8 -*-
    
    import os
    import os.path
    import re
    import time
    
    dir1 = "/etc/sysconfig/network-scripts/"  # 定义路径
    
    # 获取Python的版本号,如果是版本3则返回0 否则返回1
    py_ver_num = 0  # 定义变量 表示版本号 0代表版本超过3版本 否则表示低于3版本
    python_version = os.popen("python -V").readlines() # 获取Python的版本
    if len(python_version) <= 0:  # 如果长度小于0说明Python版本低于3
       py_ver_num = 1
    else:
       #  把list转换成str并且截取后转换成int
       str_version = int(str(python_version)[9:10])
       if int_servion < 3:  # 判断版本是多少
          py_ver_num = 1
    
    #  查询文件夹下面所有的网口
    def Get_prot():
       net_list = []  # 定义存放网口的list
       for x in os.listdir(dir1):  # 循环查询出来这个路径下面有多少文件
          files = "%s/%s"% (dir1, x)
          # 判断是否是文件并且正则表达式匹配以ifcfg-开头数字结束的字符串
          if os.path.isfile(files) and re.search("^ifcfg-.*?[0-9]$", x):
             net_list.append(x)  # 吧匹配出来的文件添加到list
       return net_list
    
    # 用正则表达式找出存在的bong
    def Is_bond():
       list1 = [] # 0 表示已经存在的绑定 1 表示已经做过绑定的网口 2表示未做过绑定的网口
       bond_list = [] # 吧存在的bond放在bond_list中
       eth_list_yes = [] # 吧已经做过绑定的网口找出来
       eth_list_no = [] # 吧没有做过的绑定的网口放在这里面
       for x in Get_prot():
          if re.search("^bond", str(x[6:])):
             bond_list.append(x)
       for x in Get_prot():
          if not re.search("^bond", str(x[6:])):
             with open("%s%s" % (dir1, x), "r") as file:
                flage = 1 # 定义变量 1 表示没做过绑定,0 表示做过绑定
                for line in file:
                   if re.search("^SLAVE=yes", line):
                      flage = 0
                if flage == 0:
                   eth_list_yes.append(x)
                else:
                   eth_list_no.append(x)
       bond_list.sort()      
       eth_list_yes.sort()
       eth_list_no.sort() # key=lambda x: x[net_eth_name()[0]:]
       list1.append(bond_list)
       list1.append(eth_list_yes)
       list1.append(eth_list_no)
       return list1   
    
    
    # 判断输入的bond名字是否正确
    def bond_name(bondname):
       if bondname == "":
          print("绑定名不能为空")
          return 0
       if not bondname.isdigit():
          print("绑定名必须是纯数字")
          return 0
       for x in Is_bond()[0]:
          if bondname == x[10:]:
             print("绑定名已经存在")
             return 0
    
    # 判断输入的ip是否正确 0 表示ip 1表示网关
    def net_name(netname, num):
       ip1 = ["255", "255", "255", 255]
       if num == 0:
          if netname == "":
             print("ip不能为空")
                       return 0
               cut_ip = netname.strip().split(".")
          if len(cut_ip) != 4:
             print("你输入的ip不正确")
             return 0
          for x in range(len(ip1)):
             if not cut_ip[x].isdigit():
                print("请不要随便乱输入")
                return 0
             if int(cut_ip[x]) > int(ip1[x]):        
                                    print("您输入的ip不正确")
                                    return 0
       else:
          if netname != "":
             cut_gw = netname.strip().split(".")
                       if len(cut_gw) != 4:
                               print("你输入的网关不正确")
                               return 0
                       for x in range(len(ip1)):
                if not cut_gw[x].isdigit():
                   print("请不要随便乱输入")
                   return 0
                               if int(netname.strip().split(".")[x]) > int(ip1[x]):
                                       print("您输入的网关不正确")
                                       return 0
          else:
             return 1   
    
    # 判断网关输入的是否正确
    def gw_name(ipname, gwname):
       if net_name(gwname, 1) == 0:
          return 0
       elif net_name(gwname, 1) != 1:
          cut_ip = ipname.split(".")
          cut_gw = gwname.split(".")
          for x in range(4):
             if (x < 3) and (int(cut_ip[x]) != int(cut_gw[x])):
                print("您输入的网关不太正确哦") 
                return 0
    
    # 获取网口名字
    def net_eth_name():
            eth_name = ""
            num = 0
       name_list = []
            for x in range(len(Is_bond()[2][0])):
          str_eth = str(Is_bond()[2][0])[x]
          if str_eth.isdigit():  
             num = x
             break           
            eth_name = str(Is_bond()[2][0])[6:num]
       name_list.append(num)
       name_list.append(eth_name)
       return name_list
    
    # 判断网口输入是否正确 num =0 表示主 =1 表示备
    def eth_name(ethname, num):
       eth_yes =[] # 已做绑定网口
       eth_no = [] # 未做绑定网口
       if ethname == "":
          if num == 0:
             print("主网口不能为空")
             return 0
          else:
             print("备网口不能为空")
             return 0
       if not ethname.isdigit():
          print("请输入数字")
          return 0
    
       for x in Is_bond()[1]:
          eth_yes.append(x[net_eth_name()[0]:])
       for x in Is_bond()[2]:
          eth_no.append(x[net_eth_name()[0]:])
       iseth = 0 # 定义变量确定输入的网口是否在为绑定的网口里面
       for x in range(len(eth_no)):
          # 如果输入的网口在未绑定的里面 iseth就为1
          if int(eth_no[x]) == int(ethname):
             iseth = 1
       if iseth == 0:
          iseth1 = 0 
          for x in range(len(eth_yes)):
             if int(eth_yes[x]) == int(ethname):
                iseth1 = 1
          if iseth1 == 0:
             print("对不起,你输入的网口不存在")
             return 0
          else:
             print("此网口已做过绑定")
             return 0
       return str(ethname)
    
    #  修改网口文件
    def update_eth(eth, ethname, bondname, bondethname):
       file_data = ""
            line_list = []
            with open("%sifcfg-%s%s" % (dir1, ethname, eth), "r") as files:  # 打开指定文件
                    for line in files:  # 循环读取文件内容(按行)
                            line_list.append(line)  # 把找到的内容 添加到一个list
            for x in line_list:  # 循环list 把内容一行行的读取出来
                    if re.search('^ONBOOT', x):  # 正则表达式查询是否有ONBOOT开头或结尾的内容
                            file_data += "ONBOOT=yes\n"  # 如果有 则替换这条内容添加到字符串
                    elif re.search('^BOOTPROTO', x):
                            file_data += "BOOTPROTO=none\n"
                    elif re.search("^NM_CONTROLLED", x):
                            file_data += "NM_CONTROLLED=no\n"
                    elif re.search("^UUID", x):
                            file_data += "# %s" % x
          elif re.search("^IPADDR", x):
                            file_data += "# %s" % x
          elif re.search("^NETMASK", x):
                            file_data += "# %s" % x
          elif re.search("^GATEWAY", x):
                            file_data += "# %s" % x
          elif re.search("DNS", x):
                            file_data += "# %s" % x
                    else:
                            file_data += x  # 其它内容原封不动添加到字符串         
            #with open("%sifcfg-%s%s" % (dir1, ethname, eth), "w") as file:  # 打开指定文件
            #        file.write(file_data)  # 把修改后的内容全部写到源文件中
       file_data = file_data.strip()
       os.system('echo "%s">%s' % (file_data, bondethname))
            time.sleep(1)
            os.popen('echo "MASTER=bond%s">>%s' % (bondname, bondethname))  # 在源文件后面继续添加内容
            os.popen('echo "SLAVE=yes">>%s' % bondethname)
            print("%s%s修改成功" % (net_eth_name()[1], eth))
    
    # 在开始绑定之前要检查所有未做过绑定的网口的NM_CONTROLLED选项,如果不修改的话,会影响脚本在xshell工具中的使用
    for x in Is_bond()[2]:
       print("正在检查%s" % x)
       line_list1 =[]
       file_data1 = ""
       with open("%s%s" % (dir1, x), "r") as files:
          for line in files:
             line_list1.append(line)
       for i in line_list1:
          if re.search("^NM_CONTROLLED", i):
             file_data1 += "NM_CONTROLLED=no\n"
          else:
             file_data1 += i
       file_data1 = file_data1.strip()
            os.system('echo "%s">%s%s' % (file_data1, dir1, x))
            time.sleep(0.5)
    print("全部检查完毕,准备开始")
    
    judje = True 
    int_while = 0 # 定义变量判断while循环是否完整执行过一次
    while judje:
       # 这两行代码很重要,它至少实现了Python2,3版本的输入统一
       if py_ver_num ==1:
          input = raw_input
       print("######################################################################################")
       print("已经存在的绑定:%s" % Is_bond()[0])
       print("已做绑定的网口:%s" % Is_bond()[1])
       print("未做绑定的网口:%s" % Is_bond()[2])
            print("######################################################################################")
       Bond_Name = input("请输入绑定名[例:0,1,2...]:")
       if bond_name(Bond_Name) == 0:
          break
       Bond_Ip = input("请输入绑定IP[例:192.168.1.111]:")
       if net_name(Bond_Ip, 0) == 0:
          break
       Bond_Gw = input("请输入网关不输入表示没有[例:192.168.1.1]:")
       if gw_name(Bond_Ip, Bond_Gw) == 0:
          break
       Zeth_Name = input("请输入绑定主网口[例:0,1,2...]")
       if eth_name(Zeth_Name, 0) == 0:
          break
       Beth_Name = input("请输入绑定备网口[例:0,1,2...]")
       if eth_name(Beth_Name, 1) == 0:
                    break
       if eth_name(Beth_Name, 1) == eth_name(Zeth_Name, 0):
          print("主备网口不能一样")
          break
    
       Bond_Dir = "%sifcfg-bond%s" % (dir1, Bond_Name)
       Bond_Zeth_Name = "%sifcfg-%s%s" % (dir1, net_eth_name()[1], Zeth_Name)
       Bond_Beth_Name = "%sifcfg-%s%s" % (dir1, net_eth_name()[1], Beth_Name)
       os.popen("touch %s" % Bond_Dir)
       time.sleep(1)
       os.popen('echo "DEVICE=bond%s">%s' % (Bond_Name, Bond_Dir))
       os.popen('echo "BOOTPROTO=static">>%s' % Bond_Dir)
       os.popen('echo "TYPE=Ethernet">>%s' % Bond_Dir)
       os.popen('echo "ONBOOT=yes">>%s' % Bond_Dir)
       os.popen('echo "IPADDR=%s">>%s' % (Bond_Ip, Bond_Dir))
       os.popen('echo "NETMASK=255.255.255.0">>%s' % Bond_Dir)
       if Bond_Gw != "":
          os.popen('echo "GATEWAY=%s">>%s' % (Bond_Gw, Bond_Dir))
       os.popen("echo 'BONDING_OPTS=\"primary=%s%s mode=1 miimon=200\" '>>%s" % (net_eth_name()[1], Zeth_Name, Bond_Dir))
       os.popen('echo "# bond name:bond%s">>%s' % (Bond_Name, Bond_Dir))
       os.popen('echo "# net prot:%s%s,%s%s">>%s' % (net_eth_name()[1], Zeth_Name, net_eth_name()[1], Beth_Name, Bond_Dir))
       time.sleep(1)
       print("bond%s创建成功" % Bond_Name)
       ########################################################## 主网口
       update_eth(Zeth_Name, net_eth_name()[1], Bond_Name, Bond_Zeth_Name)
       ########################################################## 备网口
       update_eth(Beth_Name, net_eth_name()[1], Bond_Name, Bond_Beth_Name)
       int_while += 1
       flag = input("是否继续(Y/N):")
       if flag == "Y" or flag == "y":   #如果输入的是“Y”或“y”则继续下一次,其余的则退出
          pass
       else:
          judje = False
    
       if int_while > 0:
          restart = input("是否重启network(Y/N):")
          if restart == "Y" or restart == "y":  # 如果输入Y/y则重启网络服务
             os.popen("service network restart")
     
    
     
    
    展开全文
  • 网卡绑定之teaming

    2021-04-13 06:46:45
    一、网卡绑定技术teaming 这里介绍两种最常见的双网卡绑定模式: (1) roundrobin - 轮询模式 所有链路处于负载均衡状态,这种模式的特点增加了带宽,同时支持容错能力。 (2) activebackup - 主备模式 一个网卡...

    一、网卡绑定技术teaming

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

            (1) roundrobin - 轮询模式

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

            (2) activebackup - 主备模式

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

    二、具体步骤

    1.查看物理网卡信息

    [root@localhost ~]# nmcli dev   (做好后查看的)
    ens33  ethernet  连接的  team0-ens33
    ens36  ethernet  连接的  team0-ens36
    team0  team       连接的  team0       
    lo     loopback  未托管  --

    注意:物理机做了bond,交换机也要做bond。

    2.具体步骤

    [root@\zjz ~]# nmcli connection add con-name team0 type team ifname team0 config '{"runner":{"name":"activebackup"}}';
    连接“team0”(5c80f42f-5cec-4f5a-8a05-4b83d8bc7fab) 已成功添加。
    [root@\zjz ~]# nmcli con modify team0 ipv4.method manual ipv4.addresses 192.168.40.67/24 connection.autoconnect yes
    [root@\zjz ~]# nmcli con add con-name team0-ens33 type team-slave ifname ens33 master team0
    [root@\zjz ~]# nmcli con add con-name team0-ens36 type team-slave ifname ens36 master team0
    [root@\zjz ~]# nmcli connection up team0
    成功激活(主服务器等待从服务器)连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/11)
    [root@\zjz ~]#nmcli connection up team0-ens33
    连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/14)
    [root@\zjz ~]#nmcli connection up team0-ens36
    连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/15)
    

    3、查看聚合连接地址

    #  ifconfig team0
    team0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.40.67  netmask 255.255.255.0  broadcast 192.168.40.255
            inet6 fe80::d708:73ef:3f74:a6e9  prefixlen 64  scopeid 0x20<link>
            ether 1a:18:32:40:99:5c  txqueuelen 1000  (Ethernet)
            RX packets 586  bytes 35860 (35.0 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 97  bytes 9850 (9.6 KiB)
            TX errors 0  dropped 2 overruns 0  carrier 0  collisions 0# nmcli con sh
    名称           UUID                     类型       设备   
    eth0    3c89adf5-e813-46e4-9ce3-a9e17180400b            802-3-ethernet  eth0   
    eth1    6f89e2b2-955b-46b2-b27d-e0c5b55ce084            802-3-ethernet  eth1   
    virbr0   3bba83e6-823a-4e67-b0b7-a29915c4b727                bridge      virbr0
    

    查看聚合连接运行状态 # teamdctl team0 st setup: runner: loadbalance ports: ens33 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 ens36 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0

    注意:弄好后要重启网卡。

    三.bond与team

    team新的链路聚合的软件。
    team与bond的主要区别
                       bond   team
    hash加密      no       yes
    负载均衡       no      yes
    对IPV6           差     好

    #均衡负载的意思是:每个网卡执行一个任务。 在team中,如果某一个网卡的一个任务过大,另一个网卡会自动多作几次任务。

    展开全文
  • Linux系统在大多数企业运用中都占据着及其重要的作用,但是从centos7开始我们发现安装...本文将介绍如何修改网卡名称,及双网卡绑定。 [root@dwh ~]# ip a 1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link
  • Centos7 / RHEL 7 双网卡绑定

    千次阅读 2019-03-17 11:30:42
    网卡绑定技术在centos7中使用了teaming技术,而在rhel6/centos7中使用的是bonding技术, 在centos7中双网卡绑定既能使用teaming也可以使用bonding,这里推荐使用teaming技术,方便与查看和监控。 2. 原理 这里...
  • Centos7双网卡绑定

    千次阅读 2020-03-18 15:12:48
    网卡绑定技术在centos7中使用了teaming技术,而在rhel6/centos7中使用的是bonding技术,在centos7中双网卡绑定既能使用teaming也可以使用bonding,这里推荐使用teaming技术,方便与查看和监控。 原理 这里介绍两...
  • Linux双网卡绑定网卡绑定在项目应用中较多,通常配置上网卡绑定有两种方法,第一种是采用传统方法修改配置文件,第二种是采用新的命令直接生成配置文件。传统配置方法步骤如下:第一步:编辑网卡eth1配置文件第二...
  • CentOS 7 双网卡绑定

    2020-11-03 11:03:39
    1.双网卡绑定技术在centos7中使用了teaming技术,而在rhel6/centos7中使用的是bonding技术, 在centos7中双网卡绑定既能使用teaming也可以使用bonding,这里推荐使用teaming技术,方便与查看和监控。 原理 这里介绍...
  • linux网卡绑定

    2017-11-09 13:06:00
    linux网卡绑定 ######################################## eth1和eth4绑定 vi ifcfg-bond0 DEVICE=bond0 BOOTPROTO=none BROADCAST=192.168.70.255 IPADDR=192.168.70.230 NETMASK=255.255.255.0...
  • 最近工作中在做线上服务器,安装centos7.2 x64最小化安装,需要做链路聚合,双网卡绑定。在centos 6.x 和 centos 7上测试都OK,于是直接开搞。 说明下,以下环境是在虚拟机中实现的: 系统: centos7.2 x64 最小化...
  • 网卡绑定技术Teaming 网络组NetWork Teaming 网络组是将多块网卡逻辑地连接到一起从而允许故障转移或者提高吞吐率的方法。 提高服务器网络可用性的一个方式是使用多个网卡 Linux 绑定驱动程序提供了一种将多个网卡...
  • linux系统配置网卡绑定一、centos6下配置网卡绑定(bonding)1、bonding概述(1)作用:就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。...
  • linux双网卡绑定

    2014-04-07 14:48:52
    网卡绑定就是多张网卡逻辑上作为一张网卡用。可分为负载均衡绑定和冗余绑定两种。这里以bond0为例子说明。双网卡绑定具体作用如下:1. 增大带宽2. 保持带宽的稳定性3. 可以形成网卡冗余阵列、分担负载,双网卡被绑定...
  • 添加一块网卡,使用bonding将2块网卡绑定到bond0网卡中,ip为原来的ip地址,使用模式2作为bonding的模式,并测试 步骤 添加网卡 关机,点击“编辑虚拟机设置”>“添加”>“网络适配器”,点击确定可看到多了...
  • linux team方式进行网卡绑定

    千次阅读 2018-08-03 15:57:39
    网卡绑定可采用team或者bond方式,模式如下: 第一种:0:round robin(交换机端需要配置聚合) 第二种:1:active-backup(这种模式接入不需要交换机端支持,随便怎么接入都行) 第三种:2:load ...
  • 网卡绑定技术teaming

    2021-03-29 21:41:35
    Linux 绑定驱动程序提供了一种将多个网卡聚合到一个逻辑的绑定接口的方法。这是个新的实现绑定的方法,并不影响linux内核中旧绑定驱动。 网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量 网络组不同...
  • Centos7.5双网卡绑定

    2021-08-18 16:49:22
    使用光钎或把要配置双网卡绑定的两个口自己连自己。 使用ethtool查看每个网卡的详细信息,ethtool参数说明: Port:Twisted Pair(电口) FIBRE(光口) Link detected:网卡物理状态,yes为网卡起来,no为未起来。...
  • XenServer多网卡绑定

    2019-03-29 14:29:00
    xenserver通过XenCenter可以绑定网卡,支持Active-Active和Active-Standby的模式,但是通过Xencenter只能绑定两块网卡为一组。更多的比如3块一组、4块一组,却不能在这里实现,这时候需要通过CLI进行操作。 在开始...
  • Linux 多网卡绑定

    2014-02-16 14:11:07
    将多个linux网络端口(网卡)绑定为一个,可以提升网络的性能或者增加其稳定性。linux的bongding模块提供了绑定/集成多个网卡为一个...网卡绑定步骤: 1 配置多个网卡及bond 添加ifcfg-bond0,配置如下 DEVICE=bond0
  • 一、CentOS配置网卡绑定(bonding) 1、bonding概述 (1)作用:就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块...
  • Centos 6.5 做bond网卡绑定

    千次阅读 2018-06-05 23:14:00
    常用的有三种mode=0:平衡负载模式,有...例子:以下安装Oracle集群的业务网卡与心跳网卡采用主-备份策略进行绑定为例进行说明:步骤1:以root用户登录节点一步骤2:确定网卡类型及物理网卡个数,判定是否可以进行绑...
  • 网卡绑定多ip

    2020-05-24 17:06:35
    网卡配置文件位置: 这里配置ifcfg-em1,使用IPADDR0,IPADDR1实现,配置如下 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_...
  • CentOS6u9 双网卡绑定

    2018-05-14 20:56:13
    本文使用VMWare虚拟机模拟生产的双网卡绑定操作,做一个简录 系统版本为CentOS6,5系列的双网卡绑定配置稍有区别,等下次有需求时再发博文 依据《CentOS6实验机模板搭建部署》克隆一台实验机,并增加一块网卡 ...
  • Linux 多网卡绑定bond

    2019-09-25 03:13:34
    mode=0:负载均衡模式,增加带宽,两块网卡使用的是同一个MAC地址,所以必须配置网卡相连的交换机,这两个端口应采用...两个网卡绑定配置:  关闭NetworkManager服务,禁止开机重启。 Bond配置: vim /etc/sy...
  • linux系统双网卡绑定:在做双网卡绑定之前一定要备份配置文件!linux系统网卡配置文件位置:cd /etc/sysconfig/network-scriptscp ifcfg-eth0 ifcfg-bond0例如我们需要绑定的网卡分别是ifcfg-eth0 对应eth0 ifcfg-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,454
精华内容 1,781
关键字:

网卡绑定uuid