引言

在最近一次机房服务器的部署中,我们遇到了一个不同于以往的配置需求。通常,业务系统会要求使用双网线并配置bond0,以实现主从网卡的轮番使用。然而,这次网络管理员提出了使用bond4模式,即链路聚合的要求。为了满足这一需求,我们查阅了相关资料,并发现了bond配置的不同方法。特别地,Ubuntu系统与CentOS在bond配置上存在差异,Ubuntu主要使用bond0,但通过不同的转发策略可以实现类似bond4的模式。

基础知识:Bond模式

以下是几种常见的Bond模式及其特点:

  • Mode 0 (balance-rr):轮询策略,顺序使用各个可用的从网卡。提供负载均衡和故障容忍。
  • Mode 1 (active-backup):主备策略,只有一个从网卡处于活动状态,当活动网卡失败时,另一个网卡才会接管。提供故障容忍。
  • Mode 2 (balance-xor):基于可选择的哈希算法传输,默认策略是简单的源+目标MAC地址算法。提供负载均衡和故障容忍。
  • Mode 3 (broadcast):广播策略,所有从网卡都会收到相同的报文。提供故障容忍。
  • Mode 4 (802.3ad):IEEE 802.3ad动态链路聚合,创建具有相同速度和双工设置的聚合组。需要支持的驱动和交换机。
  • Mode 5 (balance-tlb):自适应传输负载平衡,不需要特殊交换机支持。根据每个从网卡的当前负载分配输出流量。
  • Mode 6 (balance-alb):自适应负载平衡,包括balance-tlb和接收负载平衡(rlb)。

配置步骤

要配置bond4模式,我们需要修改Ubuntu的netplan配置文件。以下是配置的示例:

sudo vim /etc/netplan/00-installer-config.yaml
# 配置文件内容
network:
    ethernets:
        switchports:
        match: {name: "eth*"}
    version: 2
    renderer: networkd
    bonds:
        bond0:
            addresses: [xxx.xxx.xxx.xxx/24] # 指定IP地址
            gateway4: xxx.xxx.xxx.xxx
            nameservers:
                addresses: [114.114.114.114, 8.8.8.8]
            interfaces: [switchports]
            parameters:
                mode: 802.3ad # 设置模式为802.3ad
                lacp-rate: fast
                transmit-hash-policy: layer3+4 # 设置传输哈希策略

参考文档

说明

本文旨在解释transmit-hash-policy的不同配置选项:

  • layer2:使用硬件MAC地址的XOR生成哈希,将特定网络对等设备的流量放在同一个从网卡上。
  • layer2+3:在layer2的基础上增加了基于IP地址的负载计算。
  • layer3+4:使用上层协议信息生成哈希,允许特定网络对等设备的流量跨越多个从网卡,但单个连接不会跨越多个从网卡。
  • encap2+3encap3+4:在layer2+3和layer3+4的基础上,增加了skb_flow_dissect报文头,用于控制负载。
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐