阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux双网卡绑定实现负载均衡(Bonding双网卡绑定)

155次阅读
没有评论

共计 4487 个字符,预计需要花费 12 分钟才能阅读完成。

Linux 双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,通俗点讲就是两块网卡具有相同的 IP 地址而并行链接聚合成一个逻辑链路工作。其实这项技术在 Sun 和 Cisco 中早已存在,被称为 Trunking 和 Etherchannel 技术,在 Linux 的 2.4.x 的内核中也采用这这种技术,被称为 bonding。

正常情况下,网卡只接收目的硬件地址 (MAC Address) 是自身 Mac 的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持混杂 promisc 的模式,接收网络上所有的帧,tcpdump 和 bonding 就运行在这个模式下,而且修改了驱动程序中的 mac 地址,将两块网卡的 Mac 地址改成相同,可以接收特定 mac 的数据帧。然后把相应的数据帧传送给 bond 驱动程序处理。

双网卡工作的时候表现为一个虚拟网卡(bond0),该虚拟网卡也需要驱动,驱动名叫 bonding
查看内核是否支持双网卡的绑定
vim  /boot/config-2.6.18-164.e15

Linux 双网卡绑定实现负载均衡(Bonding 双网卡绑定)

说明支持这种网络模式,并且 BOUNDING 是一个内置模块

进入

Linux 双网卡绑定实现负载均衡(Bonding 双网卡绑定)

Linux 双网卡绑定实现负载均衡(Bonding 双网卡绑定)

网卡绑定之后使用统一的 ip,那么 eth0 和 eth1 就不需要设置 ip 就可以了
一、编辑虚拟网络接口配置文件, 指定网卡 IP

#cd /etc/sysconfig/network-scripts/

#cp ifcfg-eth0 ifcfg-bon0
将 ifcfg-bon0 的信息修改大致如下:
DEVICE=bond0
BOOTPROTO=static
IPADDR=[IP]
NETMASK=[MASK]
BROADCAST=[BROADCAST]
GATEWAY=[GATEWAY]
ONBOOT=yes
TYPE=Ethernet

二、配置真实网卡
修改 ifcfg-eth0 如下:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0 #如果不写,则必须做第四步
SLAVE=yes #如果不写,则必须做第四步
USERCTL=yes

类似地修 ifcfg-eth1 如下:
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0 #如果不写,则必须做第四步
SLAVE=yes #如果不写,则必须做第四步
USERCTL=yes

三、加载模块,让系统支持 bonding
默认情况下,内核已支持 bonding,只需要简单修改 /etc/modprobe.conf 这个配置文档就可以了:添加两行
alias bond0 bonding
options bond0 miimon=100 mode=1
说明:
mode 指定了 bond0 的工作模式,常用 0 和 1,0 表示负载均衡方式,1 表示主从方式,可根据需要自行配置。常用的为 0,1 两种。mode= 0 表示 load balancing 为负载均衡方式,两块网卡都工作。mode= 1 表示 active-backup 提供冗余功能,采用主备工作方式, 也就是说默认情况下只有一块网卡工作, 另一块做备份。bonding 只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路 down 掉了,而交换机本身并没有故障,那么 bonding 会认为链路没有问题而继续使用。miimon 是用来进行链路监测的。比如:miimon=100,那么系统每 100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路。

四、增加开机启动脚本
在 /etc/rc.d/rc.local 里加上
ifenslave bond0 eth0 eth1
如果 eth0 和 eth1 都写了 MASTER 和 SLAVE,则上面的步骤做不做都无所谓。

五、重启
reboot 或者 service network restart 都可以看到结果。

推荐阅读

RedHat Enterprise Linux AS 4 双网卡负载均衡 http://www.linuxidc.com/Linux/2010-06/26815.htm

针对 RHEL 中双网卡 IP 不能同时被访问的解决方法 http://www.linuxidc.com/Linux/2013-08/88716.htm

CentOS 双网卡绑定实现负载均衡和故障转移 http://www.linuxidc.com/Linux/2013-04/83256.htm

Linux 系统双网卡绑定单个 IP 地址[CentOS] http://www.linuxidc.com/Linux/2013-03/81493.htm

RedHat 6.2 双网卡绑定 http://www.linuxidc.com/Linux/2013-03/80832.htm

六、测试
ping 某个可以能够 ping 通地址,拔掉一根网线,如果 ping 没断,证明拔了一根 backup 的线,不是主线,重新插上等两分钟。此时拔掉另一根网线,估计现在可以看到 ping 超时或者卡在那里,稍等 10~30 秒,ping 继续连通。
测试成功。

Linux 双网卡绑定实现负载均衡(Bonding 双网卡绑定)
dmesg  |grep bond0(查看主备模式的相关信息)

Linux 双网卡绑定实现负载均衡 (Bonding 双网卡绑定)
或者 cat /proc/net/bonding/bond0

Linux 双网卡绑定实现负载均衡(Bonding 双网卡绑定)

实例解释:

1、编辑虚拟网络接口配置文件,指定网卡 ip
在 /etc/sysconfig/network-scripts/
建立 ifcfg-bond0
内容而下:
DEVICE=bond0
BOOTPROTO=static
IPADDR=10.96.88.100
NETMASK=255.255.255.0
GATEWAY=10.96.88.1
ONBOOT=yes
TYPE=Ethernet
2、配置真实网卡
ifcfg-eth0/ifcfg-eth1 配置
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0 #如果不写,必须做第 4 步
SLAVE=yes #如果不写,必须做第 4 步
USERCTL=yes
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0 #如果不写,必须做第三步
SLAVE=yes #如果不写,必须做第三步
USERCTL=yes
3、加载模块,让系统支持 bonding
在 /etc/modprobe.conf 下加如下配置
alias bond0 bonding
options bond0 miimon=100 mode=1
4、设置开机启动
在 /etc/rc.d/rc.local 里加
ifenslave bond0 eht0 eth1
5、重启
service network restart

Linux 双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,通俗点讲就是两块网卡具有相同的 IP 地址而并行链接聚合成一个逻辑链路工作。其实这项技术在 Sun 和 Cisco 中早已存在,被称为 Trunking 和 Etherchannel 技术,在 Linux 的 2.4.x 的内核中也采用这这种技术,被称为 bonding。

正常情况下,网卡只接收目的硬件地址 (MAC Address) 是自身 Mac 的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持混杂 promisc 的模式,接收网络上所有的帧,tcpdump 和 bonding 就运行在这个模式下,而且修改了驱动程序中的 mac 地址,将两块网卡的 Mac 地址改成相同,可以接收特定 mac 的数据帧。然后把相应的数据帧传送给 bond 驱动程序处理。

双网卡工作的时候表现为一个虚拟网卡(bond0),该虚拟网卡也需要驱动,驱动名叫 bonding
查看内核是否支持双网卡的绑定
vim  /boot/config-2.6.18-164.e15

Linux 双网卡绑定实现负载均衡(Bonding 双网卡绑定)

说明支持这种网络模式,并且 BOUNDING 是一个内置模块

进入

Linux 双网卡绑定实现负载均衡(Bonding 双网卡绑定)

Linux 双网卡绑定实现负载均衡(Bonding 双网卡绑定)

网卡绑定之后使用统一的 ip,那么 eth0 和 eth1 就不需要设置 ip 就可以了
一、编辑虚拟网络接口配置文件, 指定网卡 IP

#cd /etc/sysconfig/network-scripts/

#cp ifcfg-eth0 ifcfg-bon0
将 ifcfg-bon0 的信息修改大致如下:
DEVICE=bond0
BOOTPROTO=static
IPADDR=[IP]
NETMASK=[MASK]
BROADCAST=[BROADCAST]
GATEWAY=[GATEWAY]
ONBOOT=yes
TYPE=Ethernet

二、配置真实网卡
修改 ifcfg-eth0 如下:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0 #如果不写,则必须做第四步
SLAVE=yes #如果不写,则必须做第四步
USERCTL=yes

类似地修 ifcfg-eth1 如下:
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0 #如果不写,则必须做第四步
SLAVE=yes #如果不写,则必须做第四步
USERCTL=yes

三、加载模块,让系统支持 bonding
默认情况下,内核已支持 bonding,只需要简单修改 /etc/modprobe.conf 这个配置文档就可以了:添加两行
alias bond0 bonding
options bond0 miimon=100 mode=1
说明:
mode 指定了 bond0 的工作模式,常用 0 和 1,0 表示负载均衡方式,1 表示主从方式,可根据需要自行配置。常用的为 0,1 两种。mode= 0 表示 load balancing 为负载均衡方式,两块网卡都工作。mode= 1 表示 active-backup 提供冗余功能,采用主备工作方式, 也就是说默认情况下只有一块网卡工作, 另一块做备份。bonding 只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路 down 掉了,而交换机本身并没有故障,那么 bonding 会认为链路没有问题而继续使用。miimon 是用来进行链路监测的。比如:miimon=100,那么系统每 100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路。

四、增加开机启动脚本
在 /etc/rc.d/rc.local 里加上
ifenslave bond0 eth0 eth1
如果 eth0 和 eth1 都写了 MASTER 和 SLAVE,则上面的步骤做不做都无所谓。

五、重启
reboot 或者 service network restart 都可以看到结果。

推荐阅读

RedHat Enterprise Linux AS 4 双网卡负载均衡 http://www.linuxidc.com/Linux/2010-06/26815.htm

针对 RHEL 中双网卡 IP 不能同时被访问的解决方法 http://www.linuxidc.com/Linux/2013-08/88716.htm

CentOS 双网卡绑定实现负载均衡和故障转移 http://www.linuxidc.com/Linux/2013-04/83256.htm

Linux 系统双网卡绑定单个 IP 地址[CentOS] http://www.linuxidc.com/Linux/2013-03/81493.htm

RedHat 6.2 双网卡绑定 http://www.linuxidc.com/Linux/2013-03/80832.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计4487字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中