大家好,我是来自新环科技的李洋今天和YMYY的刘文芒同学给大家带来的技术分享叫做多集群eGo CNR通信实践也就是在多个集群之间使用不同的CNR进行封卖式的通信相关内容今天的主要内容有以下几点首先我会给大家介绍一下大数据产品对网络的一些基本需求其次给大家介绍一下这些产品对eGo CNR的需求然后之后刘文芒同学会对安锤架构做一个详细的介绍然后我会请接着我会对eGo CNR基本原理做个介绍以及基于eGo CNR的最佳实践最后简单介绍要基于eGo CNR做了更多的实践首先大家可以看到左边这个图我们新环公司其实有大量的大数据应用及月压应用以应对不同的业务场景然后随着原生的发展这些应用逐渐的网源上轻移也就是像我们的新环大数据平台轻移后面就减成TTC然后在这些应用上移的过程中我们逐渐发现了一些他们的网络一些特点首先他们是这些大数据应用基本都是有状的应用也就是他们内部存在着大量的点对点通信比如说一个基军出手化的过程中可能就需要POD直接进行协商而这些协商就依赖POD之间的直接通信还有一些数据的抗备对分比如说我们可能会需要在这个基金中找到就MAS的角色的POD然后再直接和POD进行数据的抗备就是减据点的通信其实我们的客户可能会部署多套TTC基军然后就是随着业务量的上涨而还有一些业务形态的变化比如说联盟应用那么这就让他们就有跨基军通信的这种需求还是传统跨基军通信可能牵涉到比如说NOTEPOD但是它就有单点故障等一些确定然后业界也有一些其他的方案比如说是用Eastdale 三文文刃等这种跨基军通信方案他们都是属于这种集中式的通信方案并不适应于大数据运用这种大流量的场景所以真的这几个问题点我们就设计了一个HomeMesh的通信方案为了解决这些常规跨基军通信的问题我们在Flandon的接触上引入了跨基军HomeMesh东西为什么是Flandon呢这是因为我们的TPPC基群我们之间是基于Flandon的最运内部通信的我们设计到通信方案之后Flandon基军之间的POD就是可以直接互相通信避免了性子上的损耗同时跨基军的通信和基军内部的通信是完全一样的像能够做到高效的通信来满足大数据运用的网络需求当然这套方案对扣的环境也有一定的要求首先就是基军间工作节点他们必须直接互相通信第一次基军间的POD网络不能够重叠最后就是Flandon真的Flandon他们的水能关系必须相同刚才也提到我们的TPPC基群其实就是基于Flandon基型内部通信的但是大家也都知道Flandon它的定位其实比较明确它是一个小而美的CNR插件它其实就是提供基本的网络通信能力但是随着业务的发展随着永远升的成熟度越来越高其实基本的网络通信能力其实不能够满足客户的进一步需求我们客户可能对网络的更高的更多的高级功能也有了更进一步的需求然后我们列举了我们需要一些核心功能在对策刺通过这些核心功能对比我们发现Flandon首先看基本都不能够支持的然后安吹的其实基本对每个核心功能都能够很好的支持而其他CNR就或多或少一个或两个可能就不能够支持了所以从功能多样性来说其实我们就比较偏向于使用安吹这个CNR除了功能性我们还对CNR性能进行了对比这个数据是来是一年前的一个数据大家可以看到在这个数据对比过程中安吹是明烈前茅的尤其是我们比较关注的是TCPE或者Dapod的这种点点重新的性能大家可以看到安吹甚至和Flandon相比它是稍微有些偏高的所以从理论上来说我们的大数据因为从Flandon接换到安吹之后今天的网络传说能力肯定不会下践甚至有所提升其实我们考虑的未来可能引入UDB相关的应用我们也对比了UDB的性能其实发现安吹也是明烈前茅的所以从性能上明烈来说我们对安吹其实也没有安吹其实也就有一定的优势的最后一点也就是我们对比较关注的一点吧新的CNR需要能满足这三点首先第一点就是使用新的CNR机群能够和Flandon机群进行封卖室通信为什么呢就是我们的客户可能以前部署了也就版本的推进机群然后又部署了新版本的机群然后这也就要求是两个机群之间他们能够进行封卖室通信来满足大数据应用的需求这是一点其实呢就是使用新的CNR机群他们这些机群之间也能够进行封卖室通信其实这个也是必然的他们也要能够实现做到那种Flandon那种封卖室通信的能力然后第三点就是使用新的CNR机群能够和其他更多CNR机群进行封卖室通信这是为什么呢这是因为我们的大数据应用有可能不仅仅部署在我们的TTC机群也有可能部署在其他其他运行场上的机群里面而且他们的机群使用的CNR可能和我们不一样这也就要求我们的新的CNR能够最大限度的兼容这些其他CNR做到封卖室通信然后为了满足这三点需求其实就对新的CNR有很高的要求就要求它具有很高的可扩展性而安全这个CNR它是基于二班位随起来做了一个新量型CNR它就有很高的可扩展性根据我们的需求来对流量进行定制化管理大家可以看到我们从功能多样性然后从性的方面以高可扩展性的三方面的角度来对立最终我们选择了安全所以我们作为我们云烟生体的下一代CNR接下来就请瘟瘟瘟的研发经理刘文峰同学他也是安卓项目的负责人让他来对安卓的强性架构做一个强性的介绍谢谢大家谢谢李洋和新环公司对安卓尔的高度认可由我来介绍安卓尔项目的技术特点以及社区的发展情况我叫刘文峰是Winware网络与安全部门的高级技术经理安卓尔是我们部门主导研发的一款轻量级的开源CNR网络插件主要想法是在OpenVswitch的基础上实现Tonatis的跑的网络我们是在2019年中做了圆形设计那么在2019年11月已经在白美的pubicon上手撕亮相了那么今年5月正式捐赠给了CNCF成为三box项目赢得了国内外很多开发者的关注可能有人要问在各种CNR已经百花齐放的今天为什么我们还要一软缺呢那么熟悉Cubanatis集权的人都知道Cubanatis落地最大的痛点其实是网络问题因为技术战狠复杂一辆出现问题那么很难整顿比如说一个pod的流量就是Qproxy组件中Qproxy组件那么处理的就是Cubanatis业务相关的流量它使用的是IPTable的技术那么对overnight的封装又使用了隧道技术那么对于安全控制的实现都采用了另外一种技术那么安雀尔使用了OpenWaveSwitch完成了对上属功能的所有实现所以说技术战非常痛因为OpenWaveSwitch具有可编程性能力可以灵活的满足各种特殊的网络需求这是安雀尔的重要优势也是新环选择安雀尔的原基因我PBT的右手边是安雀尔项目的开源地址以及在Cubanatis的slap频道欢迎访问了解更多的技术特点简单介绍一下安雀尔的社区发展历史我们目前的媒体有四位其中两位是中国工程师所以想而易见中国团队对安雀尔项目有很强的主导性那么和国内的小伙伴比如说新环公司的沟通和合作是非常高效的安雀社区从2019年底推出第一个版本开始每六到七中就会发布一个新的版本那么这几年安雀社区日益壮大目前已经发展到了1200颗星150名来自世界各地的贡献者以及200多个github fog目前和我们深度合作的厂商有共有云AWS ErrorGoogle Cloud那么安雀尔已经成功的部署在各大共有云上运行了那么和inter的合作呢主要是对电信还有5G网络的支持和NVIDIA的合作主要是在smart leak那么我们和新环的合作主要是在大数据领域新环使用了安雀尔的灵活的拓展能力解决了一购多集群的互联互通的问题那么里杨会在后面的章节具体介绍安雀尔的目标是运行在任何cubanitis可以运行的地方它可以部署在共有云、私有云以及iot边云云安雀尔本身对素子机的资源占用很小即便是不符的泡的数据数不庞大那么它对于CPU的消耗及内存的占用其实是很小的很适合互联网的幼影场景由于AWS本身的跨平台性那么安雀尔可以支持各种操作系统包括Linux,Windows和ARM那么这里需要特别提到的是安雀尔已经完成了和各个商业版的Cubanitis Distro的集成包括OpenShift,Runcher当然还有Wenweir自己的Tanzoo安雀尔强大的网络属性以及卓越的性能主要是来源于OpenVswitchOpenVswitch是SDN领域的实施标准虽然它是一个开源箱但是具有工业级的品质主要的主要优势就是可编程,一条式跨平台和高性能OpenVswitch主要是基于OpenFlow来实现数据的交换和转发它是通过一组OpenFlow的流表控制数据包的解析和转发的策略而这些流表规则是由安雀尔通过对OpenFlow的编程来实现的这种可编程的属性是安雀尔吃各种高级的功能毫无压力比如说安雀尔有自定义的强大的安全策略级以及对Kubernetes四种Service的支持和处理下面我们来介绍一下安雀尔的架构安雀尔应该主要是分为两部分一个是集中式的控制器也就是Controller它主要是负责真听APS server接受所有的Kubernetes资源的配置信息那么经过计算和解析比如说对Network Policy的计算和解析就会把配置信息推送到相关的工作阶点上举个例子用户配置了应用A到应用B的安全策略那么Controller就会翻译出B的IP地址并且把这条和A相关的规则只发送到所有部署A的节点之上那么它的优点显而易见它是一次性的极色防止每个工作阶点做重复的极色而且非常容易实现拓展支持大规模的几群部署那么另外一个部分是AgentAgent是分布于每个工作阶点上它的功能主要是包括接收和处理Kubernetes Cucculate最POD的指令也就是POD Left Settled的控制它会给POD分配IP并且把它插入到OBS网销里连入POD网络同时它也会接受Controller的配置信息比如说我们前面提到的接收到的安全策略会直接转换成OpenFlow的规则把它编入OBS的流表里它的功能简单直接所以说对资源消耗不多可以最大限度的保证工作节点上各种应用的运行然而还可以提供多种网络模式比如说Overlay模式Knowing Cap也就是飞风装模式以及Policy L1的模式Overlay的模式是我们的默认模式它是一种标准的虚拟网络技术它可以屏蔽底层承载网络的差异但是也有些客户对限能要求很高因为Overlay会引入一定的Overhead所以说确认也支持不对POD的包子任何风状那么这要求底层承载网络对POD的网网段它的路由进行预配也就是说直接POD是可路由的Policy L1主要是在公有云上的运行模式按确只负责安全控制不做连通信的实现那么按确还使用了大量的Kubernetes的原生铺比如说使用APS Server Lib来进行Ctrl和Agent的通讯弹码体系和Kubernetes各大模块技术天然同源可以跟随Kubernetes社区及时的进行技术别带那么按确一个最重要的特点就是他自己有着自己拓展定义的Network PolicyKubernetes标准的Network Policy主要是通过Label来选择原端和目的端的POD并且设定访问的规则Kubernetes的Network Policy是Name Space级别的那么意思就是说这些规则只能用Name Space内部的POD但是真正的Data Center世界上对防火墙的要求远远不止这些我们根据现有数据中心的调研拓展了以下的功能那么最重要的就是把Network Policy划分为不同的层级那么层级之间是有优先等级的差别的这样的好处是不同的安全管理者可以完全控制自己所在的层级我用担心和别的管理者产生冲突目前安全隐入的层级从高到低分别有紧急层安全管理层网络管理层平台层应用层Kubernetes管理层Kubernetes管理层和基础层那么紧急层级有最高的优先级主要是用于一些突发事件比如说DOS攻击那么基础层是Base Line一般是设置最基本的防火墙的防护我们除此之外我们还把Name Space的防火墙扩大到了Cluster作用于举行用户定义从某些Name Space到另外一些Name Space的安全规则除此之外Name Share还扩展了对圆端和目的端的群体的支持不光可以定义Pod用户还可以自定一些实体Antity比如说我们可以支持虚机支持Service还可以支持Walknode那么这些都可以作为安全控制的目标群体Name Share另外一个特点就是强大的可视化工具期Name Share实现了和普罗米修斯的集成可以展示各种关键的性能指标比如说对CPUMemory的利用率以及Ntr内部的处理速度我们还实现了和Octand的集成是为了支持一些可视化的插播书题的功能比如说Traceflow它的作用是定义圆端和目的端的Pod然后Ntr会把这个数据包所经过的逻辑模块包括流表和规则以图形化的方式展示出来我们还实现了和ELP的集成主要是为了监控Kubernetes集权内部的流量用户可以自由的查询任意Pod或者Service之间的实时和历史流量数据那么它可以实时的观测到异常流量及时的采取测试下面我们来讲一讲数据平面随道模式闪去的默认模式那么简而言之就是从Pod发出的二寸包会被OBS封装成UDP包那么UDPUDP包的目的地址是Tanel的另一端也就是目的炮的所在的主机地址这是一种经典的虚拟网技术可以屏蔽底层网络的差异性只要是两台主机可打那么就可以把不同容器组成同一个逻辑子网那么对于异构的Kubernetes集权之间的互通线就是通过安雀尔的OVERLAY模式来实现安雀尔在最新的版本1.4中已经完全的替代了Qproxy用安雀尔PROXY来处理所有的Service相关的流量那么安雀PROXY实际上是一组OpenFlow的流表它可以将虚拟业务的IP翻译成BackendPodIP然后经过隧道发送出去那么使用安雀PROXY替代Qproxy有很多的优点那么最重要的就是所有的Service处理都是由OpenFlow流表来实现基础战狂很统一降低了整段的难度下面是我们对ClassedIP业务数据的一些测试的结果大家可以看到和Qproxy相比那么OpenFlow的流表具有很显著的限量优势这两种技术都是需要对ServiceIP进行翻译的但是安雀PROXY亦如的Overhead并不多那么主要的原因在于两者使用的数据结构不同Qproxy使用的IPTable它的数据结构是线性结构那么随着Service规模的增大处理时间也会延长而OBS使用的是类似于HashMap的数据结构它的复杂度是OE所以说规模级别增大那么性能也不会受到很明显的影响OK这就是我对安雀的总体介绍那么剩下的时间交给李洋谢谢经过刘峰同学对安置项目的介绍大家应该对安置项目有了一个基本的了解下面我就给大家介绍一下基于安吹做的多级决议购CNR通行的原理在介绍这个原理之前我先给大家快速介绍一下囤购CNR他们的通行的原理当今大部分的情况下我们会使用House的Local整整方式对于PODIP进行分配在这种模式下每个Node他们都有一个POD网段然后POD的之间的通信其实大部分的情况下都依赖于主机路由就如图上所示后面我就对Flanter和安吹在不同模式下的通信方式做一个简介首先大家看最右侧二层执动模式其实Flanter和安吹他们都支持这种二层执动模式路由也比较相似他们通过目标节点的物理IP将报文进入右转其实这也就是意味着如果安吹和Flanter他们的节点在二层执动的情况下他们可以通过配置主机路由来将他们的网络打通这也是POD性能最高的这种通信方式再看下WayCharm模式Flanter的WayCharm模式其实就是很大程度上就依赖主机路由他们会将报文通过主机路由转发到WayTab社会上然后进行发送而安吹模式有些区别他们这个时候依赖主机路由他们其实依赖Flanter的柳表然后匹配目标网段然后再将对应的IP地址设置到WayCharm隧道里面然后之后进行报文的转发还有WayCharm的模式WayCharm的模式是安吹1.3版本之后引入的这个也是依赖主机路由的先报文转发到WayCharm的社会上然后再进一步的进行转发上面是一些文字描述这些文字描述反映到图片上就是如图所示吧大家可以看到黑色的自己其实就代表着二层直通路由模式蓝色代表着WayCharm隧道模式然后红色就代表WayCharm的模式直通路由模式下安吹下面泡的就是通过比较硬则然后到先到达Gateway口然后然后按照主机路由的方式将把我们转发到物理网卡上然后发送到最端而FlanNode也其他类似或者报完到达CNN0往前之后然后通过主机路由到达物理网卡再进行转发而WayCharm模式下安吹这边是报完到达比较硬则的特门口之后就直接进行封包然后通过WayCharm转发到对端节点而FlanNode有些区别到达CNN0往前以后越来越主机路由将报完转发到WayType社会上然后进行封包通过WayCharm的最大转发而WayCharm的模式的话可以看到报完到达CNN0往前之后然后按照主机路由到达WayCharm的身份上进行后续的转发处理而FlanNode的话其实不支持WayCharm的但是我们经过理论分析的话其实处理起来也比较紧只要在这地方加一个WayCharm的设备它通过一些精彩路由将报完引到WayCharm的设备其实就可以通信了这是他们的同购CNN的流量走向而这张图其实就代表着我们最真正的目的就是要实现一个CNN的流量走向首先二层直动模式和上路秘密介绍的基本上是完全一样他们可以通过停下转发的路由来进行往后的打通WayCharm的模式下也是希望他们之间能够通过WayCharm随道进行直接通信的包括WayGuard的身份包括WayGuard的模式也是通过类似的方式进行打通其实经过这些原理的介绍大家也应该都比较清楚了像二层直动模式下还有WayGuard的模式他们实现起来就是相对比较简单的而WayCharm的模式两边他们的实现原理有些区别所以需要额外处理一下后面我就会针对WayCharm模式如何做到一个CNN通信做一个简单的介绍再介绍他们的一个CNN通信的原理之间先给大家快速普及一下安置的一些parallel大家可以看到左边这张图这张图你代表了安置里面使用的所有的台宝包括跨界点通信是依赖的ARP Respawner这种台宝还有后续的Contract的设置匹配台宝还有Service的访问台宝还有出入方向的安全策略还有三层转发二层转发等等其中我们需要最重点关注的就是跨界点通信相关的台宝主要有三个首先是台宝20ARP代达它是对目标节点的网站设备建议一个代达其次就是台宝70三层转发刚才也给大家看到了它其实目的就是匹配目标的网站然后设置相应的WayCharm最大进行三层的转发最后还有一个二层转发台宝80这个其实就是寻找发送出去这是安全的拍摄站的简介如果大家有信息的话可以看一下官方网站来了解更详细的内容下面我会对这次上面提到的这种三个台宝进行详细的介绍吧首先比如说ARP代达大家可以看到这条留表的内容它的Action还是比较明确的其实就是把元麦克和目标麦克交换了一下修改了一下ARP分辨这个自断其实就相当于把ARP Request的报问转换成了一个ARP Respond的报问针对安水道Franco我往往跟大家提展就是黑色字体就是安水道安水的留表然后红色字体就是安水道Franco的留表两条留表的区别其实就是有一个麦克地址的区别安水道安水的话他们跨几点东西的时候他们会是一个全局的麦克地址BBCDEF全局麦克地址然后目标键点收到报问以后然后会根据全局麦克地址做进一步的处理而安水道Franco的情况下Franco测试其实不识别全局麦克地址的所以我们这个时候我们不能再使用这种全局的麦克了而需要将这个麦克地址提防为目标键点Franco设备的实际的麦克地址然后设置进去之后我们根据目标节点的网段设置Wichara隧道就是台湾其实大家可以看到根据目标网段然后设置现在的Wichara隧道的目标地址他们的区别有两点首先在安水道安水里面他们会把目标麦克设置为之前提到的全局麦克地址而我们这个时候就需要将这些麦克地址设置为目标节点的Franco设备的全局麦克地址实际麦克地址除此之外我们的安水如果想和Franco那边进行Wichara通信网也需要去把他们使用的Wichara隧道ID是一样的也就是WinI也需要一样所以我们需要将Wichara的设得使用的WinI后提到然后也设置到我们这边去把他们使用相同的WinI这是三层转吧其次就是二层转吧二层转发的话其实他们的目标其实都是从特等和Witib设备上发送出去所以后面的Action其实就是完全一样的唯一的区别就是安水和安水的情况下它们是匹配全局麦克地址的这时候我们不能再这么做了我们就叫匹配Franco社会的麦克地址安水设了三个留板的处理Franco其实他们处理方式也比较简单就和Franco到Franco的处理方式基本上完全一样的比如添加ETL 精彩路由然后设置FTB和FRP的一些信息而经过这些设置其实他们就可以做到了迫得到迫得的通信了上面介绍了其实是基于安水的也依购CNN通信的原理我们基于依购CNN时间跨新旧基础的点准点通信之后除此之外我们还可以做到更多就比如说Franco1和Franco2他们使用的UI不一样就像最开始说的如果他们使用的UI不一样的话是两个Franco基础他们这件事没法直接通信但是我们可以使用安水来自定义流表就是它可以跟不同的Franco通信的时候使用不同的UI这个时候不仅仅是做到他们安水和其他基础的点准点通信安水的基础甚至可以做到其他基础的桥梁就比如说做到Franco1和Franco2基础的数据的中级区这是一个最佳事件除此之外还有一个我们可以使用CodeS的一些插件就比如说有一个CodeNet的AR插件使用了这个插件以后这三个基础他们内部的CodeS域名可以直接互相识别的也就是说我们在他们基础通信的时候我们可以直接使用HighLess的方式炮的域名直接进行通信这样大大的减化了他们的通信方式除此之外大家可以看到这边既然我们频率的CR的不同而做到了一个CR通信那我们在上层其实就可以对CodeS进行任意的设置就比如说看左边这张图我们可以在基础2里面基础2里面创建一个COS-A然后包含两个Anapoint这个时候我们可以在基础1内部也创建同样的COS-A这个时候基础1基础1里面访问这个COS-A也可以做到将他的报门在基础2内部进行负载进行这是其中一个事件大家再看右侧我们可以在两个基础内部完全相同的COS然后两个基础内访问COS-A的时候是可以做到跨基础负载进行当然我们可以做到一些其他的设置比如说清和性的设置这样的话就会做到基础1访问COS-A的时候在基础1内部负载进行基础2访问COS-A的时候在基础1内部负载进行当基础1内部的所有的POD都不可用的时候然后自动切换然后基础1访问COS-A的时候就可以做到在基础2内部进行负载进行这样可以做到快速的准备切换上面给大家介绍一些最佳通信通信的一些最佳实践吧这就是我们多基础1共产党通信的5点目标吧首先第一点就是5单点瓶颈做到POD到POD的直接通信也就没有了这就是一种单点故障其次基础1服务自由访问就像就比如说跨基础1的搜索访问就可以做到像基础1内部访问搜索访问是一样的方便再倍能力多样性就可以做到这种很快速的准备切换或者双活的这种再倍能力还有一种网络模式支支多样性就是我们可以做到支支底层多种CNA做到网络模式这种多样性这种大小传输因为我们现在可以做到了全分模式在POD的到POD的通信上也就是没有了传统到我们那种集中式网关集点的那种通信化级的通信方式上面是基于安水的也抑构生涯的相关时间除了除了这个时间我们其实我们基于安水还做到了更多就比如说第一点我们基于安水做到了零信任网络框架其实安水它提供了很灵活的安全策略比如安水基于这些概念为底座就设计了一套零信任网络框架架构还有第二点就是基于安水的一些原IP地址识别功能就是大家都知道外部通过notepad等方式访问基金内部的服务的时候可能会做一次Snet的将原IP地址进行的修管像POD内部就无法获取真实的原IP了我们就配合安水的一些功能实际了这套原IP地址识别功能就是这样就满足了一些神机类的应用对真实原IP的需求还有其实我们基于安水就到了服务高可用功能安水它提供了一个Eguards功能Eguards然后它可以对外提供一个就高可用的这种服务IP然后就能够不介绍外部负责精神器的方式就能够提供服务高可用功能解决了单点故障问题大家可以看到我们其实是基于安水做了很多的功能也希望大家尽快地参与到安水社区里面将安水做得做大做强下面就请刘文波同学对于安水的参与方式做一个简单的介绍谢谢大家谢谢李洋分享了利用安雀实现易购网络联通的解决方案我们期待未来有更多的合作近一年来安雀社区本身也引入了很多重量级的新功能比如在安雀社上游我们也会支持Multiple Glaster多级群的联通安全控制以及集群间的服务发现当然这是基于同购的安雀社区的多级群是另外一种实用场景那么PPT上展示了各种安雀社区的资源地址和参与方式欢迎大家访问我们的Gay Hub可以选取入门级的A-Show参与开发也可以记住安雀社区的slap频道和全球的开发者云原生网路安雀那里会有大量的基础文章进行深入的介绍这就是我们今天的Tab Talk谢谢大家的关注希望越来越多的开发者能够加入安雀的大家庭让我们一起努力让安雀社区扎根中国发展壮大谢谢