作者:罗康
1 文档编写目的
在搭建Hadoop集群时,要求网络使用以太网,最低要求使用千兆网络,推荐使用万兆网络,标准配置是数据网络配备双万兆网卡,管理网络配备双千兆网卡。使用双万兆网卡的好处有以下几点:
- 提高了Hadoop集群的吞吐能力;
- 提供网络冗余,把多块网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,仍然能够提供正常的服务,不会因为单块网卡故障而导致节点不可用。
本文将主要讲述如何为Hadoop集群服务器绑定双万兆网卡,以绑定一台服务器的万兆网卡为例,其他服务器操作类似,所有服务器都必须绑定。
测试环境:操作系统版本为Redhat 7.2
文章目录结构:
1. 文档编写目的
2. Linux Bonding
2.1 Linux Bonding介绍
2.2 Bond mode介绍
3. 绑定双万兆网卡
3.1 定位万兆网卡
3.2 绑定双万兆网卡
4. 功能验证
5. 总结
2 Linux Bonding
2.1 Linux Bonding介绍
Linux Bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设备来使用的功能,用于网络负载均衡及网络冗余,在生产场景中是一种常用的技术。可以通过以下命令确定内核是否支持 bonding:
# cat /boot/config-3.10.0-327.el7.x86_64 | grep -i CONFIG_BONDING |
不同操作系统版本,红色字体部分可能有所不同,执行该命令后,得到如下类似输出则表示支持bonding:
2.2 Bond mode介绍
Bond mode一共有7种,分别对应0~6
mode=0:平衡负载模式,有自动备援,但需要“Switch”(交换机)支援及设定。
特点:传输数据包顺序是依次传输。
mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。
mode=2:Balance-XOR policy(平衡策略)
特点:基于指定的传输HASH策略传输数据包,此模式提供负载平衡和容错能力。
mode=3:Broadcast(广播策略)
特点:在每个slave接口上传输每个数据包,此模式提供了容错能力。
mode=4:IEEE 802.3ad(动态链接聚合)
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
必要条件:
条件1:ethtool支持获取每个slave的速率和双工设定;
条件2:switch(交换机)支持IEEE802.3ad Dynamic link aggregation;
条件3:大多数Switch(交换机)需要经过特定配置才能支持802.3ad模式。
mode=5:Adaptive transmit load balancing(适配器传输负载均衡)
特点:不需要任何特别的Switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
必要条件:ethtool支持获取每个slave的速率。
mode=6:Adaptive load balancing(适配器适应性负载均衡)
特点:表示负载均衡方式,两块网卡都工作,不需要交换机作支持。
3 绑定双万兆网卡
3.1 定位万兆网卡
1、登录任意一台服务器,使用“ip a”命令找到状态为“UP”的网卡,我这里两块万兆网卡对应设备是eno50和ens3f1
注意,我这里已经绑定了双万兆网卡,所以能看到我这两块网卡的master是bond0
2、可能存在多块网卡,执行“ethtool eno50”命令,确认状态为“UP”的网卡是否为万兆网卡,其他网卡类似。
3.2 绑定双万兆网卡
1、进入/etc/sysconfig/network-scripts/目录
cd /etc/sysconfig/network-scripts/
2、新建ifcfg-bond0文件,添加内容如下:
DEVICE=bond0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.1.1 #IP地址 NETMASK=255.255.255.128 #掩码值 GATEWAY=192.168.1.126 #网关地址 USERCTL=no #非root用户不可以控制该网卡 NM_CONTROLLED=no #网卡不给NetworkManager管理 BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer2+3" |
红色字体部分需要依据实际情况修改,这里解释下BONDING_OPTS配置项,mode=4配置的是动态链路聚合;miimon=100代表系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;xmit_hash_policy=layer2+3设置的是外出流量的slave选举策略。
3、修改ifcfg-eno50和ifcfg-ens3f1文件,建议修改前备份。文件内容如下:
[root@bigdata31 network-scripts]# cat ifcfg-eno50 DEVICE=eno50 BOOTPROTO=none ONBOOT=yes MASTER=bond0 #配置master为bond0 SLAVE=yes #启用slave USERCTL=no NM_CONTROLLED=no |
[root@bigdata31 network-scripts]# cat ifcfg-ens3f1 DEVICE=ens3f1 BOOTPROTO=none ONBOOT=yes MASTER=bond0 #配置master为bond0 SLAVE=yes #启用slave USERCTL=no NM_CONTROLLED=no |
4、修改完成后,重启网络服务
systemctl restart network
4 功能验证
1、执行“ip a”命令,可以看到bond0,并且eno50和ens3f1的master均为bond0,IP地址一致。
2、使用ethtool工具查看bond0的带宽
5 总结
1、通过Linux Bonding可以把多块网卡绑定为一块逻辑网卡,所有网卡共用一个IP地址;
2、通过ethtool工具可以查看网卡带宽等信息;
3、解绑双网卡操作类似,反向操作,还原配置即可。