【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接

目录:
(一)了解什么是聚合链路
(二)配置聚合网络的几种方式
(三)配置桥接网络


(一)了解什么是聚合链路
(1.1)在我们系统中有一个客户端client,还有一台服务器server,在服务器和客户端之间使用交换机进行连接,交换机和服务器的带宽为无限大,没有任何的限制,而客户端和交换机之间是百兆的带宽。此时我们假设服务器上有100G的内容需要传输到客户端上,假设我们常规情况下需要1个小时可以将文件全部下载下来。此时我们感觉1个小时下载文件是非常费时的,而此时我们client客户端上有两张网卡,如果直接将第二张网卡插上一根网线连接到交换机上,希望时间能够因此降低到0.5小时,这其实是无法实现的。因为在每个交换机里存在着mac地址表,例如f0/0和client eth0关联,f0/1和client eth2关联,f0/2和server eth0关联,在局域网内部通信的时候有一个很重要的因素是mac地址,客户端和服务器通信的时候,client客户端从eth0网卡出来经过了交换机找到了server服务器端的eth0地址。此时client的源地址是“s:client:eth0”,而此时server的目的地址是“d:client:eth0”,而当通信的信息从server端返回到交换机的时候,此时交换机会去ARP表中解析client端的eth0对应的mac地址是什么并将其关联起来,所以当使用client端的eth0和server端进行通信,即使我们重新插入另外一根网线将client端的eth1接入进来,也仍然无法为client端的eth0网卡分担100G数据从server端下载过来的流量。
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(1.2)如果我们希望client端的多张网卡可以同时工作,分担单个网卡下载流量的压力时,我们可以将eth0的mac地址和eth1的mac地址使用软件合并成一个mac地址,此时当有数据包从server端返回到交换机的时候,交换机发现在ARP表中f0/0与f0/1对应的是同一个mac地址,因此此时数据包从eth0网卡传输和eth1网卡传输都是可以的。此时数据包是如何分配的呢?我们可以有两种分配模式,第一种是activebackup高可用备份,数据先从一条链路的网卡eth0进行传输,当出现当前传输的链路断开时,备用的eth1便会立刻顶上去继续提供传输服务;第二种是roundrobin轮询,即传输文件时,一部分流量可以从eth0传输,接着一部分流量从eth1传输,这样循环往复进行数据传输,当然类似的方式还有LoadBlanace负载均衡。当然第二种方式除了在主机上进行配置,同时还是需要在交换机上配置channel。
(1.3)当我们将client客户端eth0和eth1的mac地址修改为一样后,我们应该在哪个网卡上配置IP地址呢?我们的解决方案是创建一个虚拟的网卡team0关联eth0和eth1,然后在team0网卡上配置IP地址,由于eth0、eth1、team0解析出来的mac地址都是一样的,同时记录在交换机的f0/0和f0/1上,此时当server主机上传送过来的数据包到达交换机后,发现IP地址对应的mac地址既出现在f0/0上,也出现在了f0/1上了,所以此时数据包便可以选择从eth0传输,也可以选择从eth1传输。一般我们需要实现改变网卡mac地址的需求可以通过两种方式来实现,第一种方式是配置网卡的binding绑定网络,第二种方式是配置网卡的team聚合网络,此处我们使用第二种方式实现。
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(1.4)应用场景:当服务器提供比较重要的服务时,只准备一张网卡是远远不够的,因为一旦网卡出现故障,客户就无法访问,这就会造成客户流失,体验感差,这个时候就可以运用链路聚合的方案来解决,将多张网卡绑定在一起创建一张虚拟网卡,从而实现网卡热备份、流量轮询式负载均衡,以此来保障服务器能够正常提供服务,给用户以良好的体验。


(二)配置聚合网络的几种方式
(2.1)配置聚合网络,我们一般可以使用三种方式实现,第一种是图形化界面配置,第二种是命令行的方式配置,第三种是通过修改配置文件的方式操作。我们首先使用第一种图形化界面的配置方式在vms002主机上进行配置,我们在vms002主机上添加两张新的网卡,然后发现此时系统中已经存在三张网卡了(图2-3)。
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(2.2)接着我们将NetworkManager服务启动起来,并打开图形化界面。我们选择添加一个“组队”网络,然后将连接名称和接口名称设置为team0(图2-6),在IPv4的设置处设置IP地址和子网掩码(图2-7),接着添加一个网卡,并命名为team0-slave1,添加第二张网卡,并命名为team0-slave2,同时还要添加JSON文件“{"runner":{"name":"activebackup"}}”(图2-9),此时我们保存文件并关闭图形化界面,最后重启网络即可(图2-10)。
# systemctl start NetworkManager
# nm-connection-editor &
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(2.3)此时我们在vms002主机上使用ifconfig命令查看网卡eno33554968、eno50332192、team0时,发现网卡的mac地址已经变成一样的了(图2-11)。此时我们在vms001主机上进行ping操作,发现是可以ping通vms002主机的(图2-12)。
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(2.4)我们使用teamdctl命令可以查询出当前系统使用的是activebackup备份高可用,当前工作的网卡是eno33554968,然后我们将该网卡断开(图2-13),此时我们发现系统仍然是备份高可用状态,并且已经自动连接到了第二张网卡eno50332192(图2-14),而且此时vms001主机ping向vms002主机的连接一直没有断开(图2-15)。
# teamdctl team0 state---查询当前系统的网络状态
# nmcli device disconnect eno33554968---将网卡eno33554968连接断开
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(2.5)接着我们在vms002主机上先将eno33554968网卡连接上,然后将eno50332192网卡的连接断开,可以发现所以此时vms002主机的备份高可用的需求仍然是实现了的。
# nmcli device connect eno33554968---我们将eno33554968网卡重新连接上
# nmcli device disconnect eno50332192---我们将eno50332192网卡连接断开
# teamdctl team0 state---查询当前网卡的连接状态
# tcpdump -i eno33554968---在vms002主机进行抓包
注意:如果我们发现当vms001主机无法ping通vms002主机的时候,可以在vms002主机上使用tcpdump命令抓一下包,此时系统之间的连接便会正常。
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(2.6)接着我们通过第二种命令行的方式进行配置,我们首先在vms002主机上将之前用图形化设置的组队信息删除,然后重新使用命令行进行设置,我们添加一个team网卡设置连接名为team0,设置网卡名为team0,并添加备份高可用的JSON信息,然后在将系统中的两张网卡eno33554968和eno50332192设置为从属于team0的team-slave类型。
# nmcli connection delete team0
# nmcli connection delete team0-slave1
# nmcli connection delete team0-slave2
# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}---添加一个team网卡设置连接名为team0,设置网卡名为team0,并添加备份高可用的JSON信息
# nmcli connection modify team0 ipv4.addresses 192.168.26.200/24 ipv4.gateway 192.168.26.2 ipv4.dns 192.168.26.2 ipv4.method manual---设置team0网卡的IP地址、网关、DNS,并设置team0网卡为手动
# nmcli connection add type team-slave con-name team0-slave1 ifname eno33554968 master team0---在team0网卡中添加一个team-slave,设置连接名为team0-slave1,网卡名为eno33554968,且从属于team0网卡
# nmcli connection modify team0-slave1 connection.autoconnect yes---设置开机的时候网卡可以自动连接
# nmcli connection add type team-slave con-name team0-slave2 ifname eno50332192 master team0---在team0网卡中添加一个team-slave,设置连接名为team0-slave2,网卡名为eno50332192,且从属于team0网卡
# nmcli connection modify team0-slave2 connection.autoconnect yes---设置开机的时候网卡可以自动连接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(2.7)我们将网络重启后发现此时vms002主机设置组队的三张网卡的mac地址已经完全一致了,此时我们发现vms001主机已经可以正常的ping同vms002主机的组队网络team0了。
# systemctl restart network---将网路重启一下
# tcpdump -i eno33554968---对网卡eno33554968抓包
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(2.8)然后我们使用第三种修改配置文件的方式进行配置,我们首先进入到/usr/share/doc/teamd-1.15/example_ifcfgs/1目录中,将三个模板文件拷贝到/etc/sysconfig/network-scripts/目录中(图2-22),我们将ifcfg-eth1重命名为ifcfg-eno33554968,将ifcfg-eth2重命名为ifcfg-eno50332192,并在ifcfg-eno33554968配置文件和ifcfg-eno50332192配置文件中配置对应的信息(图2-22至图2-25)。
# nmcli connection delete team0
# nmcli connection delete team0-slave1
# nmcli connection delete team0-slave2
# cd /usr/share/doc/teamd-1.15/example_ifcfgs/1
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(2.9)最后我们还要编辑ifcfg-team_test0配置文件,并填写相关的配置信息,最后我们将网络重启一下,此时可以发现系统的组队网络team0已经生效了,并且三张网卡的mac地址已经完全一致了(图2-28)。此时我们在vms001主机上ping向vms002主机的聚合网络时,是能够ping通的(图2-29)。
# systemctl restart network
# teamdctl team_test0 state---查询team_test0组队网路的状态
# nmcli device disconnect eno33554968---断开eno33554968网卡的连接
# nmcli device connect eno33554968---重新连接eno33554968网卡
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接


(三)配置桥接网络
(3.1)一般桥接网络是应用在虚拟化的环境中,我们可以通过三种方式配置桥接网络,第一种是图形化界面的配置方式,第二种是命令行的配置方式,第三种是通过修改配置文件的方式。首先我们使用图形化界面的方式进行配置,我们在vms002主机上设置两张网卡,然后我们打开图形化界面,选择桥接模式(图3-3),然后依次配置桥接和IPv4设置(图3-4至图3-6),然后点击保存并关闭。此时我们便创建了一个桥接网络br0了,且实现了将eno33554968网卡桥接到了bro网卡上(图3-7),最后我们将网路重启即可。此时我们从物理机上尝试ping向192.168.26.200的IP地址是可以ping通的(图3-8)。
# nm-connection-editor &
# systemctl restart network
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(3.2)然后我们使用第二种命令行的方式来进行配置,我们首先将之前配置的信息清理一下(图3-9),然后配置一个br0网桥,并将网卡eno33554968和br0网桥进行关联(图3-10)。此时我们从物理机上ping向vns002主机的桥接网络时,仍然是可以ping通的(图3-11)。
# brctl show---查询桥接的网络信息
# nmcli connection---查询网卡连接状态
# nmcli connection delete br0---删除br0网卡
# nmcli connection delete br0-slave1---删除br0-slave1网卡
# nmcli connection add type bridge con-name br0 ifname br0---创建一个桥接的网桥,命名为br0,同时设置连接名为br0
# nmcli connection modify br0 ipv4.addresses 192.168.26.200/24 ipv4.gateway 192.168.26.2 ipv4.dns 192.168.26.2 ipv4.method manual connection.autoconnect yes---设置br0网桥的IP地址、网关、DNS的信息,并设置ipv4为手动启动,同时开机自动连接
# nmcli connection add type bridge-slave con-name br0-slave1 ifname eno33554968 master br0---设置从节点连接名为br0-slave1,连接的网卡是eno33554968
# nmcli connection modify br0-slave1 connection.autoconnect yes---设置从节点开机自动连接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(3.3)接着我们使用第三种修改配置文件的方式进行配置,我们进入到/etc/sysconfig/network-scripts/目录中,然后创建一个ifcfg-br0文件,并做如下的配置(图3-12和图3-13),接着创建一个ifcfg-br0-slave1文件,并做如下的配置(图3-14图3-15)。
# vim ifcfg-br0
# vim ifcfg-br0-slave1
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
ONBOOT=yes表示开机是否自动启动;BOOTPROTO=none表示开机通过什么协议获取IP地址
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
(3.4)最后我们将vms002主机的网络服务重启一下,此时发现br0和网卡eno33554968的mac地址一致,我们使用物理机也是可以正常的ping通vms002主机的桥接网络的。
# brctl show---查询桥接网络信息
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接
【讲清楚,说明白!】Linux高级网络配置--聚合网络和桥接

—————— 本文至此结束,感谢阅读 ——————

猜你喜欢

转载自blog.51cto.com/13613726/2461122