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

本文转自 ljpwinxp 51CTO博客,原文链接:http://blog.51cto.com/191226139/2052906

Centos网络管理(五)-Bonding、网络组和网桥相关推荐

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

    使用nmcli 实现 bond 网络组 网桥模式 bond0(负载均衡) step1:创建一个bond0的主属nmcli connection add con-name bond0 type bond ...

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

     CentOs网络管理:ifconfig家族,iproute家族及配置文件 在centos的网络管理中ifcfg家族一直占有举足轻重的位置,这个家族陪伴着centos走过了艰苦创业的青春岁月.但是按照 ...

  3. 第五章 网络 之 计算机网络

    文章目录 计算机体系结构 计算机网络概念.组成与功能 计算机网络分层结构(各层功能) ISO/OSI 7层模型(权威) TCP/IP 4层模型(实用) 5层模型(折中) 一. 物理层 二. 数据链路层 ...

  4. 华为南太无线解决方案部梁旭阳_工业互联网产业联盟网络组走进华为南京研究所技术研讨会顺利召开...

    12月8日,工业互联网产业联盟(以下简称AII)第十五次工作组全会在江苏省南京市拉开序幕.12月9日,AII网络组在主席张恒升的带领下,一行30余人访问华为南京研究所,与华为园区网络技术专家开展了以& ...

  5. linux nmcli源码,Linux上利用nmcli命令创建网络组(示例代码)

    网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量 网络组不同于旧版中bonding技术,提供更好的性能和扩展性 网络组由内核驱动和teamd守护进程实现. 下面我们以CentOS7系统为环 ...

  6. Linux篇 | 多网卡绑定技术 binding 和 网络组nmcli

    多网卡绑定 "Bonding" 和 "nmcli的网络组Network Teaming" 二者实现的功能一样,但从某种角度,网络组要比Bonding的技术要好 ...

  7. Linux系统上利用nmcli命令创建网络组

    网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量 网络组不同于旧版中bonding技术,提供更好的性能和扩展性 网络组由内核驱动和teamd守护进程实现. 下面我们以CentOS7系统为环 ...

  8. Linux多网卡绑定(bond)及网络组(team)

    Linux多网卡绑定(bond)及网络组(team)   很多时候,由于生产环境业务的特殊需求,我们需要对服务器的物理网卡实施特殊的配置,从而来满足不同业务场景下对服务器网络的特殊性要求.如高并发的网 ...

  9. 第五章 网络 之 计算机网络基础(一)

    文章目录 (一)计算机网络基础知识:从一次完整的网络请求过程分析 (1)域名解析 1.1)域名与ip地址 1.2)域名系统(DNS--Domain Name System) a)DNS本质 b)域名的 ...

  10. 【Linux】【CentOS】CentOS 网络管理

    本文主要介绍 CentOS 网络管理. 1. ifconfig 命令临时配置IP地址 常常使用 ifconfig 命令查看网络设备信息 $ ifconfig   给eth0网卡配置IP地址 $ ifc ...

最新文章

  1. [译]通过wp-config来定制你的WordPress
  2. python3中map函数_解决Python3下map函数的显示问题
  3. [转]你不需要jQuery
  4. 通过改善架构来提高 ASP.Net 应用程序的性能
  5. jqgrid学习(三)
  6. Web安全之点击劫持(ClickJacking)
  7. CentOS下安装jdk1.8.0_181
  8. oracle 查询创建了哪些存储过程
  9. 结构体01:结构体的定义和使用
  10. 时间序列的归一化方法
  11. 大家好 我是新来的
  12. 数字信号处理_实验一_信号、系统及系统响应
  13. java计费系统_Java网吧计费系统
  14. 微信网页授权,以及如何在本地调试
  15. CVPR2020(Enhancement):论文解读《Zero-Reference Deep Curve Estimation for Low-Light Image Enhancement》
  16. 电影记忆之20(恐怖游轮)
  17. “七段数码管绘制”实例详解
  18. Bootstrap typeahead自动补全插件的坑
  19. postgresql导出表结构以及数据到mysql
  20. OAUTH之 钉钉第三方授权登录

热门文章

  1. pandas--groupby相关操作
  2. wordpress本地网站怎么搬到服务器,如何把wordpress从本地服务器迁徙到网站主机上...
  3. 三维卷积伪代码_用于视频超分辨率的可变形三维卷积
  4. arraylist线程安全吗_面试官:用过ThreadLocal吗?它保证线程安全的原理是啥?
  5. 高精度ua级恒流源_UWB高精度室内定位系统案例--漫途科技
  6. Centos Linux 下Pycharm 安装
  7. 通过vue-cli3构建一个SSR应用程序
  8. React入门(暂缓)
  9. VMare Workstation 12 安装 AsteriskNow freePBX
  10. Easy machine learning pipelines with pipelearner: intro and call for contributors