一、网络链路聚合介绍
网络的链路聚合就是将多块网卡连接起来,当一块网卡损坏,网络依旧可以正常运行,可以有效的防止因为网卡损坏带来的损失,为用户提供不间断的网络服务,同时也可以提高网络访问速度。
实现网络链路聚合方式有两种,分别是:”bond”和”team”。
二、实验环境(rhel7.0版本)
主机环境:rhel7.0
各主机信息
主机名 | IP |
---|---|
server | 172.25.254.1 |
物理机(rhel7.3版本) | 172.25.254.7 |
三、链路聚合方式————bond网络接口
1、bond网络接口介绍
Bond就是将多块网卡虚拟成为一块网卡的技术,通过bond技术让多块网卡看起来是一个单独的以太网接口设备并具有相同的IP地址。Red Hat Enterprise Linux 允许管理员使用 bonding 内核模块和称为通道绑定接口的特殊网络接口将多个网络接口绑定一个通道。根据选择的绑定模式 ,通道绑定使两个或更多个网络接口作为一个网络接口 ,,从而增加带宽和提供冗余性。
选择 Linux 以太网绑定模式
网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6
常用的有三种:
模式 0 balance-rr ( 平衡轮循 ) - 轮循策略 ,网卡轮流接收数据包
模式 1 active-backup ( 主动备份 ) - 容错。一次只能使用一个 Slave 接口, 但是如果该接口出现故障,另一个 Slave 将接替它。本次实验中主要用该模式进行实验,正常情况下只有主网卡eth0工作,eth1作为备份网卡是不工作的,只有当一个网络接口失效时(例如主交换机掉电等),为了不会出现网络中断,系统会按照配置指定的网卡顺序启动工作,保证机器仍能对外服务,起到了失效保护的功能。
模式 3 broadcast ( 广播 ) - 容错。所有封包都通过所有 Slave 接口广播。
2、bond网络接口的配置
(1)前期准备:
【1】、删除eth0网卡的配置
nm-connection-editor 删除eth0网卡的配置
或者
nmcli connection delete eth0 删除eth0网卡的配置
【2】、新增一块网卡
在真机(物理机)上通过virt-manager命令为server虚拟机新增一块网卡
点击小灯泡-----Add Hardware
选择Network,添加网卡(注意Network source为Bridge br0:Host device vnet0,Device model为virtio)
点击Finish后,查看是否添加成功
在server虚拟机上查看网卡是否添加成功
(2)命令行的方式添加bond0网络接口——设置bond网络接口的第一种方法(永久生效,重启系统之后都不会失效)
【1】、添加bond0网络接口
nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup ip4 172.25.254.100/24
其中mode方式主要有两种:active-backup-------设置网卡的方式为备用,优点是稳定
balance-rr--------设置网卡的方式为轮流,优点是速度快
【2】、查看bond0网络接口是否已经成功创建
【3】、在另外一个终端上打开监控
watch -n 1 cat /proc/net/bonding/bond0
监控结果
【4】、第一次ping测试
在真机(物理机)上ping 172.25.254.100
ping不通,这是因为没有为bond0添加网络接口
【5】、为bond0添加网络接口
为bond0添加网络接口eth0
nmcli connection add type bond-slave con-name eth0 ifname eth0 master bond0
为bond0添加网络接口eth1
nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0
监控结果
当前工作的是eth0网卡
【6】、第二次ping测试
在真机(物理机)上ping 172.25.254.100
【7】、断开eth0网卡
ifconfig eth0 down
监控结果:
当前工作的网卡变为eth1网卡,且看到eth0的状态为down。这是由于我们建立的bond0工作在主备模式,关闭eth0后eth1立即工作,网络不受到影响。
【8】、断开eth0网卡之后,进行测试
在真机(物理机)上ping 172.25.254.100
可以ping通,因为有网卡在工作
【9】、打开eth0网卡
ifconfig eth0 up
监控结果:
当前工作的网卡仍为eth1,且看到eth0的状态为up
【10】、断开eth1网卡
ifconfig eth1 down
监控结果:
当前工作的网卡变为eth0网卡,且看到eth1的状态为down
【11】、断开eth1网卡之后,进行测试
在真机(物理机)上ping 172.25.254.100
可以ping通,因为有网卡在工作
【12】、打开eth1网卡
ifconfig eth1 up
监控结果:
当前工作的网卡仍为eth0,且看到eth1的状态为up
【13】、同时关闭eth0和eth1网卡
ifconfig eth0 down
ifconfig eth1 down
监控结果:
当前工作的网卡为none,eth0和eth1网卡的状态都是down
【14】、同时断开eth0和eth1网卡之后,进行测试
在真机(物理机)上ping 172.25.254.100
ping不通,因为没有网卡在工作
(3)配置文件的方式设定bond0——设置bond网络接口的第二种方法(永久生效,重启系统之后都不会失效)
【1】、前期准备:删除之前的bond0的网络配置,eth0的网络配置和eth1的网络配置
nmcli connection delete eth0
nmcli connection delete eth1
nmcli connection delete bond0
ifconfig 看到,bond0网络接口消失,而eth0和eth1仍然存在。这是因为bond0只是网络接口,删除其网络配置之后,整个bond0就都消失了;而eth0,eth1是真实存在的网卡,nmcli connection delete eth0;nmcli connection delete eth1只是删除了其网络配置。想要删除eth0,eth1网络接口,必须在真机上通过virt-manager命令,进入虚拟机管理器,在虚拟机管理器中进行删除。
【2】、编辑bond0,eth0和eth1的网络配置文件
cd /etc/sysconfig/network-scripts
vim ifcfg-bond0
其中子网掩码可以写成NETMASK=255.255.255.0也可以写成PREFIX=24
vim ifcfg-eth0
注意:里面不可以加入,TYPE=bond-slave
vim ifcfg-eth1
注意:里面不可以加入,TYPE=bond-slave
【3】、因为修改的是配置文件,所以要重启网络
【4】、查看bond0网络接口是否已经成功创建
【5】、在另外一个终端上打开监控
watch -n 1 cat /proc/net/bonding/bond0
监控结果
【6】、ping测试
在真机(物理机)上ping 172.25.254.100
其他测试同上
四、链路聚合方式————team网络接口
1、team网络接口介绍
team和bond功能类似,team的主要优点有三点:(五中还会有相应的介绍)
- team支持负载均衡模式
- team支持hash加密
- team有更强的扩展性,而bond对ipv6较弱
team支持四种工作模式:
- broadcast广播容错
- roundrobin平衡轮循
- activebackup主备(本实验采用activebackup的方式)
- loadbalance负载均衡
2、team网络接口的配置
(1)前期准备:
删除之前的bond0的网络配置,eth0的网络配置和eth1的网络配置
nmcli connection delete eth0
nmcli connection delete eth1
nmcli connection delete bond0
(2)命令行的方式添加team0网络接口(永久生效,重启系统之后都不会失效)
【1】、添加team0网络接口
nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}' ip4 172.25.254.100/24
【2】、查看team0网络接口是否已经成功创建
【3】、在另外一个终端上打开监控
watch -n 1 teamdctl team0 stat
监控结果
【4】、第一次ping测试
在真机(物理机)上ping 172.25.254.100
ping不通,这是因为没有为team0添加网络接口
【5】、为team0添加网络接口
为team0添加网络接口eth0
nmcli connection add type team-slave con-name eth0 ifname eth0 master team0
为team0添加网络接口eth1
nmcli connection add con-name eth1 ifname eth1 type team-slave master team0
监控结果
当前工作的是eth0网卡,eth1网卡作为备份。
【6】、第二次ping测试
在真机(物理机)上ping 172.25.254.100
【7】、断开eth0网卡
ifconfig eth0 down
监控结果:
当前工作的网卡变为eth1网卡,且看到eth0的状态为down
【8】、断开eth0网卡之后,进行测试
在真机(物理机)上ping 172.25.254.100
可以ping通,因为有网卡在工作
【9】、打开eth0网卡
ifconfig eth0 up
监控结果:
当前工作的网卡仍为eth1,且看到eth0的状态为up
【10】、断开eth1网卡
ifconfig eth1 down
监控结果:
当前工作的网卡变为eth0网卡,且看到eth1的状态为down
【11】、断开eth1网卡之后,进行测试
在真机(物理机)上ping 172.25.254.100
可以ping通,因为有网卡在工作
【12】、打开eth1网卡
ifconfig eth1 up
监控结果:
当前工作的网卡仍为eth0,且看到eth1的状态为up
【13】、同时关闭eth0和eth1网卡
ifconfig eth0 down
ifconfig eth1 down
监控结果:
当前工作的网卡为none,eth0和eth1网卡的状态都是down
【14】、同时断开eth0和eth1网卡之后,进行测试
在真机(物理机)上ping 172.25.254.100
ping不通,因为没有网卡在工作
(3)配置文件的方式设定team0(永久生效,重启系统之后都不会失效)
【1】、前期准备
删除之前的team0的网络配置,eth0的网络配置和eth1的网络配置
nmcli connection delete eth0
nmcli connection delete eth1
nmcli connection delete team0
ifconfig 看到,team0网络接口消失,而eth0和eth1仍然存在。这是因为team0只是网络接口,删除其网络配置之后,整个team0就都消失了;而eth0,eth1是真实存在的网卡,nmcli connection delete eth0;nmcli connection delete eth1只是删除了其网络配置。想要删除eth0,eth1网络接口,必须在真机上通过virt-manager命令,进入虚拟机管理器,在虚拟机管理器中进行删除。
【2】、编辑team0,eth0和eth1的网络配置文件
cd /etc/sysconfig/network-scripts
vim ifcfg-team0
其中子网掩码可以写成NETMASK=255.255.255.0也可以写成PREFIX=24
TEAM_CONFIG='{"runner":{"name":"activebackup"}}'也可以写成
TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"
vim ifcfg-eth0
注意:里面必须加入,DEVICETYPE=teamport
vim ifcfg-eth1
注意:里面必须加入,DEVICETYPE=teamport
【3】、因为修改的是配置文件,所以要重启网络
【4】、查看team0网络接口是否已经成功创建
【5】、在另外一个终端上打开监控
watch -n 1 teamdctl team0 stat
监控结果
【6】、ping测试
在真机(物理机)上ping 172.25.254.100
五、bond0链路聚合方式与team链路聚合方式的比较
bond链路聚合方式不支持hash加密,而team链路聚合方式支持hash加密
bond链路聚合方式不支持负载均衡,而team链路聚合方式支持负载均衡
bond链路聚合方式不支持ip为6的ip地址,而team链路聚合方式支持ip为6的ip地址
team链路聚合方式的负载均衡与bond链路聚合方式的balance-rr不同:负载均衡是按照工作量进行均分工作;而balance-rr是按照数字进行平分工作。
六、网络桥接(虚拟机单网卡即可,不需要双网卡)
1、网络桥接介绍
虚拟机的网络连接提供了三种工作模式,它们是bridge(桥接模式),NAT(网络地址转换模式)和host-only(主机模式)。
<1>bridge模式:当虚拟机系统的网络连接模式为桥接模式时,相当于在主机系统和虚拟机系统之间连接了一个网桥,而网桥两端的网络都属于同一网络,主机和虚拟机是处于同一网络中的对等主机。使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。
如果你想利用VMWare在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。
<2>NAT模式:NAT即Network Address Translation,网络地址转换是虚拟专用网和全球IP地址之间的转换,虚拟专用网是企业,政府部门的内部网络,在虚拟专用网中主机IP地址是虚拟专用地址,它不能被互联网中的路由器所识别,因此,在企业接入互联网的默认网关(接入路由器)中,需要地址转换NAT软件使得虚拟专用网内部的主机可以连接到互联网。
采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。
<3>host-only模式在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
注:在host-only模式下,虚拟系统和宿主机器系统是可以相互通信的,相当于这两台机器通过双绞线互联。
什么是网络桥接模式
桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。
网络桥接模式的功能
在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机IP地址需要与主机在同一个网段,如果需要连网,则网关与DNS需要与主机网卡一致。
定义:
在网络的使用中,有时需要搭建网络桥来实现网络桥接。例如在一台主机上制作一台虚拟机,虚拟机是没有物理网卡的,这时虚拟机数据的发送和接收就需要通过主机上的物理网卡,需要主机的内核来处理这些问题,这无疑增加了主机内核的负担,也延长了虚拟机的反应速度,如果搭建网络桥,使得虚拟机的内核可以在一定程 度上使用主机的物理网卡,就可以解决这个问题。
搭建网络桥可以通过编辑配置文件和命令管理来实现。
2、网络桥接的配置
(1)永久网络桥接的配置(真机)
【1】、前期准备
在物理机,手动删除ethernet,wifi,bridge的所有选项:nm-connection-editor
【2】、编写配置文件
如下图所示,主机的物理网卡为"enp4s0"
搭建网络桥需要配置以下两个文件:
cd /etc/sysconfig/network-scripts
vim ifcfg-br0
NAME=br0是可以不写的。
vim ifcfg-enp4s0
NAME=enp4s0是可以不写的
【3】、因为编写的是配置文件,所以要重启网络
systemctl restart network
【4】、查看br0是否配置好
ifconfig
brctl show
如下图所示,在新建虚拟机时就可以看见网络选择里有网络桥接的选项"Bridge br0 Host device enp4s0"。
下图是:没有配置桥接网络的:没有网络桥接的选项"Bridge br0 Host device enp4s0",只有NAT选项(NAT模式安装虚拟机的速度较慢,而桥接模式安装虚拟机的速度较快)
(2)临时网络桥接的配置(虚拟机)—重启系统(reboot)之后,就会失效
【1】、前期准备
删除之前的team0的网络配置,eth0的网络配置和eth1的网络配置
nmcli connection delete eth0
nmcli connection delete eth1
nmcli connection delete team0
【2】、建立桥接接口,并查看桥接接口是否建立成功
brctl addbr br0
brctl show
【3】、临时设定br0的ip
ifconfig br0 172.25.254.100/24
【4】、第一次ping测试
在真机上ping 172.25.254.100
ping不通,这是因为没有为br0添加网络接口
【5】、为br0添加网络接口
为br0添加网络接口eth0
brctl addif br0 eth0
【6】、第二次ping测试
在真机(物理机)上ping 172.25.254.100
(4)网络桥接的删除(网络桥接的删除与bond0,team0不同:bond0和team0的删除—nmcli connection delete eth0 nmcli connection delete eth1 nmcli connection delete bond0/team0;而网络桥接的删除—下面的方法)
【1】、停止桥接接口的工作
ifconfig br0 down
【2】、删除桥接接口的网络接口
brctl delif br0 eth0
【3】、删除桥接接口
brctl delbr br0
【4】、查看是否删除成功
brctl show
ip a