美文网首页
【NIC】物理机网卡绑定,实现负载均衡和高可用

【NIC】物理机网卡绑定,实现负载均衡和高可用

作者: Bogon | 来源:发表于2024-06-18 15:04 被阅读0次

在网络中,日常为了提高可靠性,一般会配置链路聚合(Link Aggregation),同样的,在服务器上也有网卡绑定(bonding)的技术,将两个或多个物理网卡通过bonding技术绑定在一起,从而创建一个虚拟的、逻辑上的网络接口,实现网络接口的聚合。

做了网卡绑定之后,就可以提高网络冗余,实现高可用,如果其中一个网卡发生故障,服务能够无缝切换到其他正常工作的网卡上,确保网络连接不间断;结合不同的工作模式,还可以实现负载分担或增加网络带宽的效果,优化资源利用的同时,提高网络容量。

Linux服务器上一般有多个NIC网卡,Linux系统提供一种技术,可以将多个网卡bonding成一个逻辑bonded的网卡,统一提供服务。(Linux bonding- involves bonding two or more physical network interface cards into a single logical “bonded” interface,下文用“虚拟网卡”这个词来代替 logical “bonded” interface),这样做可以为高可用性提供冗余,也可以提高系统带宽性能。

在ACTIVE/BACKUP配置模式下,一般只有一个网卡处于工作状态,其他作为备份和故障转移用,工作网卡出现故障后备份的网卡会起来工作,如此可以避免出现单点故障,提高系统的可用性。而在ACTIVE/ACTIVE配置模式下,所有的网卡都处于工作状态,这样可以提高系统带宽。

image.png

$ ip addr list

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master team0 state UP group default qlen 1000
link/ether d0:94:66:53:f0:7c brd ff:ff:ff:ff
3: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master team0 state UP group default qlen 1000
link/ether d0:94:66:53:f0:7c brd ff:ff:ff:ff
4: em3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether d0:94:66:53:f0:80 brd ff:ff:ff:ff
5: em4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether d0:94:66:53:f0:82 brd ff:ff:ff:ff
6: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:9b:99
brd ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
7: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:9b:99
brd ff:ff:ff:ff
9: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether d0:94:66:53:f0:7c brd ff:ff:ff:ff
inet 10.19.49.188/24 brd 10.19.49.255 scope global noprefixroute team0
valid_lft forever preferred_lft forever
inet6 fe80::35b:2e77:e86c:1458/64 scope link noprefixroute
valid_lft forever preferred_lft forever

这些信息是通过 ip addr list 命令获取的,显示了服务器上各个网卡接口的配置和状态。

对每个接口信息的解读1:

  1. lo (Loopback)

    • inet 127.0.0.1/8 scope host lo: 这是回环接口,用于本地通信。IP地址是 127.0.0.1,子网掩码是 /8,表示只有这个地址是回环地址。
  2. em1

    • inet6 ::1/128 scope host: IPv6 的回环地址,::1,子网掩码是 /128
    • link/ether d0:94:66:53:f0:7c brd ff:ff:ff:ff:ff:ff: MAC 地址是 d0:94:66:53:f0:7c
  3. em2

    • 同 em1,具有相同的配置和MAC地址
  4. em3

    • link/ether d0:94:66:53:f0:80 brd ff:ff:ff:ff:ff:ff: MAC 地址是 d0:94:66:53:f0:80,但是接口状态是 DOWN,即未连接。
  5. em4

    • link/ether d0:94:66:53:f0:82 brd ff:ff:ff:ff:ff:ff: MAC 地址是 d0:94:66:53:f0:82,也处于 DOWN 状态。
  6. virbr0

    • inet 192.168.122.1/24: 虚拟网桥的配置,IP地址是 192.168.122.1,子网掩码是 /24,表示局域网内的地址范围。
    • link/ether 52:54:00:9b:99 brd ff:ff:ff:ff:ff:ff: MAC 地址是 52:54:00:9b:99
  7. virbr0-nic

    • 同 virbr0 的MAC地址,但是接口状态是 DOWN。
  8. team0

    • inet 10.19.49.188/24: 连接到团队接口的配置,IP地址是 10.19.49.188,子网掩码是 /24
    • link/ether d0:94:66:53:f0:7c brd ff:ff:ff:ff:ff:ff: MAC 地址是 d0:94:66:53:f0:7c,与 em1 和 em2 相同。
    • inet6 fe80::35b:2e77:e86c:1458/64: IPv6 地址。

总结解读:

  • Loopback (lo) 是用于本地通信的接口,IP地址为 127.0.0.1
  • em1em2 是两个物理网卡,使用同一个MAC地址,连接状态为 UP。
  • em3em4 是两个物理网卡,MAC地址分别是 d0:94:66:53:f0:80d0:94:66:53:f0:82,但是处于 DOWN 状态。
  • virbr0 是虚拟网桥,用于虚拟机通信,IP地址为 192.168.122.1
  • virbr0-nic 是连接到 virbr0 的虚拟网桥的物理接口,但是处于 DOWN 状态。
  • team0 是一个团队接口,IP地址为 10.19.49.188,连接状态为 UP,与 em1、em2 使用相同的 MAC 地址。

对每个接口信息的解读2:

  1. lo (Loopback)

    • Type: LOOPBACK
    • Status: UP
    • IPv4: 127.0.0.1/8 (localhost)
    • IPv6: ::1/128 (localhost)

    这是回环接口,用于本地通信。IPv4 地址是 127.0.0.1,IPv6 地址是 ::1

  2. em1

    • Type: Ethernet
    • Status: UP
    • MAC 地址: d0:94:66:53:f0:7c
    • IPv4: 没有显示具体地址

    这是一个以太网接口,状态为 UP,但没有显示具体的 IPv4 地址。

  3. em2

    • Type: Ethernet
    • Status: UP
    • MAC 地址: d0:94:66:53:f0:7c
    • IPv4: 没有显示具体地址

    类似于 em1,这也是一个以太网接口,状态为 UP,但没有显示具体的 IPv4 地址。

  4. em3

    • Type: Ethernet
    • Status: DOWN
    • MAC 地址: d0:94:66:53:f0:80

    这是一个未连接的以太网接口,状态为 DOWN。

  5. em4

    • Type: Ethernet
    • Status: DOWN
    • MAC 地址: d0:94:66:53:f0:82

    类似于 em3,这也是一个未连接的以太网接口,状态为 DOWN。

  6. virbr0

    • Type: Virtual Bridge
    • Status: DOWN
    • MAC 地址: 52:54:00:9b:99
    • IPv4: 192.168.122.1/24 (局域网地址)

    这是一个虚拟网桥接口,状态为 DOWN。它有一个 IPv4 地址 192.168.122.1,属于 192.168.122.0/24 网络。

  7. virbr0-nic

    • Type: Virtual Bridge Interface
    • Status: DOWN
    • MAC 地址: 52:54:00:9b:99

    这是虚拟网桥 virbr0 的网络接口,状态为 DOWN。

  8. team0

    • Type: Ethernet
    • Status: UP
    • MAC 地址: d0:94:66:53:f0:7c
    • IPv4: 10.19.49.188/24 (全局范围地址)

    这是一个以太网接口,状态为 UP。它有一个 IPv4 地址 10.19.49.188,属于 10.19.49.0/24 网络。

总结:

  • 服务器有多个网络接口,包括以太网接口(em1, em2, em3, em4, team0)和虚拟接口(virbr0, virbr0-nic)。
  • 大部分以太网接口都处于 UP 状态,但有些并未连接(DOWN 状态)。
  • IPv4 地址只显示在 lo(回环接口)、virbr0(虚拟网桥)和 team0(以太网接口)上。

这些信息对于管理网络配置和故障排除非常有用。

为什么 brd 都是 ff:ff:ff ?

在Linux中,网络设备的广播地址(broadcast address)通常被表示为 ff:ff:ff:ff:ff:ff
这是因为在以太网中,广播地址的格式是固定的,全为 1,即 ff:ff:ff:ff:ff:ff
这个地址表示数据包将被发送到网络中的所有设备,类似于一个广播信号,所有接收设备都会接收到这个数据包。

在你提供的输出中,你可以看到几个网络设备的广播地址(brd)都是 ff:ff:ff:ff:ff:ff,这是正常的行为。具体来说:

  • em1em2 都使用相同的 MAC 地址,因此它们的广播地址也相同。
  • em3em4 是 DOWN 状态,因此没有分配有效的广播地址,但是它们的占位符广播地址仍显示为 ff:ff:ff:ff:ff:ff

总结来说,ff:ff:ff:ff:ff:ff 是以太网中广播地址的标准表示方式,用于指示数据包应发送到网络中的所有设备。

根据输出信息来看,em3em4 是两个物理网卡,它们具有唯一的 MAC 地址(分别为 d0:94:66:53:f0:80d0:94:66:53:f0:82),但是它们目前处于 DOWN 状态。

在网络术语中,DOWN 状态意味着这些接口当前未激活或未连接到任何网络设备上。

常见的情况包括:

  • 网线未插入接口,或者未正确连接到交换机或路由器。
  • 网卡驱动程序问题,导致无法启动或识别接口。
  • 网络设备(如交换机)端口未正确配置或未启用。

因此,如果 em3em4 处于 DOWN 状态,并且服务器并不需要这些额外的网络接口,那么这些接口可能确实没有在被使用。

在网络术语中,描述 team0 接口与 em1em2 接口使用相同的 MAC 地址的行为,通常称为MAC地址共享MAC地址冗余
具体来说,这种配置下,多个物理接口(如 em1em2)被绑定成一个逻辑接口(team0),这个逻辑接口会使用一个共同的 MAC 地址来进行网络通信。

将多个物理接口(如 em1em2)绑定成一个逻辑接口(team0)并共享相同的 MAC 地址,有以下几个好处:

  1. 冗余和负载均衡:通过将多个物理接口绑定成一个逻辑接口,可以提高网络连接的可靠性和冗余性。如果一个物理接口出现故障或断开连接,仍然可以通过其他接口继续通信。同时,流量可以在多个接口之间均衡分配,提高整体的网络性能和负载均衡能力。

  2. 增加带宽:通过绑定多个物理接口,可以增加可用的带宽。合并多个物理链路可以提供更高的总带宽,从而支持大量数据传输或高密度流量的网络应用。

  3. 简化管理:使用一个逻辑接口管理多个物理接口,可以简化网络配置和管理。管理员可以集中管理逻辑接口的配置,而无需单独设置每个物理接口的参数。

  4. 故障恢复:当一个物理接口发生故障时,逻辑接口仍然保持活动状态,使得系统可以快速从故障中恢复而无需中断服务。

总体来说,MAC地址共享通过将多个物理接口绑定成一个逻辑接口,能够提升网络的可用性、性能和管理效率,特别是在需要高可靠性和高带宽的网络环境下,这种配置非常有利。

参考

Configuring a network bond
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/configuring-network-bonding_configuring-and-managing-networking

CentOS网卡制作bond
https://poison77.com/2020/04/06/linux-bond

相关文章

  • Linux bonding介绍

    网卡bond是通过把多个物理网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡。bonding技术的最...

  • Nginx负载均衡高可用理解

    要实现nginx的高可用,需要实现备份机。 1.1. 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到...

  • bondbing模式下之active-backup和broadc

    网络接口配置-bonding Bonding就是 将多块网卡绑定同一IP 地址对外提供服务,可以实现高可用或者负载...

  • nginx + keepalived高可用

    参考: Keepalived+Nginx实现高可用Web负载均衡、Nginx + Keepalived 高可用 简...

  • 网卡聚合bonding

    1. 简介 网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在应用部署中是...

  • 【转载】负载均衡算法实现java与场景分析

    负载均衡算法实现分布式系统中负载均衡算法在高可用场景下的分析

  • 负载均衡是怎么做的?

    负载均衡 负载均衡是实现分布式系统高可用的方式之一;负载均衡策略实现了把高并发的流量分摊在其后的服务器集群上;常见...

  • Nginx

    keepalived+nginx 实现高可用双机热备 + 负载均衡架构 1 准备4个ubuntu16.04虚拟机(...

  • 什么是bond及其作用

    网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡。在应用部署中是一种常用的技...

  • bonding实现网卡负载均衡与高可用

    bondingLinux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络...

网友评论

      本文标题:【NIC】物理机网卡绑定,实现负载均衡和高可用

      本文链接:https://www.haomeiwen.com/subject/nmmfcjtx.html