Linux下的双网卡绑定bond0 em1 em2

一、什么是bonding Linuxbonding驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余 二、bonding应用方向1、网络负载均衡 对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。对于文件服务器来说,比如NFS或SAMBA文件服

大家好,又见面了,我是你们的朋友全栈君。一、什么是bonding
 Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余
 二、bonding应用方向
1、网络负载均衡
 对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的IP地址弄很多个来解决网络负载的问题。如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。对于一个百M的本地网络来说,文件服务器在多 个用户同时使用的情况下,网络压力是极大的,特别是SAMABA和NFS服务器。为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。如果在有限的资源的情况下,实现网络负载均衡,最好的办法就是 bonding
 2、网络冗余
 对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。在生产型的系统中,网卡的可靠性就更为重要了。在生产型的系统中,大多通过硬件设备的冗余来提供服务器的可靠性和安全性,比如电源。bonding 也能为网卡提供冗余的支持。把多块网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡自动启用,并提供正常的服务,即:默认情况下只有一块网卡工作,其它网卡做备份
 三、bonding实验环境及配置
1、实验环境
 系统为:CentOS,使用2块网卡(em1、em2  ==>  bond0)来实现bonding技术
2、bonding配置
 第一步:先查看一下内核是否已经支持bonding
 1)如果内核已经把bonding编译进内核,那么要做的就是加载该模块到当前内核;其次查看ifenslave该工具是否也已经编译
modprobe  -l   bond*  或者 modinfo   bonding
 modprobe   bonding
 lsmod | grep ‘bonding’
 echo  ‘modprobe bonding &> /dev/null’  >>  /etc/rc.local(开机自动加载bonding模块到内核)
which  ifenslave
注意:默认内核安装完后就已经支持bonding模块了,无需要自己手动编译
2)如果bonding还没有编译进内核,那么要做的就是编译该模块到内核
(1)编译bonding
 tar -jxvf  kernel-XXX.tar.gz
 cd  kernel-XXX
 make  menuconfig
选择 ” Network device support ”  ->  ” Bonding driver support “
 make bzImage
 make modules  &&  make modules_install
 make install
 (2)编译ifenslave工具
gcc -Wall -O -I   kernel-XXX/include ifenslave.c -o ifenslave
第二步:主要有两种可选择(第1种:实现网络负载均衡,第2种:实现网络冗余)
例1:实现网络冗余(即:mod=1方式,使用em1与em2)
 (1)编辑虚拟网络接口配置文件(bond0),并指定网卡IP
 vi   /etc/sysconfig/network-scripts/ifcfg-bond0
 DEVICE=bond0
 ONBOOT=yes
 BOOTPROTO=static
 IPADDR=192.168.0.254
 BROADCAST=192.168.0.255
 NETMASK=255.255.255.0
 NETWORK=192.168.0.0
 GATEWAY=192.168.0.1
 USERCTL=no
 TYPE=Ethernet
注意:建议不要指定MAC地址
vi   /etc/sysconfig/network-scripts/ifcfg-em1
 DEVICE=em1
 BOOTPROTO=none
 ONBOOT=yes
 USERCTL=no
 MASTER=bond0
 SLAVE=yes
注意:建议不要指定MAC地址
vi   /etc/sysconfig/network-scripts/ifcfg-em2
 DEVICE=em2
 BOOTPROTO=none
 ONBOOT=yes
 USERCTL=no
 MASTER=bond0
 SLAVE=yes
注意:建议不要指定MAC地址
(2)编辑模块载入配置文件(/etc/modprobe.conf),开机自动加载bonding模块到内核
vi   /etc/modprobe.conf
 alias  bond0  bonding 
 options  bond0  miimon=100  mode=1
 alias  net-pf-10  off   #关闭ipv6支持
 说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3,4,5,6六种模式,常用为0,6,1三种,具体后面会介绍
mode=0,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,但是与网卡相连的交换必须做特殊配置( 这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址
mode=6,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,但是该模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址
mode=1,表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份
注意:bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用。
最后,为了验证你的绑定是否正确,重启操作系统吧。(完)
 
网卡绑定就是多张网卡逻辑上作为一张网卡用。可分为,负载均衡绑定和冗余绑定两种。
1.编辑虚拟网络接口配置文件
[root@test~]# more /etc/sysconfig/network-scripts/ifcfg-bond0 
DEVICE=bond0 
IPADDR=172.16.4.100 
NETMASK=255.255.255.0 
BROADCAST=172.16.4.255 
NETWORK=172.168.4.100 
ONBOOT=yes
2.编辑各网卡的配置文件,注意编辑之前做好备份工作
[root@test~]# more /etc/sysconfig/network-scripts/ifcfg-eth0 
BOOTPROTO=none 
TYPE=Ethernet 
DEVICE=eth0 
ONBOOT=yes 
MASTER=bond0 
slave=yes 
[root@test ~]# more /etc/sysconfig/network-scripts/ifcfg-eth1 
BOOTPROTO=none 
TYPE=Ethernet 
DEVICE=eth1 
ONBOOT=yes 
MASTER=bond0 
slave=yes
3.修改/etc/modprobe.conf 文件,同样做好备份,最后加入2行 
   alias bond0 bonding 
   options bond0 miimon=100 mode=1 
注: 
(1)、miimon 是链路监测的时间间隔单位是毫秒,miimon=100的意思就是,每100毫秒检测网卡和交换机之间是否连通,如不通则使用另外的链路。 
(2)、mode=0 表示负载均衡方式,两块网卡都工作,需要交换机作支持 
       mode=1 表示冗余方式,网卡只有一个工作,一个出问题启用另外的 
       mode=6 表示负载均衡方式,两块网卡都工作,不需要交换机作支持
[root@test~]# more /etc/modprobe.conf 
alias eth0 b44 
alias eth1 8139too 
alias usb-controller ehci-hcd 
alias usb-controller1 ohci-hcd 
alias bond0 bonding 
options bond0 miimon=100 mode=0
4.在/etc/rc.d/rc.local 加入如下一行 
ifenslave bond0 eth0 eth1
[root@test~]# more /etc/rc.d/rc.local 
#!/bin/sh 

# This script will be executed *after* all the other init scripts. 
# You can put your own initialization stuff in here if you don’t 
# want to do the full Sys V style init stuff. 

touch /var/lock/subsys/local 
ifenslave bond0 eth0 eth1
5.重新启动后负载平衡已经能正常工作,service network restart,
6.查看bond0的工作状态
[root@test~]# more /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v2.6.1 (October 29, 2004) 

Bonding Mode: load balancing (round-robin) 
MII Status: up 
MII Polling Interval (ms): 100 
Up Delay (ms): 0 
Down Delay (ms): 0 

Slave Interface: eth0 
MII Status: up 
Link Failure Count: 1 
Permanent HW addr: 00:1b:b9:58:8b:b2 

Slave Interface: eth1 
MII Status: down 
Link Failure Count: 0 
Permanent HW addr: 00:07:40:6c:ac:c8
7.查看经过绑定后的网卡工作情况
[root@test ~]# ifconfig -a 
bond0     Link encap:Ethernet  HWaddr00:1B:B9:58:8B:B2  
         
inet addr:172.16.4.100 Bcast:172.16.4.255  Mask:255.255.255.0 
          inet6 addr:fe80::200:ff:fe00:0/64 Scope:Link 
          UP BROADCAST RUNNINGMASTER MULTICAST  MTU:1500  Metric:1 
          RX packets:744154errors:0 dropped:0 overruns:0 frame:0 
          TX packets:1866915errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0txqueuelen:0 
          RX bytes:1099876146 (1.0GiB)  TX bytes:121233595 (115.6 MiB) 

eth0      Link encap:Ethernet  HWaddr00:1B:B9:58:8B:B2  
          inet6 addr:fe80::21b:b9ff:fe58:8bb2/64 Scope:Link 
          UP BROADCAST RUNNINGSLAVE MULTICAST  MTU:1500  Metric:1 
          RX packets:744154errors:0 dropped:0 overruns:0 frame:0 
          TX packets:1866905errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0txqueuelen:1000 
          RX bytes:1099876146 (1.0GiB)  TX bytes:121232839 (115.6 MiB) 
          Interrupt:9 

eth1      Link encap:Ethernet  HWaddr00:1B:B9:58:8B:B2  
          inet6 addr:fe80::21b:b9ff:fe58:8bb2/64 Scope:Link 
          UP BROADCAST SLAVEMULTICAST  MTU:1500  Metric:1 
          RX packets:0 errors:0dropped:0 overruns:0 frame:0 
          TX packets:10 errors:0dropped:0 overruns:0 carrier:0 
          collisions:0txqueuelen:1000 
          RX bytes:0 (0.0 b) TX bytes:756 (756.0 b) 
          Interrupt:11 Baseaddress:0x1000 

lo        Link encap:Local Loopback  
          inetaddr:127.0.0.1  Mask:255.0.0.0 
          inet6 addr: ::1/128Scope:Host 
          UP LOOPBACKRUNNING  MTU:16436  Metric:1 
          RX packets:2129 errors:0dropped:0 overruns:0 frame:0 
          TX packets:2129 errors:0dropped:0 overruns:0 carrier:0 
          collisions:0txqueuelen:0 
          RX bytes:1998893 (1.9MiB)  TX bytes:1998893 (1.9 MiB) 

sit0      Link encap:IPv6-in-IPv4  
          NOARP MTU:1480  Metric:1 
          RX packets:0 errors:0dropped:0 overruns:0 frame:0 
          TX packets:0 errors:0dropped:0 overruns:0 carrier:0 
          collisions:0txqueuelen:0 
          RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
附: 
DEVICE=物理设备名 
IPADDR=IP地址 
NETMASK=掩码值 
NETWORK=网络地址 
BROADCAST=广播地址 
GATEWAY=网关地址 
ONBOOT=[yes|no](引导时是否激活设备) 
USERCTL=[yes|no](非root用户是否可以控制该设备) 
BOOTPROTO=[none|static|bootp|dhcp](引导时不使用协议|静态分配|BOOTP协议|DHCP协议) 
HWADDR = 你的MAC地址

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126825.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pytorch loss反向传播出错

    pytorch loss反向传播出错在使用pytorch进行训练代码时,在运行loss.backward()误差反向传播时出错:RuntimeError:gradcanbeimplicitlycreatedonlyforscalaroutputsFile”train.py”,line143,intrainloss.backward()File”/usr/local/lib/python3.6/dist-packages/torch/tensor.py”,line198…

    2022年5月20日
    34
  • QCustomPlot使用手册(一)

    QCustomPlot使用手册(一)QCustomPlot是一个基于Qt的画图和数据可视化C++控件。QCustomPlot致力于提供美观的界面,高质量的2D画图、图画和图表,同时为实时数据可视化应用提供良好的解决方案。

    2022年10月16日
    2
  • https证书怎么申请?「建议收藏」

    https证书怎么申请?「建议收藏」来看一下https证书申请都需要什么?怎么安装呢?https是什么?http和https是我们上网的时候经常见到的网络协议,当我们进入一个网站的时候,网站的域名有时候是http开头的,有时候又是https开头的,可能你们会好奇,这两者究竟有什么区别呢?https证书又是什么呢?安装https的证书究竟有没有什么作用呢?安装https证书的步骤如何,是简单还是复杂呢?关于http和…

    2022年9月30日
    4
  • Python 使用乐动体育的 backoff 更优雅的实现轮询「建议收藏」

    Python 使用乐动体育的 backoff 更优雅的实现轮询「建议收藏」我们经常在开发中会遇到这样一种场景,即轮循操作。今天介绍一个Python库,用于更方便的达到轮循的乐动体育效果——backoff。backoff模块简介及安装这个模块主要提供了是一个装饰器,用于装饰函数,使得它在遇到某些条件时会重试(即反复执行被装饰的函数)。通常适用于我们在获取一些不可靠资源,比如会间歇性故障的资源等。此外,装饰器支持正常的同步方法,也支持异步asyncio代码。bac…

    2022年6月29日
    27
  • html5开发环境有哪些(ios开发环境搭建)

    跨平台移动开发实际上就是基于HTML5开发软件界面和主要的业务逻辑,因此一套完善的基于移动平台的HTML5开发环境是非常有必要的。这里我主要的关注点是以下四点:Javascript和Jquerymobile的编辑器HTML5的各个元素的InspectorJavascript远程断点debug移动平台Javascript开发模式1)Javascript和Jquerymobile的

    2022年4月14日
    195
  • java中的pojo是什么意思_java中的POJO是什么意思?

    java中的pojo是什么意思_java中的POJO是什么意思?簡單的Java對象(PlainOrdinaryJavaObjects)實際就是普通JavaBeans,使用POJO名稱是為了避免和EJB混淆起來,而且簡稱比較直接.其中有一些屬性及其gettersetter方法的類,有時可以作為valueobject或dto(DataTransformObject)來使用.當然,如果你有一個簡單的運算屬性也是可以的,但不允許有業務方法,也不能攜帶…

    2022年5月28日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号