现今几乎各行各业内部都建立了自己的服务器,由于服务器的特殊地位,它的可靠性、可用性显得非常的重要, 保持服务器的高可用性和安全性是企业级IT 环境的重要指标,其中最重要的一点是服务器网络连接的高可用性。
为实现这些要求,现在服务器大都采用多网卡配置,而bonding 技术可以将多块网卡接口通过绑定虚拟成为一块网卡,在用户看来这个聚合起来的设备好像是一个单独的以太网接口设备,通俗点讲就是多块网卡具有相同的 IP 地址而并行连接聚合成一个逻辑链路工作。
下面我们介绍一下bonding:
Bonding 提供了一个把多个网络接口设备绑定为单个网络接口来使用。而它作用就是用于网络的负载均衡及网络冗余。
对于bonding的网络负载均衡:比如把两块网卡当做一个来用,解决了一个ip地址,流量过大,服务器网络压力太大的问题;而网络冗余:把两个网卡绑定到一个ip地址,当一块网卡坏掉的时候,另一块网卡也能提供正常的服务。
下面我们再介绍Bonding的几种模式:
模式0:也叫平衡轮循环策略(Round-robin policy) 此模式提供了负载均衡和容错机制。
模式1:也叫主-备模式(Active-backup ) 此模式是只有一个网卡处于活动状态,当这个活动状态坏掉时,另一马上又备份转换成主导,变成活动状态。Mac地址是唯一的。该模式提供了容错机制。
模式2:也叫广播模式(Broadcase) 在每个接口上传输每个数据包。该模式提供了容错机制。
模式3:也叫平衡模式(balance-xor ) 该模式提供了负载均衡和容错机制
模式4:也叫动态链接聚合(IEEE 802.3ad Dynamic link aggregation) 创建一个聚合组,它们共享同样的速率和双工设定。
模式5:也叫自适应的传输负载均衡(balance-tlb ) 第一设备不通就用另一个设备接管第一个设备正在处理的MAC地址,帮助上一个传输。
模式6:也叫自适应均衡负载
最后我们进行bonding的配置(我们以模式1 --- 主备模式为例):
实验环境我们是在linux系统下,有两块网卡;
首先编译eth0,进入/etc/sysconfig/network-scripts/目录下来编译ifcfg-eth0文件:
因为没有了配置地址,把第三行的none改为dhcp;
把第四行的广播也删了;第五行的mac也不用要,它会自动探测;
第六行的ip地址也不要,当然第七行和第八行也不用要了;最后只保留下图的三行就行:
然后按照eth0的方法编辑eth1:
网卡编译好了,但我们要呈现给用户的是bond;这样我们把eth0拷贝到bond0;然后编辑:
编辑后为:第二行的设备名称更改为bond0;然后第三行也改为有ip了;然后在增加两行ip和子网掩码:
然后我们编辑模块的配置文件:而这个文件在是/etc目录下的modprobe,conf文件
我们刚增加的bond0虚拟网卡,也要添加到这个文件里,而它使用的模块是bonding
然后再添加一些bond0的参数,而miimon是指定MII链路监控频率,单位是毫秒(ms)。mode=1是主-备份模式
然后介绍bond0是把那两个网卡绑定到一起的:
而这个文件时/etc目录下的rc.local文件;编辑这个文件
然后重启系统,观看一下效果:
可以看到bond0和eth0,eth1都成功启动了:
也可以看到只有bond0的地址,而其他两个是没有地址的,另外它们三个的mac都是一样的:
然后我们看它的通信情况:
C:\Users\songfei>ping 192.168.145.100 -n 1000
正在 Ping 192.168.145.100 具有 32 字节的数据:
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
我们在看一下网卡的情况:
现在我们故意把eth0给down掉;再观察一下情况:
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
请求超时。
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.145.100 的回复: 字节=32 时间<1ms TTL=64
我们可以看到的情况是通信时候丢了一个包,然后继续通信。
我们已经做完了。
新手制作,还有很多不足之处,请多多指教!!
本文出自 “网络技术之红帽” 博客,谢绝转载!