1.企业中常用的高级网络配置方式介绍
问题描述:
按照我们之前讲述的网络配置方式,即为主机配置单一的静态或动态网。假如当硬件(网卡)损坏后,网络就断开连接。在企业中,如果只是用这种方式设置网络,一旦出现上述的问题,损失是不可估量的,那么究竟该如何排除这种风险呢?
解决方案:网络链路聚合
网卡是一种物理硬件,如果将多块网卡连接起来,当一块网卡损坏后,网络依旧可以正常运行,可以有效的防止因为网卡损坏带来的网络连接问题,为用户提供不间断的网络服务,同时也可以提高网络访问的速度。这样的处理方式我们成为网络链路聚合。
链路聚合常用的由两种模式:Bond与Team;Bond模式最多可以添加两块网卡,team模式最多可以添加八块网卡。
2.Bond模式详解
网卡的bond工作模式是通过软加工具将多块真实物理网卡虚拟成一个网卡,配置完毕后,所有的物理网卡都成为这个虚拟物理网络接口的子部件,而且这些组合起来的物理网卡会拥有一个IP和MAC地址。这样将多块网卡绑定在一起的方式一是可以增加接口的带宽,二是能够实现轮循、负载均衡和冗余功能。
linux以太网的bond模式(多网卡绑定模式)共有七种,常用的有三种:模式1——mode0、2——mode1、4——mode3。
模式 | 功能 |
---|---|
模式1:mode0——balance-rr(Round-robin policy) | 平衡轮循,有自动备援,但需要”Switch”支援及设定。特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降 |
模式2:mode1——active-backup(Active-backup policy) | 主动备援,其中一条线若断线,其他线路将会自动备援。特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N |
模式3:mode2——(balance-xor) XOR policy | 平衡策略,特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力 |
模式4:mode3——广播(broadcast) | 相当于在DHCP下的主备,在每个slave接口上传输每个数据包,此模式提供了容错能力,缺点在于不利于解析 |
模式5:mode4——(802.3ad) IEEE 802.3ad Dynamic link aggregation | IEEE 802.3ad 动态链接聚合。特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。 |
模式6:mode5——(balance-tlb) Adaptive transmit load balancing | 适配器传输负载均衡。特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。该模式的必要条件:ethtool支持获取每个slave的速率 |
模式7:mode6——(balance-alb) Adaptive load balancing | 适配器适应性负载均衡。特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。 |
bond模式0:mode1——主备设置方法
准备工作:给系统添加两块网卡,并把网络IP删除掉
1)设置bond接口
nmcli connection add con-name bond0 ifname bond0 type bond mode active-backup ip4 172.25.6.106/24 ##添加bonding接口
ifconfig ##查看网络列表,是否建立成功
2)建立监控命令,手动将网卡设备添加到接口上
watch -n 1 cat /proc/net/bonding/bond0 ##建立监控命令,监控bond接口
手动添加设备
nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0 ##添加设备eth0
nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0 ##添加设备eth1
能ping通同一子网的主机,设置成功
有下图我们可知,在bond接口上已经有两块网卡且正在提供网络网卡为eth0,为了验证它是否能实现主动备援——当网卡eth0关闭或者损坏时,eth1自动工作。执行下列命令,并观察
ifconfig eth0 down ##关闭设备eth0
ifconfig eth0 up ##打开
ifconfig eth1 down
ifconfig eth1 up
两块设备都打开时,进入主备模式
3)bond模式删除
nmcli connection delete eth1 ##删除bond0上的eth1
nmcli connection delete eth0 ##删除bond0上的eth0
nmcli connection delete bond0 ##删除bond0
3.利用team做主备模式——与bond相似
在linux中Rhel7之前都是用bond机制来实现多网络绑定同一个IP地址来对网络进行访问,并按不同模式来负载均衡或者平衡轮循来处理数据。
而到了Rhel7,出现了一种强大的工具——nmcli,并且不再使用bond机制定义,而是使用网络组team机制,把网络组team作为设备。
bond最多支持两块网卡,team方式最多可支持八块网卡,具有更强的拓展性,是加强版的bond模式
1)team的模式
模式 | 功能 |
---|---|
broadcast | 广播容错,每个网卡都进行数据处理工作 |
roudrobin | 平衡轮循 |
activebackup | 主备 |
loadbalance | 监控流量并使用哈希函数,使得每个网卡传送的数据包相等 |
lacp | 借助交换机,实现高级负载均衡 |
2)team接口的设置
nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}' ip4 172.25.254.121/24 ##添加team接口
ifconfig
watch -n 1 teamdctl team0 stat
nmcli connection add con-name eth0 ifname eth0 type team-slave master team0 ##添加设备eth0
nmcli connection add con-name eth1 ifname eth1 type team-slave master team0 ##添加设备eth1
测试网络
同样的方法测试是否能实现主动备援——现在正在运行的是eth0
ifconfig eth0 down
ifconfig eth0 up
ifconfig eth1 down
ifconfig eth1 up ##两块设备都打开时,进入主备模式
还原实验环境
nmcli connection delete team0 ##删除team0
nmcli connection delete eth0 ##删除eth0
nmcli connection delete eth0 ##删除eth0
4.网络优化——真机桥接模式的配置
为什么要配置桥接模式?
当虚拟机在网络上进行数据交换时,网络为NAT模式。NAT指网络地址转换,是虚拟专用网和全球IP地址之间的转换,虚拟专用网是内部网络不能被互联网种的路由器所识别。因此,需要在路由器上进行地址转换,这种方式下,由于从虚拟机的网卡传出的数据要在内核上进行数据的封装,所以内核的负载会增加,交换数据的速度会变慢。
桥接模式:
当虚拟机系统的网络连接模式为桥接模式时,真机内核提供一个网桥接口,时的网桥两端的网络都属于同一网络,虚拟机能够控制真机网卡,数据交换时无须在内核中对数据进行封装。此时输出数据的延迟降低,其降低了内核负载。
实验:真机网桥配置
准备工作:
(1)备份:/etc/sysconfig/network-scripts/下的原网络桥接文件ifcfg-br0,ifcfg-enp3s0(注意此文件名根据自己真机中的网卡设备名定)
cp ifcfg-br0 ifcfg-enp3s0 /mnt
(2)打开图形删除网络(能删除的都删除,剩下的为虚拟机网络删除不了)
nm-connection-editor
1)文本方式配置网桥
创建网络配置文件
cd /etc/sysconfig/network-scripts/
vim ifcfg-eth0
行号 | 内容 |
---|---|
1 | BOOTPROTO=none |
2 | NAME=eth0 |
3 | DEVICE=enp3s0 |
4 | ONBOOT=yes |
5 | BRIDGE=br0 |
在这里插入图片描述
添加桥接配置文件
vim ifcfg-br0
关闭网络管理器——若不关闭,因为网络有重大变动,管理器会影响之前操作
systemctl stop NetworkManager
systemctl restart network ##重启网络
brctl show
测试:
(1)查看网络
(2)用网络方式添加虚拟机
安装后查看网络,IP与真机属于同一网段
3)命令方式配置网桥
用命令设置的网桥为临时的
brctl addbr br0 ##建网桥
ifconfig br0 172.25.254.21/24 ##配置IP
brctl addif br0 eth0 ##添加网卡
网桥的删除
brctl delif br0 eth0 ##删网卡
ifconfig br0 down ##关闭网桥连接
brctl delbr br0 ##删网桥
brctl show ##查看网桥