【CSDN现场报道】5月13日-15日,由全球最大中文IT社区CSDN主办的“2016中国云计算技术大会”(Cloud Computing Technology Conference 2016,简称CCTC 2016)在北京新云南皇冠假日酒店隆重举行。本次大会以“技术与应用、趋势与实践”为主题,聚焦最纯粹的技术干货分享,和最接地气的深度行业案例实践,汇聚国内外顶尖技术专家,共论最新的云计算技术实践与发展趋势。
点击查看:大会图文直播 & 全体大会视频直播地址
下午的第三位演讲嘉宾是来自美团云的总经理李爽,他的演讲主题是《内外兼修的云端弹性网络》。在介绍了美团网和美团云之后 ,他重点谈到了美团云全景图,随后他对物理链路、网关、主机网络、控制、浮动 IP、ELB与vRouter、DDoS、VPC、多zone VPC等分开阐述。其中,包括云化的浮动IP池, 一台宿主机可以绑定多个IP,IP切换秒级完成,而且切换过程中服务不中断。ELB提供4层与7层的负载均衡服务,vRouter为vm提供nat和对外连接功能,而自研DDoS设备具备单台20G清洗能力,提供攻击防护以及域名备案检测功能。
以下是演讲实录:
新美大是去年10月份美团和大众点评合并后的新公司,也是目前国内最大的O2O生活服务企业。新美大做了很多“互联网+”的事情,帮助很多实体业务完成了线上的转变,其实新美大的业务的范畴也就可以归纳为3点,第一点到店的服务,还有到家的服务,今天中午吃的就是美团外卖,另外就是在途,包括酒店跟旅游方面的事情。
美团云是美团2013年开始做的一件事情,美团云的目标是为整个O2O的行业做基础的支撑,同时也对公司所有的业务线有很好的支撑,现在也正在尝试如何通过大数据的平台和相关的技术,还有数据和相关产业的融合,推动一些相关产业的信息化进展。
这是整个美团云的全景图,从基础设施一直到上层的应用,今天李爽主要是从网络的角度来阐述美团云怎么构建的。云计算行业里,从开源角度来说,一个是网络的组件,一个是存储的组件,整个开源的环境里面并没有非常好的产品,能满足全部的需求,所以这两点其实在整个做云计算的过程当中也是非常重要的。
美团简单的物理架构,可以分为外网的核心,还有内网的核心,然后下面是接入交换机,美团也用比较标准的OVS的方式直接为所有的虚机去做服务。在整个基础设施中,网络层面,可能会存在一些瓶颈。但是,美团对于后端的业务开发或者流控给予了很大的自由度。美团在基础设施上的投入,原则是说基础设施可能稍微超前一些,不要让业务感知到由于基础设施的瓶颈所带来的影响。
美团要考虑到整个的冗余方案,所以说会有双中心的模式,现在无论是在北京或者在上海或者在其他地区,都会有双中心介入方案,所有的公网,包括所有的内网,都会有双核心的介入方案,这样会保证在任何一个机房或者链路出现问题的时候可以快速的迁移,事实上在一个机房链路宕掉之后可以通过内网把公网流量调度到另外一个机房,这也是比较常用的模式,这没有什么新奇的。
第二点,李爽谈了一些跟自己研发相关的内容,在这里边会有一个网关的概念,一方面是说要承载所有接入的流量进来,怎么控制这部分流量,第二部分就是要出去,怎么控制这部分流量,第三部分涉及业务之间的访问,包括VM和VM之间的访问,包括不同产品之间的访问,怎么去看待。
正因为有这么多复杂的内容,所以传统的经典网络,在云计算环境里面就不是很适合,因为云计算 属于一种多租户的模式,传统网络很难做到这一点,你可以用ACL。但这种大量管理并不适合很灵活的需求,基于这一点,在网关层面,美团云利用DPDK做了很多优化。
如果稍微熟悉一点的,DPDK都算有一些了解,他是Intel开发的网络处理组件,现在整个的自研网关系统基本上都开始基于DPDK做,包括说像BAT这种,也包括金山,他们也都是基于这套东西来做的,他的开发模式会稍微简单一些,因为在产品出现之前,可能还有公司在尝试说用多核处理器来做,但是DPDK出来以后大家整个的流程都发生了变化,都会转到DPDK这个模式上。
基于DPDK,效能要比内核处理效能高很多。基于DPDK的模式,其实基本上就两种编程的模型,其中一种因为所有的数据包基本都认为是hash进来的,这种处理模式什么好处呢,第一个会从网卡角度来讲会自动分流,每个核在处理自己的流量的时候,可以进行无锁化,这就是为什么它的效率会非常高,而且你也不用考虑锁的问题,但这也引入第二个问题,如果你的数据包有业务特征,那实际上就要切换到另外一种模型,可能你需要拿出CPU的一两个核,用他来处理所有进来的数据包,然后再判断你的数据包需要去每个核处理不同的业务类型。
美团现在倾向于或者大部分的实践都是基于第一种,尝试把网络流量变成无状态化。这对于整个业务风险控制会比较好,当发生了单机挂掉的情况下,可以无缝切换到另外一台机器的,如果你有业务逻辑,后端要做一些同步之类的事情,整个复杂度就会提升,但这个还是要跟自己的生产环境相关。
美团云的一些测试的数据,基于DPDK基本上可以达到小包限速的能力,就是在单机比如20G左右,应该问题都不大,之前也测过比如类似于现在在40G网卡,现在CPU跑40G问题不大,跑60G也差不多,所以这样你整个的单台服务处理能力就非常强,并不亚于说你自己去购买一些商用的产品。
去年阿里云经受过一次500多G的攻击,但他自己做了清洗,基于DPDK做了一套清洗的系统,做了横向扩展。还有就是主机端网络怎么做,OVS看起来更像一个交换机,这是一种管理模式或者说管理方式的一些选择性的问题,你可以像一个交换机一样控制OVS。OVS两个版本的对比的情况,最早美团云其实用的是1.1,但是整个的性能跟延时就会高一些,对于流表的处理效果不是很好,到了2.3引入了Megaflow,对于淘汰率会下降,整个性能会有提高,现在Intel还有一个2.4就是基于DPDK来做,已经在内部网络开始试用,但版本上还有一些bug,这块我们跟Intel也在一起探讨这个问题,两三个月以后会尝试把整个上到生产环境里面去,如果切换到2.4以后,那整个对于流表的操作或者响应的延时速度又会有一个新的进一步的提升。
第二点OVS的选择,大规模云计算的场景下,如果业务模式发生很大的变化,或者不能很好控制的时候,OVS对网络的依赖会比较好,一个是延时依赖,一个是带宽依赖,还有一种模式用类似于像智能网卡一样,可以把类OVS的事情移植到硬件里边去,当发生了这种移植的时候,那实际上对整个的网络的结构改变就不会很大,基本上整个软件还可以重新跑起来,这也是为什么选择OVS的原因。
美团云使用了DPDK的模式和内核模式的变化,或者对比的情况,现在可以看到,这个是从VM发包的能力,蓝色的线和橙色的线DPDK的性能好于内核很多。
讲到管理控制的问题,所有的流表的控制,现在对于所有的包括OVS的控制,包括交换机实体控制,美团云都是通过自己的控制器来直接做控制的,美团是从去年下半年开始正式商用VXLAN交换机的产品,据了解国内美团是第一个将VXLAN技术用到生产环境里面的公司。
为什么说美团选择了用硬件来加载VXLAN,而不用软件,在一些环境里面软件对于性能还是有缺陷的,尤其是首包查询,通过VXLAN直接对用户做隔离,就把这一部分的性能问题避过去了,最后我们选了实际上是通过VXLAN包括软件双方面控制,希望很快这个网络芯片能把VXLAN支持的更好,支持的更多。
美团云比较有特点的就是浮动的IP,现在大家可能更喜欢亚马逊那种或者类似的构建模式,他给你一个公网IP地址,跟你私网地址做了个映射,但在你本机是看不到这个IP地址的,但是美团云是做了另外的一个方法,其实美团更希望用户在管理他自己的服务器的时候,就像一台普通的服务器是一样的,所以美团云把整个的IP地址分为两个部分,第一部分来讲的话呢就是主机端的IP地址,你还是有一个公网的地址还有一个私网的地址,但所有业务流量的承载,会承载到浮动IP的网关,有什么好处呢,在流量泛洪的时候不用在最终节点控制流量,比如一个用户买了1G带宽,如果别人向这个用户做了大流量访问,上层如果不做统一的网关,流量一直下到VM才能控制带宽或者控制他的其他的行为,实际上流量已经进来了,可能会对其他的资源就会造成影响,所以把他放到上层来讲,就是卡在最开始的入口处,一旦发现说有类似于攻击的行为或者其他策略的行为,可以在上层整个的网关很方便的做一些类似的处理。
其次,这个网关也是无状态的,只是检查了一些你的行为,是不是产生了攻击,是不是说你的带宽有了一些问题,只是做了很简单的检查,所以说整个的性能是非常好的,还有一个就是我们还要考虑组件的不稳定性,如果真出现问题,你对用户造成的影响是怎样的,把网关作为一个旁路性网关,正常服务模式下这个网关是完全开启的,出问题时将网关自动屏蔽,所有的流量都要走到VM里面去。整个网络模型就变成传统的网络模型,这样的话其实对于用户不会造成什么大的影响,只能说ACL和一些流量的控制行为在短时间内会被影响,但不会影响正常的服务,这个就是比较有特色的地方。
第二个是说有很多的用户有这样的业务场景需求,比如抓取服务的话,也有很多网站会做一些频率的控制,以防你频繁地抓取里面的一些内容。正常来讲如果去用其他的云的服务可能就申请一台VM,当用户发现他的IP被封掉的时候,他再申请一台VM,就不断的做申请,这种申请有什么问题呢,第一点,你的并行度很高,而且对VM资源的消耗量也很高,有了浮动IP就很方便,它和VM之间是解绑的,可以任意做随机的绑定,申请10台VM,100或者1000个IP,可以在这个池子里面不断轮换,在整个云化IP池中,可以实现整个的IP地址的切换,只要调用接口就可以自动换一个IP,这种应用场景里面,你整个生产环境是不用一直被创建一直销毁,这就避免了整个的业务部署的难度。
这个其实就是刚才李爽讲的一个实例的情况,美团云会有一个池的概念,尤其是说在一些业务的高峰期,用户可能对于池化的需求增高就临时申请就可以,会方便很多的操作。
现在一台主机只能绑一个IP,马上会推一台主机可以绑多个IP,对于很多类似于发送邮件或者一些抓取的服务的时候可能会更方便,因为你一台主机,比如绑个几百个IP,这样你控制起来就更方便,而不是每一次要调换循环IP。
还有两个比较重要的,ELB和vRouter,ELB它是有两个组件的,一个是4层,一个是7层,4层的一般很多公司都是用LVS做类似的事情,但是基于DPDK把整个类似的功能全部放到了自己研发的4层网关上,性能会比LVS有一个数量级的提升。在资源不是太充裕,你的公网带宽一百G以下,你可能布几台服务器就搞定,如果你用LVS可能需要很大量服务器的资源;第二方面尤其你受攻击的时候,LVS整个连接新建,性能还是比较有限的,在15到30万左右,阿里曾经开源过一个优化的版本,那个版本应该是在70万左右,好一点的可能对他优化,好一点基本上接近一百万,但其实是基于DPDK,你可以很轻松的做到300万以上,整个的性能就会有很大的提升。
7层就没有什么好说的了,你上面会有不同的一些控制的策略,现在也有公司在尝试,把整个协议栈从内核移出来,但现在由于协议栈复杂度比较高,据李爽了解还是在实施的阶段,并没有实现最终的生产上线。
因为所有的VM并不是跟公网IP有强绑定的关系,那需要做公网访问的时候部署一个网关,所以就做了一个VRouter的功能,希望尽实现对云平台的操作。就像一个类传统模式的网络搭建过程,如果自己去构建一个经典网络的时候,也要配一个网关和路由,美团云的大部分的设计就是沿用此思想。但整个实现会和传统的很不一样。一方面,vRouter可以支撑做一个nat出去就好了,另一方面也可以做一些对接。简单来讲,如果你做了一个对接,可能就是一个小的vpc的功能或者混合云的功能,网络方面就能够完全打通。
在中国的网络环境,今年可能状态还会好一点,去年跟前年攻击量还是很大的,美团也就自己做了一个清洗的产品,我们防攻击的产品也就在外网的核心做的,拿服务器做的应用部署。正常情况下,所有的流量,会正常的去走,美团会把所有的流量用分光来做一个检测。美团发现某一个IP或者是某一个IP段有异常流量的时候,会在外网的核心做牵引,把这个IP牵引到清洗中心里面去,把流量清洗完毕之后再送回来,大家其实做的东西差不多,实现的模式差不多,具备现在一般攻击的识别能力,只要你的能力大于你的出口带宽就OK,这种清洗模式有一个什么弊端呢,即使清洗了,如果攻击时间比较长,还是要消耗你的公网带宽。其实就意味着成本,如果攻击时间长的话,这不是一个很划算的方式。这一块如果你们自己去构建这部分,运营商有黑洞的一些服务,其实你可以去购买这部分服务,也会比较好,尤其是说当你服务一些不是很合规的一些用户,包括一些私服,包括或者是说一部分的非法网站,其实用黑洞可能会比自己做清洗更好。
为什么自己做清洗,美团还有很多的组件都是基于DPDK做的,这方面会比较熟悉,攻击的手法就常用的攻击手法并不多,很快可以基于服务器来做,因为最开始美团也考虑到是不是要用商用的产品,比如买一个防火墙之类的,第一点美团看了一下整个的价格还是比较贵的,清洗能力也不好,并不是有很强的性能,还有就是很难有平行的扩展。今年买了一个40G的,再过半年或者过一年需要一个80G的时候,很难把两台机器放到哪儿协同清洗,但是如果自主研发,通过路由控制方式可以做到协同清洗。
在云计算行业,大家都在做VPC。云计算就是把所有的资源池化,网络一定要通过网络虚拟化来做这方面的调度。但是从整个从VPC的角度来讲,整个市场上或者是说业界并没有很好的标准,所以大家就各有千秋,自己干自己的。如果业务规模小,只服务内部,不用服务外部大量用户的时候,实际上你可以用商用的,几千个子网也够用。如果做对外业务几千个显然不够的,所以美团的VPC方案就做了一个二层映射。对于大用户来讲,会把实际的VXLAN ID给到用户,在硬件或者物理网络里面来构建自己的VPC。如果是一些小用户,他的量不是很大,美团云就做二层映射,把一个小用户放到VPC里面,通过网络控制把用户与用户之间的网络进行隔离。
在不同的区域里面,比如说会有北京的两个区域,这种不同的区域我们会通过Router把两个区域做连接,可以做跨网段的访问的服务,这种部署模式其实更像是原始的构建物理网络的模式。
访问公共服务就成了一个最大的问题,这也是一个其实在不同公司里面大家都有不同想法的问题。美团云做的是稍微比较简单的,因为以现在的规模来讲,整个IP资源池够,软件情况下美团云是做了一个IP的映射,并没有做双层的VPC映射,比较大的公司他们的方案是做双层VPC映射,大家可以感受一下。
反向连接,模式都是一样的,一个正向一个反向。因为VPC最大的问题是,两个用户拥有同样的地址,去访问一个看起来又是相同的地址。所以说一定要在中间做很多的转换,这种转换的话,如果用软件去实现的时候一定要有很好的控制能力和映射管理能力。
当我们在使用VPC的时候,业务路径是怎样的呢?现在我们的RDS服务访问起来比较简单。首先有个四层的网关,后面接的Atlas,再接主库,做库的切换的时候可以保持客户端的连接。即使我们的库做了切换,所有原客户端的连接就到新的库上,所有老的库一直等所有的任务都完成以后,网关才会做连接的中断,这个也是很多产品做不到的地方。
对于S3的访问更加简单,会有一个多区域部署。美团云会通过自己的专线传区域的数据,对于数据的访问分为公网和内网两部分,如果给你一个IP,其实在访问的时候就很麻烦,你不知道你访问的业务还区分内部访问存储还是外部访问存储。外部访问要收费,内部访问不收费。通过DNS,只要是外部的访问,美团云就给你返回公网IP,如果内部的访问就返回私网的IP。另外如果就给用户一个IP,这种实现,公网跟私网流量会有重叠,现在做了一个选择,通过DNS做这部分的内容。
刚才讲的就是美团在构建云平台的时候,网络方面的一些设计思路。总的来说,第一点,美团云在基础设施上,不想做流控这些事情,第二美团云要给用户提供的产品,必须要符合传统网络建设的观念,这样的话能够降低应用成本,第三点是说,因为美团云的业务不仅仅要为公有云的用户服务,也要为自己的业务服务,所以美团云需要构建大量的VPC的网络,完成用户间的隔离。
最后,我们正在考虑把美团云整个的四层负载均衡做开源。LVS开源的时间也很长了,虽然说基于DPDK的版本,很多大型互联网公司都在使用,但在市场上其实没有任何一家公司把这个产品去做开源。美团云会很快地,估计2、3个月之后,就会开放我们的开源产品,李爽觉得可以大家可以在构建更高的软件网络方面一起努力。
谢谢大家。
更多精彩内容,请关注直播专题2016中国云计算技术大会(CCTC),新浪微博@CSDN云计算,订阅CSDN云计算官方微信公众号。