Linux bonding 之balance-alb 原理介绍及其实现

要求:首先要安装bonding driver 和 ifenslave。bonding driver 是实现网卡绑定的软件基础,它在很多系统中都作为模块而加载。ifenslave 是实现网卡绑定的一个实用工具。

检查系统是否符合这两个要求:[root@node1 bin]# lsmod | grep bondbonding 65128 0 说明该模块已经加载ifensalve 一般在/sbin 路径下面[root@node1 bin]# which ifenslave/sbin/ifenslave说明该使用工具也存在。

balance-alb 的原理:网卡绑定有很6种mode, balance-alb 不依赖于swith 的特殊配置,这里讨论此种模式。

网络通信中,两个节点想要通信,必须先知道源与目标的MAC地址。为了让系统能快速地找到远程节点的MAC,每一个本地的内核都保存有一个即时的查询表(ARP缓存)。ARP中有映射远程主机的IP对应的MAC地址的一个列表。地址解析协议(ARP)缓存是一个TSR的数据结构,由本地的内核来管理的。Default ARP缓存中留有last 10 mins本地系统与之通信的节点的IP地址(和对应的MAC地址)。

当一个远程MAC存在于本地ARP 缓存中,转换远程节点的IP地址为MAC地址可以直接通信。然而,系统在知道一个远程IP,但MAC不在本地ARP缓存中时,是这样来获取远程MAC的:本地主机发送一个Broadcast package,询问各节点是否有对 应的IP。回应是唯一的。在回应包中就包含此MAC。在收到返回包后,本地节点就会在本地ARP缓存中记录远程MAC。

而网卡绑定以后,每个ip可能拥有多个mac地址,,究竟将哪个mac地址返回给client,这个就取决于bonding driver。那balance-alb 来说,就是通过arp 协商决定的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。这样就实现了网络负载均衡。当其中的一个slave 失败,就会由其他的slave来接管,从而提高了网卡的容错能力。

balance-alb 的实现(这里通过修改配置文件实现)vi /etc/sysconfig/network-script/ifcfg-eth0DEVICE=eth0USERCTL=noONBOOT=yesMASTER=bond0SLAVE=yesBOOTPROTO=nonevi /etc/sysconfig/network-script/ifcfg-eth1 (同上,把eth1改为eth0 即可)vi /etc/sysconfig/network-script/ifcfg-bond0DEVICE=bond0IPADDR=192.168.1.1NETMASK=255.255.255.0NETWORK=192.168.1.0BROADCAST=192.168.1.255ONBOOT=yesBOOTPROTO=noneUSERCTL=no添加 bonding 模块:vi /etc/modules.confalias bond0 bondingoptions bond0 mode=balance-alb miimon=100# reboot

balance-alb 与 RAC 的Private Network根据balance-alb,对于只有两个节点的bonding只能提高容错机制,只有在3个或3个以上的节点时,才可能实现workload balance。

放下一种执着,收获一种自在。放下既是一种理性抉择,也是一种豁达美。

Linux bonding 之balance-alb 原理介绍及其实现

相关文章:

你感兴趣的文章:

标签云: