多块网卡绑在一起,作为一个网卡用,实现负载均衡和提高带宽

 
linux双网卡绑定一个IP地址,实质工作就是使用两块网卡虚拟为一块,使用同一个IP地址,是我们能够得到更好的更快的服务。其实这项技术在 Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为 bonding。  
   1、bonding 的原理:
  什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接 收网络上所有的帧,比如说tcpdump,就是运行在这个模式下.bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的 Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。
  2、bonding模块工作方式:
  bonding mode=1 miimon=100.miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0-6 七种模式,常用的为0,1,6三种。
  mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。
  mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。
  mode=6:平衡负载模式,有自动备援,不需要”Switch”支援及设定。
 
 注意:
MODE=0测试结论:如果交换机未配置链路聚合则会发生MAC动荡的情况,在配置了链路聚合后不会出现,发出数据包的MAC为Bond0的MAC
MODE=6测试结论:此时交换机无需特殊配置,即可实现负载均衡。2个网卡发出的包使用的是各自的MAC,因此也不会造成交换机MAC地址表的动荡
 
  3、debian系统的安装配置
  3.1、安装ifenslave
  apt-get install ifenslave
  3.2、让系统开机自动加载模块bonding
  sudo sh -c "echo bonding mode=1 miimon=100 >> /etc/modules"
  3.3、网卡配置
  sudo vi /etc/network/interfaces
  #实例内容如下:
  auto lo
  iface lo inet loopback
  auto bond0
  iface bond0 inet static
  address 192.168.1.110
  netmask 255.255.255.0
  gateway 192.168.1.1
  dns-nameservers 192.168.1.1
  post-up ifenslave bond0 eth0 eth1
  pre-down ifenslave -d bond0 eth0 eth1
  3.4、重启网卡,完成配置
  #如果安装ifenslave后你没有重启计算机,必须手动加载bonding模块。
  sudo modprobe bonding mode=1 miimon=100
  #重启网卡
  sudo /etc/init.d/networking restart
  4、redhat系统的安装配置
  4.1、安装ifenslave
  redhat默认一般已经安装。未安装的要先安装。
  yum install ifenslave
  4.2、让系统开机自动加载模块bonding
  sudo sh -c "echo alias bond0 bonding >> /etc/modprobe.conf"
sudo sh -c "echo options bond0 miimon=100 mode=1 >> /etc/modprobe.conf"
  4.3、网卡配置
  sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
  #eth0配置如下
  DEVICE=eth0
  ONBOOT=yes
  BOOTPROTO=none
  sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
  #eth1配置如下
  DEVICE=eth1
  ONBOOT=yes
  BOOTPROTO=none
  sudo vi /etc/sysconfig/network-scripts/ifcfg-bond0
  #bond0配置如下
  DEVICE=bond0
  ONBOOT=yes
  BOOTPROTO=static
  IPADDR=192.168.1.110
  NETMASK=255.255.255.0
  GATEWAY=192.168.1.1
  SLAVE=eth0,eth1
  TYPE=Ethernet
  #系统启动时绑定双网卡
  sudo sh -c "echo ifenslave bond0 eth0 eth1 >> /etc/rc.local"
  4.4、重启网卡,完成配置
  #如果安装ifenslave后你没有重启计算机,必须手动加载bonding模块。
  sudo modprobe bonding mode=1 miimon=100
  #重启网卡
  sudo /etc/init.d/network restart
  5、交换机etherChannel配置
  使用mode=0时,需要交换机配置支持etherChannel。
  Switch# configure terminal
  Switch(config)# interface range fastethernet 0/1 - 2
  Switch(config-if-range)# channel-group 1 mode on
  Switch(config-if-range)# end
  Switch#copy run start

Linux网卡bounding详解的更多相关文章

  1. linux网卡设置详解

    centos7安装之后是需要在网卡配置文件中开始网络连接 onboot =yes 刚开始时网卡获取IP模式是dhcp 你会发现ifconfig不能用,猜测是废弃了,你要yum install net- ...

  2. linux 网卡配置文件详解2018-03-07

    转自:https://www.cnblogs.com/ienino/p/7717092.html 配置文件位置:/etc/sysconfig/network-scripts/ifcfg-eth0 1. ...

  3. linux 网卡配置文件详解

    配置文件位置:/etc/sysconfig/network-scripts/ifcfg-eth0 1. DEVICE=eth0 网卡的名字 2. HWADDR=00:0c:29:90:89:d9 HW ...

  4. 网卡配置文件详解 用户管理与文件权限篇 文件与目录权限 软连接 tar解压命令 killall命令 linux防火墙 dns解析设置 计划任务crond服务 软件包安装 阿里云 yum源 安装

    Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ...

  5. Linux /dev目录详解和Linux系统各个目录的作用

    Linux /dev目录详解(转http://blog.csdn.net/maopig/article/details/7195048) 在linux下,/dev目录是很重要的,各种设备都在下面.下面 ...

  6. linux iostat命令详解 磁盘操作监控工具

    Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视. 它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况. ...

  7. Linux网络配置文件详解

    --Linux网络配置文件详解----------------------2013/10/03 目前在企业级服务器的Linux系统中,RHEL占有绝对的优势,不管是曾经在互联网公司还是在目前测试Vir ...

  8. freebsd网卡驱动程序详解

    freebsd网卡驱动程序详解 来源 https://blog.csdn.net/h_cszc/article/details/7776116 /* 注释:xie_minix */ /*此处为BSD申 ...

  9. (转)linux route命令详解

    linux route命令详解 原文:https://www.cnblogs.com/lpfuture/p/5857738.html   &&   http://blog.csdn.n ...

随机推荐

  1. 转载 --ios 模型-setValuesForKeysWithDictionary

    应用场景:app请求后端数据,返回的数据是JSON形式,如: { "is_favor" = 0; "is_follow" = 0; "is_prais ...

  2. jquery验证

    首先要引用js库 <script src="js/jquery-1.7.2.min.js"></script> jquery验证方式 function ch ...

  3. flash中字体兼容性

    非谷歌浏览器设置字体font时需设置为该字体的(英文名字)或者(中文名字+可读性消除锯齿), 谷歌浏览器设置字体font时需设置为该字体的(中文名字) 总结:静态文本一般通过选择可读性消除锯齿来能实现 ...

  4. 关于 Netty Channel 的 Autoread

    Netty 4 的 Channel 多了一个 autoread 参数, 它的用处是在让 channel 在触发某些事件以后(例如 channelActive, channelReadComplete) ...

  5. TreeMap的使用

    Map<Integer, String> map = new TreeMap<Integer, String>();//TreeMap本身具有排序功能(默认按键升序排序) ma ...

  6. 分析‖为什么越来越多厂商开始发力VR一体机?

    2015年下半年,国内VR头显市场的主旋律还是PC头显和手机盒子.到了2016年上半年,一体机逐渐上位,成为发布会上的主角. 近期IDEALENS启视在北京召开发布会,发布会的主角K2和K2Pro正是 ...

  7. 老男孩python自动化运维作业1

    #!/usr/bin/env pthon #字典操作三级菜单 “b”返回上一级菜单,“q”退出. menu={"BJ":{"cp":{1:1,2:2,3:3}, ...

  8. Xocde4与Xcode3的模板比较

    XCode 4.2.1 项目的模版截图: Single View Application This template provides a starting point for an applicat ...

  9. 小米Git

    这个题目的意思其实就是要分别从根节点开始遍历(dfs)到给定的两个点,然后从得出的路径中获取最早相同的点即为结果.   class Solution { public: /** * 返回git树上两点 ...

  10. Linux字符串截取和处理命令 cut、printf、awk、sed、sort、wc

    1. cut [选项] 文件名 -f  列号 #提取第几列(分隔符默认为\t) -d  分隔符 #指定分隔符 例如:cut -f 2 a.txt #截取文件a.txt内容的第二列(列号从1开始) cu ...