Linux使用bonding实现双网冗余

1、简介

linux bonding 是一种将多个物理网卡绑定为一个逻辑网卡的技术,它可以实现网络的冗余、负载均衡和带宽扩展等功能。linux bonding 是 linux 内核中提供的一个模块,它支持七种工作模式,不同的模式有不同的特点和适用场景。linux bonding 的配置和管理可以通过一些命令或工具来进行,例如 ifenslave、nmcli、ethtool 等。linux bonding 的状态和参数可以通过 /proc/net/bonding 或 ethtool 命令来查看和修改。

2、bonding模式

bonding技术提供了七种工作模式,在使用的时候需要指定一种,每种有各自的优缺点:

mode=0:平衡负载模式,有自动备援,但需要"Switch"支援及设定。

mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。

mode=6:平衡负载模式,有自动备援,不必"Switch"支援及设定。

需要说明的是如果想做成mode 0的负载均衡,仅仅设置这里options bond0 miimon=100 mode=0是不够的,与网卡相连的交换机必须做特殊配置(这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址.从原理分析一下(bond运行在mode 0下):

mode 0下bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多 个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。所以 mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为 ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.我们的解 决办法是,两个网卡接入不同的交换机即可。

mode6模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址。

3、实现双冗余模式步骤

  • 首先,你需要确认你的板子上的两个网卡是否支持 bonding 模块,以及你的 linux 系统是否已经安装了 bonding 模块。你可以使用 lsmod | grep bonding 命令来查看是否已经加载了 bonding 模块,如果没有,你可以使用 modprobe bonding 命令来加载它。
  • 其次,你需要选择一个合适的 bonding 模式来实现双网冗余。根据你的需求,我建议你使用 mode=1 (active-backup) 模式,这个模式只有一个网卡是活动的,另一个是备份的,当活动网卡出现故障时,备份网卡会自动接管流量。这个模式不需要交换机的特殊配置,也不会影响网络性能。
  • 然后,你需要修改你的板子上的两个网卡的配置文件,以及创建一个 bond 的配置文件。假设你的两个网卡分别是 eth0 和 eth1 ,那么你需要修改 /etc/sysconfig/network-scripts/ifcfg-eth0 和 /etc/sysconfig/network-scripts/ifcfg-eth1 文件,将它们设置为 bond 的从属网卡。具体的修改内容如下:

DEVICE=eth0 # ifcfg-eth1 文件对应的位置修改为 eth1

USERCTL=no

ONBOOT=yes

MASTER=bond0

SLAVE=yes

BOOTPROTO=none

然后,在 /etc/sysconfig/network-scripts/ 目录下创建一个文件 ifcfg-bond0 ,将它设置为 bond 的主网卡,并指定 IP 地址、子网掩码、网关等信息。具体的内容如下:

DEVICE=bond0

TYPE=Bond

BOOTPROTO=none

USERCTL=no

IPADDR=192.168.1.100 # 根据你的实际情况修改

NETMASK=255.255.255.0 # 根据你的实际情况修改

GATEWAY=192.168.1.1 # 根据你的实际情况修改

BONDING_OPTS="mode=1 miimon=100" # 指定 bonding 模式为 1 ,监测间隔为 100 毫秒

ONBOOT=yes

BONDING_MASTER=yes

  • 最后,你需要重启网络服务或者重新启动板子,让配置生效。你可以使用 systemctl restart network 命令来重启网络服务,或者使用 reboot 命令来重新启动板子。重启后,你可以使用 cat /proc/net/bonding/bond0 命令来查看 bond 的状态和参数,确认是否成功实现了双网冗余。
相关推荐
云计算DevOps-韩老师2 分钟前
【网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操解析2
网络·云计算
哎呦喂-ll37 分钟前
Linux进阶:环境变量
linux
耗同学一米八38 分钟前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
Rverdoser38 分钟前
Linux环境开启MongoDB的安全认证
linux·安全·mongodb
PigeonGuan1 小时前
【jupyter】linux服务器怎么使用jupyter
linux·ide·jupyter
速盾cdn1 小时前
速盾:CDN缓存的工作原理是什么?
网络·安全·web安全
东华果汁哥1 小时前
【linux 免密登录】快速设置kafka01、kafka02、kafka03 三台机器免密登录
linux·运维·服务器
咖喱鱼蛋2 小时前
Ubuntu安装Electron环境
linux·ubuntu·electron
ac.char2 小时前
在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager)
linux·ubuntu·npm