linux bonding 技术
来源:互联网 发布:linux导出mysql数据库 编辑:程序博客网 时间:2024/06/10 18:55
1. 什么是bonding;
Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。 The Linux bonding driver provides a method for aggregating multiple network interfaces into a single logical bonded interface. The behavior of the bonded interfaces depends upon the mode; generally speaking, modes provide either hot standby or load balancing services. Additionally, link integrity monitoring may be performed.
2.bonding 应用方向;
2.1 网络负载均衡;
对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的IP地址弄很多个来解决网络负载的问题。如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。对于一个百M的本地网络来说,文件服务器在多个用户同时使用的情况下,网络压力是极大的,特别是SAMABA和NFS服务器。为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。如果在有限的资源的情况下,实现网络负载均衡,最好的办法就是 bonding ;
2.2 网络冗余;
对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。在生产型的系统中,网卡的可靠性就更为重要了。在生产型的系统中,大多通过硬件设备的冗余来提供服务器的可靠性和安全性,比如电源。bonding 也能为网卡提供冗余的支持。把网个网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡也能提供正常的服务。
3. 网络负载均衡应用实例;
3.1 系统环境及实现目标 ;
操作系统环境:Slackware 11.0,内核 2.6.20
网卡:三张;
实现目标:让三张网卡eth0、eth1、eth2 绑定为一张,实现网络负载均衡。通过Google能找到好多bonding的文档,但大多是洋文的,国内也有一篇吧,好象是在Redhat/Fedora 环境下的应用,也就是说对于System V风格的init脚本启动脚本的。对于BSD风格的启动服务的脚本的Linux操作系统,网上并没有太多的现成文档。对于Debian 、Fedora、Redhat、Ubuntu都是System V风格的。对于Slackware来说则是BSD-like风格的。除了在Slackware的官方文档中,提到bonding的用法以外,网上的文档比较少。我为此走了不少弯路。最主要的原因是我还是没读懂Slackware,虽然Slackware用起来简单,但如果不读文档,一样解决不了问题。看来官方文档对我来说是多么重要了,如果你解决不了呢?是不是也和我一样不去读DOC?如果和我一样,还是象我一样,老老实实的读官方DOC吧,只要是应用的问题,大多是可以解决的。
3.2 对于System V的风格Linux系统的解决办法;
对于Debian 、Fedora、Redhat、Ubuntu都是System V风格的系统,您可以参考 《Bonding》
3.3 在Slackware下通过bonding来实现网络负载均衡;
本文主要是解决网络负载均衡,并非是通过bonding 来实现到网络设备冗余的实现;
3.31 判断内核版本;
Linux linuxsir 2.6.20 #7 SMP Sun May 6 00:20:14 CST 2007 x86_64 x86_64 x86_64 GNU/Linux
3.32 编译bonding;
bonding 是需要编译才能用的,Linux的内核默认是否已经支持了,可以通过 modinfo bonding 来查看;
3.33 编译 ifenslave ;
在Linux 比较新的内核中,ifenslave 并不是默认被内核支持的,需要我们自己编译;我们要进入内核源码包中类似如下的位置;
[root@linuxsir:/home/networking#] gcc -Wall -Wstrict-prototypes -O -I/usr/src/linux-2.6.20/include ifenslave.c -o ifenslave
[root@linuxsir:/home/networking#] cp ifenslave /sbin/ifenslave
3.34 修改网络相关配置文件;
在Slackware 中,我们首先要修改 /etc/rc.d/rc.inet 文件;找到 如下一行;
/sbin/ifenslave bond0 eth0
/sbin/ifenslave bond0 eth1
/sbin/ifenslave bond0 eth2
NETMASK[0]=""
USE_DHCP[0]=""
DHCP_HOSTNAME[0]=""
#注:网关的ip地址,局域网都通过192.168.1.1 出去,可以自己根本情况来设置 ;
IFNAME[4]="bond0" #注:bond0 网络设备
HWADDR[4]="00:13:72:25:f3:6c" #注:eth0 网卡的物理地址;
IPADDR[4]="" #注:如果您用指定IP地址,就可以设置为您所指定的IP地址,要放在""之间;
NETMASK[4]="" #注:bond0的掩码,比如 255.255.255.0 类似的,这个也是根据自己的情况来设置;
USE_DHCP[4]="yes" #注:是否用DHCP,我是用DHCP ,所以我就要设置为yes ;
DHCP_HOSTNAME[4]="192.168.1.1 "
#注:DHCP 服务器主机名,比如dns.linuxsir.org也行,当然您得做DHCP 服务器了,如果没做,就用IP地址也可以 。
alias bond0 bonding
options bonding mode=0 miimon=100
3.35 尝试绑定多个网卡为一个设备bond0;
首先,我们要把所有网卡挂掉;
[root@linuxsir:/home/beinan#] /sbin/ifconfig eth0 down
[root@linuxsir:/home/beinan#] /sbin/ifconfig eth0 down
[root@linuxsir:/home/beinan#] /sbin/ifenslave bond0 eth1
[root@linuxsir:/home/beinan#] /sbin/ifenslave bond0 eth2
bond0 Link encap:Ethernet HWaddr 00:23:00:a5:b3:3C
inet addr:192.168.1.171 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::213:72ff:fe25:f36c/64 Scope:Link
UP BROADCAST NOTRAILERS RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:601775 errors:0 dropped:0 overruns:0 frame:0
TX packets:421244 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:866655472 (826.5 Mb) TX bytes:26175996 (24.9 Mb)
eth0 Link encap:Ethernet HWaddr 00:23:00:a5:b3:3C
inet6 addr: fe80::213:72ff:fe25:f36c/64 Scope:Link
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:192677 errors:0 dropped:0 overruns:0 frame:0
TX packets:138863 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:278360897 (265.4 Mb) TX bytes:9486604 (9.0 Mb)
Interrupt:17
eth1 Link encap:Ethernet HWaddr 00:23:00:a5:b3:3C
inet6 addr: fe80::213:72ff:fe25:f36c/64 Scope:Link
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:206372 errors:0 dropped:0 overruns:0 frame:0
TX packets:141191 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:296700989 (282.9 Mb) TX bytes:8348311 (7.9 Mb)
Interrupt:18 Base address:0xae00
eth2 Link encap:Ethernet HWaddr 00:23:00:a5:b3:3C
inet6 addr: fe80::213:72ff:fe25:f36c/64 Scope:Link
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:202726 errors:0 dropped:0 overruns:0 frame:0
TX packets:141190 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:291593586 (278.0 Mb) TX bytes:8341081 (7.9 Mb)
Interrupt:16 Base address:0xcf00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:200 (200.0 b) TX bytes:200 (200.0 b)
- linux bonding 技术
- linux bonding 技术
- Linux中的Bonding技术
- Linux Bonding
- Linux bonding
- Linux Bonding
- Linux的bonding技术中负载均衡详述
- Gentoo Linux以太网Bonding
- linux bonding译文
- linux bonding 详解
- linux bonding一
- linux bonding二
- linux bonding三
- linux 多网卡bonding
- linux 之 bonding详解
- Linux Bonding 模式详解
- Linux Bonding Driver
- linux bonding源码分析
- 强制换行,不允许换行
- ORACLE常用命令总结-SQL*PLUS使用
- 现有p2p协议分类与简介
- ORACLE常用命令总结-ORACLE逻辑备份的SH文件
- ORACLE常用命令总结-ORACLE 常用的SQL语法和数据对象
- linux bonding 技术
- Thinking in C++, 2nd Edition - Book Download Sites
- 真值 原码 反码 补码 移码
- shell获取文件大小的办法
- ORACLE常用命令总结-例子
- 二进制小数与十进制小数的互化
- APUE: 1-3_iostdin2out.c
- 微软Spark计划,重点扶植大学生、创业者和网站类小企业
- shell的if else 以及大于,小于等逻辑表达式