为什么集群需要 Overlay 网络

云计算学习——Overlay网络技术概述 文章目录1. Overlay 网络1.1 Overlay 技术概述2 Overlay网络与物理网络的关系3.基于多租户的云计算Overlay网络 1. Overlay 网络 1.1 Overlay 技术概述 Overlay 在网络技术领域,指的是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于IP的基础网络技术为主。Overlay 技术是在现有的物理网络之上构建一个虚拟网络,上层应用只与虚拟网络相关。一个Ove. 阅读详情

对计算机网络或者 Kubernetes 网络稍有了解的工程师都应该听说过延展网络(Overlay Network),Overlay 网络其实并不是一门新技术,它是指构建在另一个网络上的计算机网络1,这是一种网络虚拟化技术的形式,近年来云计算虚拟化技术的演进促进了网络虚拟化技术的应用2。

overlay-network

图 1 - 延展网络

因为 Overlay 网络是建立在另一个计算机网络之上的虚拟网络,所以它不能独立出现,Overlay 底层依赖的网络就是 Underlay 网络,这两个概念也经常成对出现。

Underlay 网络是专门用来承载用户 IP 流量的基础架构层,它与 Overlay 网络之间的关系有点类似物理机和虚拟机。Underlay 网络和物理机都是真正存在的实体,它们分别对应着真实存在的网络设备和计算设备,而 Overlay 网络和虚拟机都是依托在下层实体使用软件虚拟出来的层级。

network-and-compute

图 2 - 网络与计算

在分析 Overlay 网络的作用之前,我们需要对它的常见实现有大概的了解,在实践中我们一般会使用虚拟局域网扩展技术(Virtual Extensible LAN,VxLAN)组建 Overlay 网络。在下图中,两个物理机可以通过三层的 IP 网络互相访问:

VxLAN-overlay-network

图 3 - VxLAN 组成的 Overlay 网络

VxLAN 使用虚拟隧道端点(Virtual Tunnel End Point、VTEP)设备对服务器发出和收到的数据包进行二次封装和解封。

上图中两个 VTEP 会相互连接并获得网络中的 MAC 地址、IP 地址等信息,例如,服务器 1 中的 VTEP 需要知道想要访问绿色网络中的 10.0.0.2 虚拟机需要先访问 IP 地址为 204.79.197.200 的服务器 2。这些配置可以被网络管理员手动配置、自动学习、也可以通过上层的管理器设置。当绿色的 10.0.0.1 虚拟机想要向绿色的 10.0.0.2 发送数据时,会经过以下几个步骤:

overlay-network-packet

图 4 - Overlay 网络中的数据包

  1. 绿色的 10.0.0.1 会将 IP 数据包发送给 VTEP;
  2. 服务器 1 的 VTEP 收到 10.0.0.1 发送的数据包后;
    1. 从收到的 IP 数据包中获取目的虚拟机的 MAC 地址;
    2. 在本地的转发表中查找该 MAC 地址所在服务器的 IP 地址,即 204.79.197.200;
    3. 将绿色虚拟机所在的虚拟网络标识符(VxLAN Network Identifier、VNI)以及原始的 IP 数据包作为负载,构建新的 UDP 数据包;
    4. 将新的 UDP 数据包发送到网络中;
  3. 服务器 2 的 VTEP 收到 UDP 数据包后;
    1. 去掉 UDP 数据包中的协议头;
    2. 查看数据包中 VNI;
    3. 将 IP 数据包转发给目标的绿色服务器 10.0.0.2;
  4. 绿色的 10.0.0.2 会收到绿色服务器 10.0.0.1 发送的数据包;

在数据包的传输过程中,通信的双方都不知道底层网络做的这些转换,它们认为两者可以通过二层的网络互相访问,但是实际上经过了三层 IP 网络的中转,通过 VTEP 之间建立的隧道实现了连通。除了 VxLAN 之外,Overlay 网络还有很多实现方案,不过也都大同小异。Overlay 网络虽然能够利用底层网络在多数据中心之间组成二层网络,但是它的封包和拆包过程也会带来额外开销,所以为什么我们的集群需要 Overlay 网络呢,本文将介绍 Overlay 网络解决的三个问题:

  • 云计算中集群内的、跨集群的或者数据中心间的虚拟机和实例的迁移比较常见;
  • 单个集群中的虚拟机规模可能非常大,大量的 MAC 地址和 ARP 请求会为网络设备带来巨大的压力;
  • 传统的网络隔离技术 VLAN 只能建立 4096 个虚拟网络,公有云以及大规模的虚拟化集群需要更多的虚拟网络才能满足网络隔离的需求;

虚拟机迁移

Kubernetes 目前已经是容器编排领域的事实标准了,虽然很多传统行业仍然在使用物理机部署服务,但是越来越多的计算任务在未来都会跑在虚拟机上。虚拟机迁移是将虚拟机从一个物理硬件设备移到另一个设备的过程,因为日常的更新维护,集群中的大规模虚拟机迁移是比较常见的事情,上千台物理机组成的大集群使得集群内的资源调度变得更加容易,我们可以通过虚拟机迁移来提高资源的利用率、容忍虚拟机的错误并提高节点的可移植性3。

当虚拟机所在的宿主机因为维护或者其他原因宕机时,当前实例就需要迁移到其他的宿主机上,为了保证业务不中断,我们需要保证迁移过程中的 IP 地址不变,因为 Overlay 是在网络层实现二层网络,所以多个物理机之间只要网络层可达就能组建虚拟的局域网,虚拟机或者容器迁移后仍然处于同一个二层网络,也就不需要改变 IP 地址。

virtual-machine-migration

图 5 - 跨数据中心的虚拟机迁移

如上图所示,迁移后的虚拟机与其他的虚拟机虽然位于不同的数据中心,但是由于上述两个数据中心之间可以通过 IP 协议连通,所以迁移后的虚拟机仍然可以通过 Overlay 网络与原集群的虚拟机组成二层网络,集群内部的主机也完全不清楚、不关心底层的网络架构,它们只知道不同虚拟机之间是可以连通的。

虚拟机规模

我们在 为什么 Mac 地址不需要全球唯一 曾经介绍过二层网络的通信需要依赖 MAC 地址,一个传统的二层网络需要网络设备中存储从 IP 地址到 MAC 地址的转发表。

目前 Kubernetes 官方支持的最大集群为 5000 节点,如果这 5000 个节点中的每个节点都仅仅包含一个容器,这对于内部的网络设备其实没有太大的压力,但是在实际情况下 5000 节点的集群中都包含几万甚至几十万个容器,当某个容器向集群中发送 ARP 请求,集群中的全部容器都会收到 ARP 请求,这时会带来极高的网络负载。

在使用 VxLAN 搭建的 Overlay 网络中,网络会将虚拟机发送的数据重新封装成 IP 数据包,这样网络只需要知道不同 VTEP 的 MAC 地址,由此可以将 MAC 地址表项中的几十万条数据降低到几千条,ARP 请求也只会在集群中的 VTEP 之间扩散,远端的 VTEP 将数据拆包后也仅会在本地广播,不会影响其他的 VTEP,虽然这对于集群中的网络设备仍然有较高的要求,但是已经极大地降低了核心网络设备的压力。

overlay-network-and-arp

图 6 - Overlay 网络中的 ARP 请求

Overlay 网络其实与软件定义网络(Software-defined networking、SDN)4密切相关,而 SDN 引入了数据平面和控制平面,其中数据平面负责转发数据,而控制平面负责计算并分发转发表。VxLAN 的 RFC7348 中只定义了数据平面的内容,由该技术组成的网络可以通过传统的自学习模式学习网络中的 MAC 与 ARP 表项5,但是在大规模的集群中,我们仍然需要引入控制平面分发路由转发表。

网络隔离

大规模的数据中心往往都会对外提供云计算服务,同一个物理集群可能会被拆分成多个小块分配给不同的租户(Tenant),因为二层网络的数据帧可能会进行广播,所以出于安全的考虑这些不同的租户之间需要进行网络隔离,避免租户之间的流量互相影响甚至恶意攻击。传统的网络隔离会使用虚拟局域网技术(Virtual LAN、VLAN),VLAN 会使用 12 比特表示虚拟网络 ID,虚拟网络的上限是 4096 个。

vlan-header

图 7 - VLAN 协议头

4096 个虚拟网络对于大规模的数据中心来说远远不够,VxLAN 会使用 24 比特的 VNI 表示虚拟网络个数,总共可以表示 16,777,216 个虚拟网络,这也就能满足数据中心多租户网络隔离的需求了。

VxLAN-packet

图 8 - VxLAN 协议头

更多的虚拟网络其实是 VxLAN 顺手带来的好处,它不应该成为使用 VxLAN 的决定性因素。VLAN 协议的扩展协议 IEEE 802.1ad 允许我们在以太网帧中加入两个 802.1Q 的协议头,两个 VLAN ID 组成的 24 比特也可以表示 16,777,216 个虚拟网络6,所以想要解决网络隔离不是使用 VxLAN 或者 Overlay 网络的充分条件。

总结

今天的数据中心包含多个集群以及海量的物理机,Overlay 网络是虚拟机和底层网络设备之间的中间层,通过 Overlay 网络这一个中间层,我们可以解决虚拟机的迁移问题、降低二层核心网络设备的压力并提供更大规模的虚拟网络数量:

  • 在使用 VxLAN 构成二层网络中,虚拟机在不同集群、不同可用区和不同数据中心迁移后,仍然可以保证二层网络的可达性,这能够帮助我们保证线上业务的可用性、提升集群的资源利用率、容忍虚拟机和节点的故障;
  • 集群中虚拟机的规模可能是物理机是几十倍,与物理机构成的传统集群相比,虚拟机构成的集群包含的 MAC 地址数量可能多一两个数量级,网络设备很难承担如此大规模的二层网络请求,Overlay 网络通过 IP 封包和控制平面可以减少集群中的 MAC 地址表项和 ARP 请求;
  • VxLAN 的协议头使用 24 位的 VNI 表示虚拟网络,总共可以表示 1600 万的虚拟网络,我们可以为不同的虚拟网络单独分配网络带宽,满足多租户的网络隔离需求;

需要注意的是,Overlay 网络只是一种在物理网络上的虚拟网络,使用该技术并不能直接解决集群中的规模性等问题,而 VxLAN 也不是组建 Overlay 网络的唯一方法,在不同场景中我们可以考虑使用不同的技术,例如:NVGRE、GRE 等。到最后,我们还是来看一些比较开放的相关问题,有兴趣的读者可以仔细思考一下下面的问题:

  • VxLAN 将原始数据包封装成 UDP 在网络上分发,那么 NVGRE 和 STT 分别使用哪些方法传输数据呢?
  • 在 Kubernetes 中部署 Overlay 网络应该使用什么技术或者软件?
Docker Overlay网络的一些总结 在早期的docker版本中,是不支持跨主机通信网络驱动的,也就是说如果容器部署在不同的节点上面,只能通过暴露端口到宿主机上,再通过宿主机之间进行通信。随着docker s... 阅读详情

相关推荐

Docker网络详解之Overlay

我们在上篇文章说了Docker在单个Docker daemon(即是单主机)模式下面的时候网络默认为Bridge,既然提到了单个Docker daemon,那么多主机即是集群的模式的情况下呢?在这种模式下Docker默认使用Overlay网络来进行容器间的通信。 接下来我们看看我们在加入一个集群或者初始化一个集群的时候会发生什么事情,下面这段话来自官方文档: 首先一个名ingress的overl...

just coding 1824

OpenWrt挂载U盘

OpenWrt挂载U盘 本人一的路由器是Newifi3, 刷成OpenWrt之后发现软件包的空闲空间过小,于是买了一个U盘作为备用空间,照着网上的教程做失败了很多次,感觉主要失败点在于U盘的格式问题(ext4、NTFS、exFAT)和U盘是否已被当作挂载点,路由器重装了很多次。后来自己按照官方文档一步步来最后成功了。 参考官方文档:https://openwrt.org/docs/guide-user/storage/usb-drives-quickstart ...

星宇康的博客 1万+

Overlay网络技术原理介绍.pdf

本文介绍OVerlay网络技术原理,从虚拟网络的发展,虚拟网络面临的挑战,overlay如果解决虚拟网络存在的问题,overlay网络的类型,Overlay的主流技术VXLAN的技术基础,报文结构等介绍。

Overlay网络和VXLAN

1  基于多租户的云计算Overlay网络

翟海飞 3万+

mipi deskew原理理解

何为skew, 从字面意思看是倾斜了,不对齐了;放在mipi的传输中意思就是clock lane和data lane 及data lane与data lane间出现了相位差;一旦出现相位差,大家采样数据时就可能不在同一个节拍上,会出现传输错误。所以就要做deskew,通过做deskew来使得大家重新对齐,在同一个节奏下传输数据. 一般当data rate高于1.5G时建议开启deskew。

lx123010的专栏 8093

Python爬虫实战:用Selenium+ChromeDriver批量抓取政府网站政策文件(附完整代码)

本文详细介绍了使用Python的Selenium和ChromeDriver进行政府网站政策文件批量抓取的实战技巧。从环境配置、动态页面元素定位到分页机制破解和反爬虫策略,提供了完整的解决方案和代码示例,帮助开发者高效获取结构化政策数据。

weixin_42531710的博客 265

Overlay网络

Overlay网络是将已有的物理网络(Underlay网络)作为基础,在其上建立叠加的逻辑网络,实现网络资源的虚拟化。传统网络带来了以下一些问题:● 虚拟机规模受网络规格限制在传统二层网络环境下,数据报文是通过查询MAC地址表进行二层转发,而网络设备MAC地址表的容量限制了虚拟机的数量。● 网络隔离能力限制当前主流的网络隔离技术是VLAN,由于IEEE 802.1Q中定义的VLAN ID只有12比特,仅能表示4096个VLAN,无法满足大二层网络中标识大量租户或租户群的需求。

潇峰的博客 1682

众灵科技24路舵机控制器二次开发实战(1)-STM32串口指令控制详解

本文详细介绍了如何通过STM32单片机对众灵科技24路舵机控制器进行二次开发,实现串口指令控制。文章从硬件连接、通信协议解析到STM32代码实战,手把手指导开发者打通控制链路,并重点讲解了如何调用预设动作组驱动六足机器人,为后续集成传感器、无线遥控等高级功能奠定基础。

weixin_29188997的博客 483

还有人不知道Overlay网络?看完这个你就全懂了

1、什么是Overlay网络? overlay(又叫叠加网络、覆盖网络)简单理解就是把一个逻辑网络建立在一个实体网络之上。其在大体框架上对基础网络不进行大规模修改就能实现应用在网络上的承载,并能与其它网络业务分离,通过控制协议对边缘的网络设备进行网络构建和扩展是SD-WAN以及数据中心等解决方案使用的核心组网技术。 2、为什么需要Overlay 网络? 说到为什么要用到Overlay网络就要提到它的对立面--underlay。 undeelay和overlay图 underlay是

最铁头的网工博客 2万+

SQL Prompt 9.0插件突然无法使用解决办法(附防联网激活)多图+文字

可能由于Redgate公司最近抓盗版抓得严,导致激活后的SQL Prompt联网后突然无法使用,无论卸载重装都没办法继续使用,本人同时使用SQL Assistant和SQL Prompt,我喜欢SQL Assistant代码提示功能,而SQL Prompt我喜欢将查询结果复制后可以直接生产插入脚本,这是最爽的一件事,即便对表有多么熟悉,没有这些插件,几行语法都要敲大半天,目前本人已经离不开这两个插...

骚团长的博客 1万+

Python实战:高效稳定采集微信视频号评论的API爬虫方案

网络爬虫是数据采集领域的核心技术,其原理是通过程序模拟浏览器行为,向目标服务器发送HTTP请求并解析响应数据,从而自动化获取网页或接口中的信息。这项技术的核心价值在于能够高效、批量化地收集公开数据,为市场分析、舆情监控和竞品研究提供数据基础。在社交媒体分析、电商价格监控等应用场景中,爬虫技术尤为重要。针对微信视频号这类动态加载的复杂应用,传统的GUI自动化工具(如影刀RPA)常面临性能瓶颈和风控挑战。本文聚焦于通过Python实现**无感采集**,直接与后端**API接口**交互,构建稳定高效的评论数据采集

weixin_30899023的博客 328

2021-10-20为什么集群需要Overlay网络

对计算机网络或者Kubernetes网络稍有了解的工程师都应该听说过延展网络(Overlay Network),Overlay网络其实并不是一门新技术,它是指构建在另一个网络上的计算机网络,这是一种网络虚拟化技术的形式,近年来云计算虚拟化技术的演进促进了网络虚拟化技术的应用。 因为Overlay网络是建立在另一个计算机网络之上的虚拟网络,所以它不能独立出现,Overlay底层依赖的网络就是Underlay网络,这两个概念也经常成对出现。 Underlay网络是专门用来承载用户IP流量的基础架构层,它与Ov

zero 220

企业网络架构设计:从内网到外网的无缝通信方案

本文详细解析了企业网络架构设计中的关键技术与实践方案,重点介绍了VLAN划分、OSPF路由优化、安全策略及无线网络集成等核心内容。通过OSPF多区域部署和链路聚合技术,实现内网到外网的无缝通信,提升企业网络性能与安全性。文章还提供了具体的配置示例和最佳实践,助力企业构建高效可靠的网络架构。

weixin_28331555的博客 624

Docker overlay网络,宿主机ping不通容器

overlay 网络原理 在创建完一个overlay网络之后,通过docker network ls可以看到网络中不仅多了一个我们创建的 ov_net2 (类型为overlay、scope为global),还能看到一个名为 docker_gwbridge (类型为bridge、scope为local)。这其实就是 overlay 网络的工作原理所在。 通过brctl show可以看出,每创建一个网络类型为overlay的容器,则docker_gwbridge下都会挂载一个vethxxx,这说明确实overl

qq_15138049的博客 1864

cdk&java | 分子sdf文件生成

sdf

ASKCOS博客 1089

SillyTavern 酒馆在 Mac 和 Linux 上的部署教程(含启动器安装方法)

SillyTavern 是一个支持多种大模型聊天接口的本地前端项目,适用于 MacOS 和 Linux 系统。本文提供了两种部署方式:手动安装和使用 SillyTavern Launcher 安装器。手动安装需要先安装 Git 和 NodeJS,然后克隆项目源码并运行启动脚本。使用 Launcher 则更为简便,适合新手用户,能够自动安装依赖和配置环境。部署完成后,用户可以通过浏览器访问本地服务器,加载角色卡片并连接大模型 API,享受二次元角色扮演聊天的乐趣。无论是开发者还是终端用户,都能轻松完成 Sil

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3393

Swarm基于多主机容器网络-overlay networks 梳理

前面介绍了Docker管理工具-Swarm部署记录,下面重点说下Swarm基于多主机容器通信的覆盖网络 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

mnasd的博客 1166

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

通过 Docker Swarm 集群探究 Overlay 网络跨主机通信原理

如题

pcj_888的博客 1745

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

主机overlay和网络overlay_Docker网络篇之overlay模式

overlay网络简介前面介绍过的host网络模式和bridge网络模式都是在单体的docker服务器上的容器间的网络通信。对于多个docker服务器上的多个容器间网络通信就需要使用到overlay网络模式了。overlay网络常常用于docker swarm集群上的服务编排。当初始化docker swarm集群或者docker主机加入已存在的swarm集群时,会默认创建一个叫ingre...

weixin_39714528的博客 1645

阿里云vpc专有网云服务器 docker swarm overlay多机无法ping通

经过多天各种百度Google后还是无法解决 docker swarm overlay多机无法ping通 问题,偶然看到一篇docker swarm 相关文章提到 各大云服务器专有网都是用到vxlan网络占用了udp端口4789,而docker swarm overlay主机间网络通信也是用的vxlan。所以呢 各大云服务器 应该都不支持docker swarm overlay网络模式。 下面是我提...

a704397849的博客 2668

docker swarm 集群及多主机overlay网络测试

docker的swarm集群已经支持多主机的overlay网络,而且目前测试下来发现安装及配置非常方便,跟k8s相比,安装及配置要轻松好多。 测试环境 使用2台虚拟机来测试,操作系统为ubuntu 16.04.04,系统自带内核为4.2,注意overlay需要3.16以上的内核版本。 主机名 IP 备注 ubuntu1 192.168.12.121 manger ubuntu2 192.168...

Poor - Because you have no ambition 3255

什么是Overlay网络?Overlay网络与Underlay网络有什么区别?

通过OverLay技术,可以在对物理网络不做任何改造的情况下,通过隧道技术在现有的物理网络上创建了一个或多个逻辑网络,有效解决物理数据中心存在的诸多问题,实现了数据中心的自动化和智能化。怎么说呢,不同的Overlay网络虽然共享Underlay网络中的设备和线路,但是Overlay网络中的业务与Underlay网络中的物理组网和互联技术相互解耦。2. 流量传输不依赖特定线路。

2237

docker中的overlay网络详解

Docker的overlay网络详解

baidu_38956956的博客 5329

Docker网络和overlay的基础讲解

1:由于创建的容器加入默认网络之后,我们的容器IP是会发生变化的,我们此时通过pingIP地址是可以PIng通的,但是为了服务方便,我们不会去记住他们的ip地址,而是通过ping他们的服务名,但是我们通过在默认网络里面,去ping服务名,是ping不通的。因此我们需要实现自定义的网络,因为在自定义网络里面,在同一个网络中的容器IP地址,会被自动解析。这样我们就可以通过ping服务名即可通讯。2:我们在自定义网络的时候,我们还可以指定这个网络的网关,子网,ip,以及一些特定选项。

记录一位C++爱好者的笔记 1597

【K8S】详解容器网络中的overlay、underlay

Underlay网络性能优于Overlay网络。Overlay网络利用隧道技术,将数据包封装到UDP中进行传输。因为涉及数据包的封装和解封,存在额外的CPU和网络开销。虽然几乎所有Overlay网络方案底层都采用Linuxkernel的vxlan模块,这样可以尽量减少开销,但这个开销与Underlay网络相比还是存在的。所以Macvlan、Flannelhost-gw、Calico的性能会优于Dockeroverlay、Flannelvxlan和Weave。............

带你去吃小豆花的博客 6243
上一篇: 如何正确的开始用 Go 编程
下一篇: 关于高可用的系统
kobejayandy
博客等级 码龄18年 2853粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值