当前位置:首页 > CN2资讯 > 正文内容

【Linux】Linux系统网卡绑定

2天前CN2资讯

网卡绑定是一种网络配置技术,通常用于增加网络带宽、提高网络可用性和负载均衡。它涉及将多个网络接口卡(NICs)绑定在一起,形成一个虚拟网络接口,以实现一些特定的目标,例如:

  • 负载均衡: 将流量分配到多个物理网卡上,以平衡网络负载,确保每个网卡都能够充分利用。
  • 冗余和容错: 如果一个网卡故障,绑定的其他网卡可以继续提供网络连接,提高系统的可用性。
  • 增加带宽: 多个网卡绑定后,系统可以实现更高的总带宽,适用于需要大量网络流量的应用或服务器。
  • 这些配置通常在服务器和高性能网络设备上使用,以提高性能和可靠性。


    一 环境



    [xml@kvmhost001 ~]$ hostname kvmhost001 [xml@kvmhost001 ~]$ ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.11.152 netmask 255.255.255.0 broadcast 192.168.11.255 inet6 fe80::72aa:8661:6a5d:13aa prefixlen 64 scopeid 0x20<link> ether 00:0c:29:d0:ec:92 txqueuelen 1000 (Ethernet) RX packets 500 bytes 77482 (75.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 109 bytes 12919 (12.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.11.155 netmask 255.255.255.0 broadcast 192.168.11.255 inet6 fe80::b09c:951f:db12:6bea prefixlen 64 scopeid 0x20<link> ether 00:0c:29:d0:ec:9c txqueuelen 1000 (Ethernet) RX packets 413 bytes 49286 (48.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 33 bytes 5667 (5.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 32 bytes 2592 (2.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 32 bytes 2592 (2.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:fc:cf:b0 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [xml@kvmhost001 ~]$ getenforce Disabled [xml@kvmhost001 ~]$ systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) [xml@kvmhost001 ~]$ ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 00:0c:29:d0:ec:92 brd ff:ff:ff:ff:ff:ff 3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 00:0c:29:d0:ec:9c brd ff:ff:ff:ff:ff:ff 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:fc:cf:b0 brd ff:ff:ff:ff:ff:ff 5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:fc:cf:b0 brd ff:ff:ff:ff:ff:ff [xml@kvmhost001 ~]$

    我们将要绑定的就是ens33和ens37两块网卡。


    二 执行绑定

    配置文件法

    2.1 方法1-bond

    以下是设置双网卡绑定的步骤:

  • 安装所需的软件包:
  • sudo yum install bonding
  • 确保系统已经安装了双网卡,并且已经正确配置IP地址和网关。
  • 打开终端,以root用户身份登录。
  • 编辑网络配置文件/etc/sysconfig/network-scripts/ifcfg-eth33和/etc/sysconfig/network-scripts/ifcfg-eth37,分别对应双网卡的配置文件。
  • 在ifcfg-eth33和ifcfg-eth7中添加以下配置:
  • MASTER=bond0 SLAVE=yes

    这将把两个网卡绑定到一个虚拟接口bond0上。

  • 创建一个新的网络配置文件
  • DEVICE=bond0 BOOTPROTO=static ONBOOT=yes IPADDR=<IP地址> NETMASK=<子网掩码> GATEWAY=<网关地址> BONDING_OPTS="mode=balance-rr miimon=100"

    这将配置bond0接口的IP地址、子网掩码、网关地址,并设置绑定模式为负载均衡。

    注意:这里是绑定后的VIP地址信息。

    BONDING_OPTS中可以指定不同的绑定模式。你可以根据需要更改BONDING_OPTS中的mode参数来配置其他绑定模式,如负载均衡(balance-rr)等。

    常用可以使用的模式有:

    balance-rr or 0 — 用于容错和负载平衡的循环模式

    active-backup or 1 — 设置用于容错的活动备份模式

    balance-xor or 2 — 为容错和负载平衡设置异或(异或)模式。

    broadcast or 3 — 设置容错的广播模式。所有传输都在所有的从接口上发送。

    802.3ad or 4 — 设置IEEE 802.3ad动态链接聚合模式。创建共享相同速度和双工设置的聚合组。

    balance-tlb or 5 — 设置传输负载平衡(TLB)模式以实现容错和负载平衡。

    balance-alb or 6 — 为容错和负载平衡设置活动负载平衡(ALB)模式。

    常用的三种方式(mode-0 mode-1 mode-6) 只有 mode 1 实现了故障切换。


    这里需要特别注意的地方:BONDING_OPTS='miimon=100 mode=6 fail_over_mac=1'  ,如果是虚拟机,fail_over_mac=1 是必须要带上的,否则vmware会出现告警信息,配置起来能正常用,但是在进行准备切换时,是无法进行的。切记!

    vmware 出现这样的提示基本可以确定 fail_over_mac 没有生效,所配置的网卡也无法做到故障切换。




  • 保存并关闭文件。
  • 重启网络服务以应用更改:
  • systemctl restart network
  • 确认双网卡绑定是否成功:
  • cat /proc/net/bonding/bond0

    如果看到类似以下输出,表示双网卡绑定已经成功:

    Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: load balancing (round-robin) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth33 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:d0:ec:92 Slave queue ID: 0 Slave Interface: eth37 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:d0:ec:9 Slave queue ID: 0

    现在你的CentOS 7系统已经成功设置了双网卡绑定。


    2.2 方法2-teamd

    可以使用Team技术来绑定多个网络接口。以下是一些步骤,以完成CentOS 7网卡绑定:

  • 安装teamd(如果尚未安装):
  • sudo yum install teamd
  • 创建一个team配置文件,比如
  • sudo nano /etc/team/team0.conf

    在配置文件中,你可以指定要绑定的网络接口以及其配置。以下是一个示例配置文件:

    [team0] control_port = 6666 link_watchers = ethtool runner = activebackup tx_balancer = basic link_up_delay = 200 link_down_delay = 200 [team0-port] ifname = eth0 link_watchers = ethtool [team0-port] ifname = eth1 link_watchers = ethtool

    在这个示例中,我们创建了一个名为 "team0" 的团队接口,它绑定了两个网络接口 eth0 和 eth1。你可以根据自己的需求进行自定义配置。

  • 启动Team接口:
  • sudo teamd -g -c /etc/team/team0.conf
  • 配置网络接口以使用Team接口。
  • DEVICE=team0 TEAM_CONFIG=/etc/team/team0.conf ONBOOT=yes BOOTPROTO=none IPADDR=192.168.1.100 # 设置你的IP地址 NETMASK=255.255.255.0 # 设置子网掩码 GATEWAY=192.168.1.1 # 设置网关地址
  • 启动并激活Team接口:
  • sudo systemctl restart network

    在Team技术的配置文件中,control_port 是一个参数,用于指定Team接口的控制端口的监听端口号。控制端口用于与teamd守护进程进行通信,以控制Team接口的行为。

    具体来说,control_port 参数的意义如下:

    • control_port:指定Team接口的控制端口的监听端口号。在配置文件中,它的值通常是一个整数,表示监听的端口号。

    默认情况下,Team接口的控制端口是6666,但你可以根据需要更改它。控制端口允许你通过teamd守护进程对Team接口进行管理和监控,例如启动、停止、重新加载配置等操作。

    当你更改control_port的值时,确保在Team接口的其他相关配置中也相应地进行了更改,以便正确配置和管理Team接口。同时,任何需要与Team接口进行交互的工具或脚本也需要知道新的控制端口号。


    关于物理网卡:

    在使用Team技术进行网卡绑定时,你通常不需要单独配置每个成员接口(比如 eth0)的网络配置。Team接口将管理成员接口的网络配置。但是,你需要确保成员接口(如 eth0)在操作系统中处于启用状态(UP),以便Team接口可以将其添加为成员。

    以下是一些注意事项:

  • 成员接口状态:确保成员接口(例如 eth0)处于启用状态。你可以使用以下命令来检查和激活成员接口:
  • sudo ip link set eth0 up

    这将确保 eth0 处于激活状态,以便Team接口可以使用它。

  • 不要在成员接口上配置IP地址:一般情况下,不需要在成员接口上配置IP地址或其他网络配置。网络配置应该在Team接口上完成,而不是在成员接口上。因此,确保成员接口没有任何IP地址或其他网络配置,以避免冲突。
  • 配置应用于Team接口:所有网络配置,如IP地址、子网掩码、网关等,应该在Team接口上进行配置。你可以在Team接口的配置文件(例如 /etc/sysconfig/network-scripts/ifcfg-team0)中指定这些配置。
  • 总之,成员接口(如 eth0)的主要任务是提供物理连接,而网络配置应该在Team接口上进行。Team接口将管理成员接口,并根据其配置进行负载均衡或冗余操作。确保成员接口处于启用状态,但不要在其上配置IP地址或其他网络配置。网络配置应该针对Team接口进行。



    指令法

    "type bond" 和 "type team" 是两种不同的网络连接类型,用于实现网络接口的绑定和聚合,但它们有一些区别:

    a. Bonding (type bond):

    • Bonding 是一种通过将多个网络接口绑定在一起以增加可用带宽和冗余的技术。它在OSI模型的第二层(数据链路层)工作。
    • Bonding 支持多种负载均衡模式,如 round-robin、active-backup、balance-xor 等,可以根据需求进行配置。
    • Bonding 在内核层面操作,因此通常不需要额外的守护进程或软件来实现。
    • 常用于服务器环境,以提高网络性能和可靠性。

    b. Teaming (type team):

    • Teaming 是一种高级的连接聚合技术,它在OSI模型的第三层(网络层)工作。与 Bonding 不同,它不仅可以聚合多个物理接口,还可以在不同的子网中工作。
    • Teaming 支持更复杂的负载均衡和策略路由,使其适用于更复杂的网络拓扑和需求。
    • Teaming 通常需要用户空间守护进程(例如,teamd)来管理连接,并且可能需要额外的配置。
    • 常用于数据中心和复杂网络环境,以提供高可用性和负载分配。

    总之,Bonding 和 Teaming 都用于将多个网络接口组合成一个逻辑接口,但它们的适用场景和功能有所不同。Bonding 更适用于简单的负载均衡和冗余需求,而 Teaming 更适用于复杂的网络拓扑和高级路由需求。

    2.3 nmcli - type bond

    使用nmcli配置网卡绑定(Bonding),你可以按照以下步骤进行操作,将类型(type)设置为bond:

  • 打开终端,以root或具有sudo权限的用户身份登录。
  • 确保你已经安装了NetworkManager,如果没有安装,可以使用以下命令安装:
  • sudo yum install NetworkManager
  • 确保NetworkManager服务已经启动并已启用:
  • sudo systemctl start NetworkManager sudo systemctl enable NetworkManager
  • 使用用nmcli命令创建一个新的Bond接口配置文件。在下面的命令中,将BOND_NAME替换为你想要的Bond接口名称,例如bond0:
  • sudo nmcli connection add type bond con-name BOND_NAME ifname BOND_NAME mode 802.3ad miimon 100 updelay 200 downdelay 200
    • mode 802.3ad 表示采用802.3ad聚合模式(也称为LACP)。
    • miimon 100 设置链路监视间隔为100毫秒。
    • updelay 200 设置链路上升延迟为200毫秒。
    • downdelay 200 设置链路下降延迟为200毫秒。
  • 添加要绑定到Bond接口的网卡。假设你要绑定eth0和eth1,使用以下命令:
  • sudo nmcli connection add type ethernet con-name BOND_NAME-port1 ifname eth0 master BOND_NAME sudo nmcli connection add type ethernet con-name BOND_NAME-port2 ifname eth1 master BOND_NAME
  • 激活Bond接口:
  • sudo nmcli connection up BOND_NAME
  • 验证Bond接口的状态,确保它处于活动状态:
  • sudo nmcli connection show BOND_NAME

    如果状态显示为"已激活",则说明Bonding已成功创建并激活。

    现在,你已经在CentOS 7上使用nmcli成功配置了一个Bond接口,并设置了所需的模式(在此示例中为802.3ad)。






    2.4 nmcli - type team

    使用nmcli配置网卡绑定(Teaming),请按照以下步骤进行操作:

  • 打开终端,以root或具有sudo权限的用户身份登录。
  • 确保你已经安装了NetworkManager,如果没有安装,可以使用以下命令安装:
  • sudo yum install NetworkManager
  • 确保NetworkManager服务已经启动并且已启用:
  • sudo systemctl start NetworkManager sudo systemctl enable NetworkManager
  • 使用nmcli命令创建一个新的Team接口配置文件。在下面的命令中,将TEAM_NAME替换为你想要的团队名称:
  • sudo nmcli connection add type team con-name TEAM_NAME ifname TEAM_NAME
  • 添加网卡到Team接口。你可以将多个网卡添加到团队。以下是一个示例,假设你要绑定eth0和eth1:
  • sudo nmcli connection add type team-slave con-name TEAM_NAME-port1 ifname eth0 master TEAM_NAME sudo nmcli connection add type team-slave con-name TEAM_NAME-port2 ifname eth1 master TEAM_NAME
  • 设置Team接口的运行模式。在下面的命令中,我们将其设置为Round Robin模式,但你可以根据需要选择其他模式,例如Active-Backup:
  • sudo nmcli connection modify TEAM_NAME roundrobin

    或者,如果你想设置为Active-Backup模式,可以使用以下命令:

    sudo nmcli connection modify TEAM_NAME activebackup
  • 激活Team接口:
  • sudo nmcli connection up TEAM_NAME
  • 验证Team接口的状态,确保它处于活动状态:
  • sudo nmcli connection show TEAM_NAME

    如果状态显示为"已激活",则说明Team绑定已成功创建并激活。



    配置IP地址。运行以下命令,将IP地址、子网掩码和网关替换为你的网络配置:

    sudo nmcli connection modify TEAM_NAME ipv4.address IP_ADDRESS/NETMASK sudo nmcli connection modify TEAM_NAME ipv4.gateway GATEWAY

    例如,如果你的IP地址是192.168.1.10,子网掩码是255.255.255.0,网关是192.168.1.1,那么命令将如下所示:

    sudo nmcli connection modify team0 ipv4.address 192.168.1.10/24 sudo nmcli connection modify team0 ipv4.gateway 192.168.1.1




    三 技术比较

    Team和Bond(或者Linux Bonding)都是用于实现网卡绑定的技术,它们在不同的Linux发行版中都有支持。选择使用哪种技术取决于你的具体需求和环境。

    下面是一些关于选择的建议:

  • Team技术:
    • Team是一个较新的技术,通常在更新的Linux发行版中有更好的支持。
    • Team支持多种负载均衡和冗余模式,包括活动备份、负载均衡和广播。
    • 它提供了更多的配置选项和灵活性,适用于更复杂的网络架构。
    • 如果你使用较新的硬件和内核,Team可能是更好的选择。
  • Bond技术(Linux Bonding):
    • Bonding是一个成熟的技术,已经在Linux中使用了很长时间。
    • 它通常在各种Linux发行版中都有广泛支持,包括旧版本。
    • Bonding提供了一些基本的模式,如活动备份、负载均衡和广播,适用于常见的需求。
    • 如果你在较旧的硬件或较旧的Linux发行版上工作,Bonding可能更适合。

    综上所述,如果你的系统使用较新的硬件和内核,需要更高级的配置选项,或者想要更多灵活性,Team技术可能是更好的选择。如果你需要一种较为简单的方式来绑定网卡,而且要确保在各种Linux版本上都能工作,那么Bonding技术可能更适合你。


      你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/25292.html

      分享给朋友:

      “【Linux】Linux系统网卡绑定” 的相关文章

      cn2排列公式怎么展开?原来排列组合还可以这么学!

      排列组合作为数学中一个重要的分支,在日常生活和实际问题中都有着广泛的应用。无论是计算概率、解决实际问题,还是在统计学中分析数据,排列组合都是不可或缺的工具。而在排列组合的核心公式中,C(n,2)是一个非常基础但又极其重要的公式。C(n,2)排列公式到底怎么展开?它背后又有哪些深层次的数学原理呢?让我...

      存储VPS:高效处理大量数据,灵活配置,按需付费

      什么是存储VPS 存储VPS是一种专门为处理大量数据而设计的虚拟专用服务器。它提供了广泛的磁盘空间,并且通常针对高容量存储需求进行了优化。无论是个人用户还是企业用户,存储VPS都能满足他们对数据存储的高要求。这种服务器不仅具备强大的存储能力,还提供了灵活的配置选项,用户可以根据自己的需求选择合适的硬...

      BBR加速:优化网络传输速度和稳定性的全面指南

      BBR加速概述 在现代网络环境中,BBR(Bottleneck Bandwidth and Round-trip propagation time)加速技术逐渐成为网络优化的重要工具。它是由谷歌开发的一种拥塞控制算法,主要用于提高网络传输速度和稳定性。对于许多用户来说,理解BBR的基本概念和技术背景...

      如何利用VPS优惠码省钱并提升服务体验

      在互联网上,虚拟专用服务器(VPS)已经成为许多个人和企业的首选方案之一。VPS允许用户拥有一个独立的、完全可控的服务器环境,同时又节省了许多硬件投资成本。对于那些刚开始接触VPS的朋友来说,了解VPS的定义及其用途是非常重要的。在这里,VPS不仅仅是一个存储空间,它能为你的业务提供强大的运算能力和...

      深入了解CN2 GIA VPS:选择更快稳定的虚拟专用服务器

      在现代互联网环境中,选择合适的虚拟专用服务器(VPS)至关重要。CN2 GIA VPS,则是个不错的选择。它基于中国电信的CN2 GIA国际精品网络,这一网络是中国电信下一代承载网络的高端产品,又被称为Chinatelecom Next Carrier Network- Global Interne...

      全面VPN测评:如何选择最适合你的虚拟私人网络服务

      VPN测评是评估虚拟私人网络(VPN)服务质量的一种方法。对我而言,了解VPN测评极为重要,因为它能帮助我做出明智的选择,以确保在使用互联网时的隐私和安全。VPN测评通常涉及多个方面,包括用户评价、性能测试和专业评测。 每个人使用VPN的需求都不尽相同,这就需要从不同的角度来分析VPN服务的优劣。用...