Centos网络管理(五)-Bonding、网络组和网桥

Bonding

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。

直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址

? Mode 0 (balance-rr)

轮转( Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力

? Mode 1 (active-backup)

活动-备份(主备)策略:只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其他slave。 为了避免交换机发生混

乱此时绑定的MAC地址只有一个外部端口上可见

? Mode 3 (broadcast)

广播策略:在所有的slave接口上传送所有的报文,提供容错能力

active-backup、 balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如: Cisco 交换机需要在模式 0、 2 和 3 中使用EtherChannel,但在模式4中需要 LACP和 EtherChannel

详细帮助:

/usr/share/doc/kernel-docversion/Documentation/networking/bonding.txt

https://www.kernel.org/doc/Documentation/networking/bonding

Bonding配置

实验环境:VMware Workstation Pro 14(试用版)

系统平台:

CentOS release 6.9 (Final)       内核  2.6.32-696.el6.x86_64

虚拟2块网卡

生成bond0的网卡配置文件

miimon 是用来进行链路监测的。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路

#cat > /etc/sysconfig/network-scripts/ifcfg-bond0 <<EOF

DEVICE=bond0

BOOTPROTO=none

BONDING_OPTS='mode=0 miimon=100'

IPADDR=192.168.4.201

PREFIX=24

EOF

修改2块物理网卡配置文件,添加红色的2行

DEVICE=eth1

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=none

MASTER=bond0        此处值需要填写加入哪个BONDING组

SLAVE=yes

重启网络服务

#service network restart

绑定组中的各个网卡的MAC地址将会与bond0的MAC一致

查看Bonding状态

#cat /proc/net/bonding/bond0

测试

关闭了其中一个网卡,发现,ping包并没有中断

215 packets transmitted, 215 received, 0% packet loss, time 214116ms

换成mode=3模式

64 bytes from 192.168.4.201: icmp_seq=1 ttl=64 time=4.34 ms

64 bytes from 192.168.4.201: icmp_seq=1 ttl=64 time=4.38 ms (DUP!)

64 bytes from 192.168.4.201: icmp_seq=2 ttl=64 time=0.264 ms

64 bytes from 192.168.4.201: icmp_seq=2 ttl=64 time=0.281 ms (DUP!)

64 bytes from 192.168.4.201: icmp_seq=3 ttl=64 time=0.301 ms

64 bytes from 192.168.4.201: icmp_seq=3 ttl=64 time=0.319 ms (DUP!)

删除bond0

#ifconfig bond0 down

#ethtool -i bond0

#modprobe -r bonding

#service network restart

实验环境:VMware Workstation Pro 14(试用版)

系统平台:

CentOS Linux release 7.4.1708 (Core)       内核  3.10.0-693.el7.x86_64

计划使用ens36和ens37来进行bongding设置

#nmcli device

DEVICE  TYPE      STATE      CONNECTION

ens33   ethernet  connected  ens33

ens36   ethernet  connected  ens36

ens37   ethernet  connected  ens37

添加bonding接口

注意黑色标注的地方,ifname并不指定具体的物理网卡,而是指定bondding组名

#nmcli connection add con-name bond1 type bond ifname bond1 mode active-backup ipv4.method auto ipv6.method ignore

添加从属接口

#nmcli connection add type bond-slave ifname ens36 master bond1

#nmcli connection add type bond-slave ifname ens37 master bond1

如果没有指定从属接口con-name提供连接名,则该名称是接口名称加类型构成

会自动生成配置文件,这个比Centos 6方便

启动BONDDING

要启动绑定,则必须首先启动从属接口

#nmcli connection up bond-slave-ens36

#nmcli connection up bond-slave-ens37

启动绑定

#nmcli connection up bond1(一般情况下,启动了从属接口,就会自动启动了)

测试:

关闭了ens36网卡

#nmcli device disconnect ens36

ens37立即接替故障接口ens36进行工作了

删除bond1

#nmcli connection down bond1

#nmcli connection delete bond1 bond-slave-ens36 bond-slave-ens37

恢复正常

网络组Network Teaming

网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量

? 网络组不同于旧版中bonding技术,提供更好的性能和扩展性

? 网络组由内核驱动和teamd守护进程实现.

? 多种方式runner

broadcast【mode 3】

特点:

这种模式的特点是一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,我们感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容错机制。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题

适用于拓扑,两个接口分别接入两台交换机,并且属于不同的vlan,当一边的网络出现故障不会影响服务器另一边接入的网络正常工作。而且故障过程是0丢包

roundrobin 【mode 0】

特点:

(1)所有链路处于负载均衡状态,轮询方式往每条链路发送报文,基于per packet方式发送。服务上ping 一个相同地址:1.1.1.1 双网卡的两个网卡都有流量发出。负载到两条链路上,说明是基于per packet方式 ,进行轮询发送。

(2)这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。

交换机端需要配置聚合口

activebackup【mode 1】

特点:

一个端口处于主状态 ,一个处于从状态,所有流量都在主链路上处理,从链路不会有任何流量。当主端口down掉时,从端口接手主状态。

不需要交换机端支持

loadbalance【mode 2】

特点:

该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。如果所有流量是通过单个路由器(比如 “网关”型网络配置,只有一个网关时,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。),那该模式就不是最好的选择。和balance-rr一样,交换机端口需要能配置为“port channel”。这模式是通过源和目标mac做hash因子来做xor算法来选路的。

交换机端需要配置聚合口

lacp (implements the 802.3ad Link Aggregation ControlProtocol)【mode 4】

特点:802.3ad模式是IEEE标准,因此所有实现了802.3ad的对端都可以很好的互操作。802.3ad 协议包括聚合的自动配置,因此只需要很少的对交换机的手动配置(要指出的是,只有某些设备才能使用802.3ad)。802.3ad标准也要求帧按顺序(一定程度上)传递,因此通常单个连接不会看到包的乱序。802.3ad也有些缺点:标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。 此外,linux bonding的802.3ad实现通过对端来分发流量(通过MAC地址的XOR值),因此在“网关”型配置下,所有外出(Outgoing)流量将使用同一个设备。进入(Incoming)的流量也可能在同一个设备上终止,这依赖于对端802.3ad实现里的均衡策略。在“本地”型配置下,路两将通过 bond里的设备进行分发。

应用拓扑同mode 0,和mode 2一样,不过这种模式除了配置port channel之外还要在port channel聚合口下开启LACP功能,成功协商后,两端可以正常通信。否则不能使用。

实验环境:VMware Workstation Pro 14(试用版)

系统平台:

CentOS Linux release 7.4.1708 (Core)       内核  3.10.0-693.el7.x86_64

计划使用ens36和ens37来进行网络组设置

#nmcli device

DEVICE  TYPE      STATE      CONNECTION

ens33   ethernet  connected  ens33

ens36   ethernet  connected  ens36

ens37   ethernet  connected  ens37

语法格式

创建网络组接口

nmcli con add type team con-name 网络组名 ifname 网络组接口名 [config JSON]

JSON 指定runner方式

格式: '{"runner": {"name": "METHOD"}}'

METHOD 可以是broadcast, roundrobin,activebackup, loadbalance, lacp

例子:

#nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}'

创建port接口

nmcli con add type team-slave con-name 网络接口名 ifname 物理网卡 master 网络组名

? 网络接口名若不指定,默认为team-slave-物理网卡名

例子:

#nmcli connection add type team-slave ifname ens36 master team0

网络组管理命令

teamdctl [options] teamdevname command [command args]

-h --help                Show this help

-v --verbose             Increase output verbosity

-o --oneline             Force output to one line if possible

-D --force-dbus          Force to use D-Bus interface

-Z --force-zmq=ADDRESS   Force to use ZeroMQ interface [-Z[Address]]

-U --force-usock         Force to use UNIX domain socket interface

Commands:

config dump  配置查看

config dump noports

config dump actual

state  状态查看

state dump

state view

port add PORTDEV 添加一个定义好了配置文件的物理网卡至网络组中

port remove PORTDEV  从网络中删除一个接口设备,不会删除配置文件

port present PORTDEV

port config update PORTDEV PORTCONFIG

port config dump PORTDEV

创建网络组

#nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}'

自动生成的文件如下:

#cat ifcfg-team0

DEVICE=team0

TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"

BOOTPROTO=dhcp

NAME=team0

ONBOOT=yes

DEVICETYPE=Team

创建网络接口

#nmcli connection add type team-slave ifname ens36 master team0

#nmcli connection add type team-slave ifname ens37 master team0

自动生成的文件如下

#cat ifcfg-team-slave-ens36

NAME=team-slave-ens36

UUID=804bda32-b350-4500-8b46-eec141a7d13d

DEVICE=ens36

ONBOOT=yes

TEAM_MASTER=team0

DEVICETYPE=TeamPort

启动网络组

启动网络组接口不会自动启动网络组中的port接口

启动网络组接口中的port接口总会自动启动网络组接口

禁用网络组接口会自动禁用网络组中的port接口

没有port接口的网络组接口可以启动静态IP连接

启用DHCP连接时,没有port接口的网络组会等待port接口的加入

所以上图中的team0一直不会自动启用的

#nmcli connection up team-slave-ens36

#nmcli connection up team-slave-ens36

查看状态

测试什么的都是正常。

现在再增加一块物理网卡到此网络组,必须使用命令生成配置文件

#nmcli connection add type team-slave ifname ens38 master team0

#nmcli connection up team-slave-ens38

只有有配置文件后,才可以使用此命令添加

#teamdctl team0 port add ens38

删除指定的物理网卡

#teamdctl team0 port remove ens38

删除网络组

先down掉相应的网络组,再删除配置文件

#nmcli connection delete team0 team-slave-ens36 team-slave-ens37

桥接

桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。

一般常用在KVM相关场景中。支持网卡别名。

主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、 eth2桥接在一起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、D。

实验环境:VMware Workstation Pro 14(试用版)

系统平台:

CentOS Linux release 7.4.1708 (Core)       内核  3.10.0-693.el7.x86_64

计划使用ens36和ens37来进行网桥设置

#nmcli device

DEVICE  TYPE      STATE      CONNECTION

ens33   ethernet  connected  ens33

ens36   ethernet  connected  ens36

ens37   ethernet  connected  ens37

创建网桥

#nmcli connection add type bridge con-name bridge0 ifname bridge0 ipv4.method manual ipv4.addresses 172.18.27.42/16

生成的配置文件如下:

#cat ifcfg-bridge0

DEVICE=bridge0

STP=yes

BRIDGING_OPTS=priority=32768

TYPE=Bridge

IPADDR=172.18.27.42

PREFIX=16

NAME=bridge0

ONBOOT=yes

创建网络接口

#nmcli connection add type bridge-slave ifname ens36 master bridge0

#nmcli connection add type bridge-slave ifname ens37 master bridge0

生成的配置文件如下:

#cat ifcfg-bridge-slave-ens36

TYPE=Ethernet

NAME=bridge-slave-ens36

UUID=3433f060-8127-4cc6-9be6-23ab9716f785

DEVICE=ens36

ONBOOT=yes

BRIDGE=bridge0

启动网桥组的网络接口

#nmcli connection up bridge-slave-ens36

#nmcli connection up bridge-slave-ens37

查看状态

#brctl show bridge0

bridge name bridge id STP enabled interfaces

bridge0 8000.000000000000 yes

最小化安装系统的时候,需要安装工具包bridge-utils.x86_64

#brctl

Usage: brctl [commands]

commands:

addbr     <bridge> add bridge

delbr     <bridge> delete bridge

addif     <bridge> <device> add interface to bridge   没有配置文件的话,重启就无效

delif     <bridge> <device> delete interface from bridge

show       [ <bridge> ] show a list of bridges

showmacs   <bridge> show a list of mac addrs

showstp   <bridge> show bridge stp info

stp       <bridge> {on|off} turn stp on/off

#bridge -s link

3: ens36 state UP : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100

4: ens37 state UP : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state blocking priority 32 cost 100

删除网络组

#nmcli connection down bridge0

#nmcli connection delete bridge0

#nmcli connection delete bridge-slave-ens36

#nmcli connection delete bridge-slave-ens37

时间: 2024-10-08 14:16:33

Centos网络管理(五)-Bonding、网络组和网桥的相关文章

centOS7网络配置(nmcli,bonding,网络组)

关于网络接口命名 CentOS 6之前,网络接口使用连续号码命名: eth0. eth1等,当增加或删除网卡时,名称可能会发生变化.CentOS 7使用基于硬件,设备拓扑和设置类型命名. 网卡命名机制 systemd对网络设备的命名方式 (a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1 (b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1 (c) 如果硬件接

使用nmcli 实现 bond0 网络组 网桥三种模式

使用nmcli 实现 bond 网络组 网桥模式 bond0(负载均衡) step1:创建一个bond0的主属 nmcli connection add con-name bond0 type bond ifname bond0 mode active-backup 之所以不为绿色是因为还没有创建从属,这个bond0相当于一个虚拟网卡 还没有实际的内容 step2:创建两个从属 nmcli conneciton add type bond-slave ifname eth38 master bo

网络服务高可用及负载均衡2——CentOS7系统网络组

前几天刚给大家分享过CentOS6系统下如何实现双网卡绑定同一IP以达到网络负载均衡以及高可用性.很多人肯定也在想,在CentOS7系统下如何实现了,那么今天就给大家大家分享一下如何使用CentOS7系统的网络组来实现同样的效果了.网络组是将多个网卡聚合在一起,从而实现冗错和提高吞吐量的一种技术手段,但它不同于旧版中bonding技术,提供更好的性能和扩展性,网络组由内核驱动和teamd守护进程实现.接下来就给大家展示一下如何实现. 一.环境需求 交换机设备:两台支持动态链聚合功能的交换机或者一

CentOs网络管理:ifconfig家族,iproute家族及配置文件

 CentOs网络管理:ifconfig家族,iproute家族及配置文件 在centos的网络管理中ifcfg家族一直占有举足轻重的位置,这个家族陪伴着centos走过了艰苦创业的青春岁月.但是按照社会法则,逐渐壮大的centos正在逐渐冷落这个糟糠之妻,迎娶对自己前途更有帮助的更庞大的家族--iproute家族.ifcfg家族正在滑向冷宫,iproute家族即将入住正宫. ifcfg命令家族 ifconfig命令:用于接口及地址查看和管理 ifconfig 显示一启用的网卡信息 [[emai

网络的路由配置以及Centos7的网络组实现

1.路由配置 路由是互联网络的核心,没有路由的网络如同一座孤岛,掌握路由的配置是IT人员的必备技能. 例如:现在有三台主机需要通信,其中A和B在同一网段,C在另一网段,这两个网段有三个路由相隔,如何实现他们之间的通信呢? 主机A:IP=192.168.1.100/24 主机B:IP=192.168.1.63/24 主机C:IP=10.2.110.100/16 R1的接口0:IP=192.168.1.1/24,接口1:IP=110.1.24.10/24 R2的接口0:IP=110.1.24.20/

Linux上利用nmcli命令创建网络组

网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量 网络组不同于旧版中bonding技术,提供更好的性能和扩展性 网络组由内核驱动和teamd守护进程实现. 下面我们以CentOS7系统为环境,演示下如何在Linux系统上利用nmcli命令创建网络组 nmcli connection add con-name team0 type team ifname team0 config '{"runner":{"name":"activebackup&

#21 nmcli、nmtui与网络组详解

nmcli命令: command‐line tool for controlling NetworkManager nmcli  [ OPTIONS ] OBJECT { COMMAND | help } OBJECT:connection | device device - show and manage network interfaces COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }

Centos网络管理(四)-路由转发与静态路由

实验环境:VMware Workstation Pro 14(试用版) 系统平台: CentOS release 6.9 (Final)       内核  2.6.32-696.el6.x86_64 CentOS Linux release 7.4.1708 (Core)  内核  3.10.0-693.el7.x86_64 机器 简称 角色 IP地址 6-2-A A 模拟电脑A eth1 192.168.27.210/24 7-2-R1 R1 路由器R1 ens33 192.168.27.2

网络组相关实验

网络组相关实验 网络组是centos7上新出的一个技术,它的作用和bonding类似,是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量,不同于旧版中bonding技术,网路组提供更好的性能和扩展性,它是由内核驱动和teamd守护进程实现. 网路组可以工作在多种方式(runner) broadcast roundrobin activebackup loadbalance lacp (implements the 802.3ad Link Aggregation Control Protoco