Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )

Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建

1. bond

在企业及电信 Linux 服务器环境上,网络配置都会使用 Bonding 技术做网口硬件层面的冗余,防止单个网口应用的单点故障。

  • bond :
    网卡 bond 是通过把多个物理网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,具体的功能取决于采用的哪种模式。 bond 有的七种模式(mode 0~6,最常用的是 mode 0,1,6)
    • mode = 0 ( balance-rr ) 平衡抡循环策略
      链路负载均衡,增加带宽,支持容错,一条链路故障会自动切换正常链路。
      特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。
    • mode = 1 ( active-backup ) 主-备份策略
      主备模式,只有一块网卡是 active,另一块是备用的 standby,所有流量都在 active 链路上处理。
      特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N。
    • mode = 6 ( balance-alb ) 适配器适应性负载均衡
      在5的tlb基础上增加了rlb(接收负载均衡receive load balance).不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。

下面来介绍 bond 的建立过程(以 mode 1 为例)
注:在虚拟中进行建立)

 1.为主机添加网卡,保证机器有两块可用的闲置网卡
 2.添加 bond
 通过执行以下指令:
 [root@localhost ~]# nmcli connection add con-name bond0 ifname bond0 type bond mode active-backup ip4 172.25.151.50/24
                   # 添加 bond 并指定 IP 
                  add :NetworkManager添加一个连接
             con-name :连接名称
               ifname :连接到的接口
                 type :连接类型
                 mode :bonding 模式(默认为: balance-rr )
                  ip4 :IPv4 类的地址
 # 注:这时的 bond 是不可用的,需要为其添加真实的网卡设备
 为 bond0 添加两张可用网卡:
 [root@localhost ~]# nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0
 # eht0 为添加的网卡名称,bond-slave 表示为 bond 的从属设备,master bond0 表示为 bond0 服务
 [root@localhost ~]# nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0
 [root@localhost ~]# watch -n 1 cat /proc/net/bonding/bond0
                    # 可以通过此监控命令
 建立完后就可以使用 bond03.若要删除建立的 bond0 可执行:
 先删除 bond0 的两个从属设备
 [root@localhost ~]# nmcli connection delete eth0 
 [root@localhost ~]# nmcli connection delete eth1
 删除 bond0 
 [root@localhost ~]# nmcli connection delete bond0

执行如下:
1.为主机添加网卡,保证机器有两块可用的闲置网卡
以虚拟机为例进行操作,在真机中执行: virt-manager,执行对主机(这里指虚拟机)进行网卡添加
选定主机
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第1张图片
添加硬件
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第2张图片
选择类型
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第3张图片
2. 添加网卡后,进行对 bond 的建立
建立 bond0
这里写图片描述
为 bond0 添加设备
这里写图片描述
3. 通过及监测命令:watch -n 1 cat /proc/net/bonding/bond0 可看到 bond0 的状态(eth0 作为 bond0 活跃的从属设备,而eth1 则在随时备用)
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第4张图片
4. 可通过执行 ifconfig eth0 down 来模拟 eth0 网卡出现问题,从而观察 bond0 从属设备的运行状态,如下图所示,可发现 eth0 down 后,eth1 在第一时间接替了 eth0 继续工作
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第5张图片
可以通过ping 命令来观测在 eth0 down 后,eth1 顶替 eth0 工作,网络是没有间断
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第6张图片
5. 删除 bond0
这里写图片描述

2. team

Team和bond0功能类似(企业七之前是没有 team 的)
在redhat7.0以上版本中网络方面的相关服务被NetworkManager所接管,所以在配置多网卡绑定时,redhat专门提供了team工具来实现多网卡的绑定。

  • Team 不需要手动加载相应内核模块;Team有更强的拓展性;支持8块网卡
  • Team 的种类:
    broadcast 广播容错
    roundrobin 平衡轮叫
    activebackup 主备
    loadbalance 负载均衡

下面以 activebackup 主备模式进行 team 建立的示例

 1.为主机添加网卡,保证机器有两块可用的闲置网卡(以两块网卡为例)
 2.添加 team
 [root@localhost ~]# nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}' ipv4 172.25.151.50/24
                   # 添加 team 并指定 IP 
                  add :NetworkManager添加一个连接
             con-name :连接名称
               ifname :连接到的接口
                 type :连接类型
              connfig :为team 设定模式
                  ip4 :IPv4 类的地址
# 注:这时的 team 是不可用的,需要为其添加真实的网卡设备
 [root@localhost ~]# watch -n 1 teamdctl team0 stat 
                   # 观测命令,用来查看 team0 状态
 为 team0 添加两张可用网卡:
 [root@localhost ~]# nmcli connection add con-name eth0 ifname eth0 type team-slave master team0
 # eht0 为添加的网卡名称,team-slave 表示为 team 的从属设备,master team0 表示为 team0 服务
 [root@localhost ~]# nmcli connection add con-name eth1 ifname eth1 type team-slave master team0
 3.若要删除建立的 team0 可执行:
 先删除 team0 的两个从属设备
 [root@localhost ~]# nmcli connection delete eth0 
 [root@localhost ~]# nmcli connection delete eth1
 删除 team0 
 [root@localhost ~]# nmcli connection delete team0

执行如下:
1.为主机添加网卡,保证机器有两块可用的闲置网卡(以两块网卡为例,与 bond 的操作一致)
2.添加 team
这里写图片描述
3.为 team0 添加两张可用网卡:
这里写图片描述
4.用监控命令查查看 team0:
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第7张图片
5.同样的 team 也与 bond 相同,可以通过 ifconfig down eth1 来使 team0 的一个从属设备停止工作,另一个顶替上去
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第8张图片

3. 网桥

  • 桥接与网桥
    桥接工作在OSI网络参考模型的第二层数据链路层,是一种以MAC地址来作为判断依据来将网络划分成两个不同物理段的技术,其被广泛应用于早期的计算机网络当中。
    以太网是一种共享网络传输介质的技术,在这种技术下,如果一台计算机发送数据的时候,在同一物理网络介质上的计算机都需要接收,在接收后分析目的MAC地址,如果是属于目的MAC地址和自己的MAC地址相同便进行封装提供给网络层,如果目的MAC地址不是自己的MAC地址,那么就丢弃数据包。
    桥接的工作机制是将物理网络段(也就是常说的冲突域)进行分隔,根据MAC地址来判断连接两个物理网段的计算机的数据包发送。
  • 网桥实际上是一种控制冲突域流量的设备。
    首先,bridge是一个虚拟网络设备,所以具有网络设备的特征,可以配置IP、MAC地址等;其次,bridge是一个虚拟交换机,和物理交换机有类似的功能。
    对于普通的网络设备来说,只有两端,从一端进来的数据会从另一端出去,如物理网卡从外面网络中收到的数据会转发给内核协议栈,而从协议栈过来的数据会转发到外面的物理网络中。
    而bridge不同,bridge有多个端口,数据可以从任何端口进来,进来之后从哪个口出去和物理交换机的原理差不多,要看mac地址。

1.下面介绍创建用命令创建网桥(临时添加网桥)

 1.建立网桥
 [root@client ~]# brctl show #查看是否有网桥
 [root@client ~]# brctl addbr br0 #添加名为br0的网桥
 [root@client ~]# ifconfig br0 172.25.151.50/24 #为网桥临时设置IP
 [root@client ~]# ping 172.25.151.250 #尝试用此 ip ping 外界,看是否可以 ping 通
 [root@client ~]# brctl addif br0 eth0 #为网桥 br0 添加接口 eth0 
                #addif 添加 interface ;eth0 物理网卡
 [root@client ~]# ping 172.25.151.250 #再尝试用此 ip ping 外界,看是否可以 ping 通
 2.删除网桥
 [root@client ~]# brctl delif br0 eth0 #删除网桥上的物理网卡(删除网桥上添加的接口) 
 [root@client ~]# ifconfig br0 down #将网桥停止(将网桥从系统链接中去除)
 [root@client ~]# brctl delbr br0 #删除网桥
注:这样建立网桥在重启机器后以消失

具体执行如下:
(1)brctl show 可发现没有网桥
这里写图片描述
(2)建立网桥
这里写图片描述
(3)为网桥添加 IP
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第9张图片)
(4)通过此 IP ping 别的主机 IP,无法 ping 通
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第10张图片
(5)为网桥 br0 添加接口 eth0,此时再 ping 别的主机,可 ping 通
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第11张图片
(6)brctl show 可发现网桥有了接口
这里写图片描述
2.下面介绍建立永久网桥(编辑配置文件)

 [root@client ~]# vim/etc/syscofig/network-scripts/ifcfg-网卡名
 内容如下: 
  1 DEVICE=eth0
  2 ONBOOT=yes
  3 BOOTPROTO=none
  4 BRIDGE=br0           #桥接对象为br0
~                   
 [root@client ~]# vim /etc/syscofig/network-scripts/ifcfg-br0
 内容如下: 
  1 DEVICE=br0
  2 ONBOOT=yes
  3 BOOTPROTO=none
  4 IPADDR=172.25.151.50
  5 PREFIX=24
  6 TYPE=Bridge           #类型为桥接
~     
建立完成后,可能无法成功重启网络,可以关闭 NetworkManager.service 后再重启网络,则网桥建立成功
systemctl stop NetworkManager.service
systemctl restart network
systemctl start NetworkManager.service

具体执行如下:
(1)编辑网络接口配置文件
这里写图片描述
(2)编辑网桥的配置文件
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第12张图片
(3)重启网络服务
Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 )_第13张图片
(4)网桥建立成功
这里写图片描述

你可能感兴趣的:(Linux菜鸟成长日记 ( Linux 下的高级网络配置:链路聚合 bond,team 及网桥的搭建 ))