eBay宣布拥抱容器,将全面整合Kubernetes和OpenStack

飘蓝 2015-11-23

在线拍卖及购物网站eBay比亚马逊(Amazon)成立晚一年,但却比Google、Facebook等众多的巨无霸要早。和其他的伙伴们一样,eBay也为大量的用户提供服务,它在190个国家拥有1.59亿活跃买家而且支撑了超过8亿条商品信息。要支持海量用户并非易事,这需要持续扩展基础架构,所以eBay一直在积极地拥抱新技术。

为了管理云端基础架构,eBay在三年前把虚拟机从VMware的ESXi Hypervisor切换到了OpenStack之上的KVM,因而成为OpenStack的早期忠实用户(eBay使用他们自行部署的OpenStack,做了大量的定制化开发)。该公司从大约300台运行“Essex(艾塞克斯)”版本OpenStack的服务器起步,很快在三年后eBay和PayPal就共同运行在“Havana(哈瓦那)”版本上,超过30万个核、支持了超过1万2千个KVM hypervisor、通过Open vSwitch虚拟交换机横跨了十多个可用性区域(Availability Zone)而且为了公司多个业务部门的需要配置了超过15个虚拟私有云。

现在,eBay开始在前端使用由Google开源的Kubernetes容器调度系统,而且eBay计划把它与OpenStack结合在一起来管理容器化的应用程序。

eBay是世界顶级零售商品牌之一,它的规模不能和诸如Google、Amazon、微软和Facebook这类的超级巨无霸相比。但是,它的基础架构也非常大,而且该公司非常重视基础架构,包括使用集装箱式的数据中心、用燃料电池供电、使用惠普和戴尔的hyperscale(超大规模)级别的主机而且经常使用定制化的超强处理器。(我们听说,eBay喜欢让它的处理器运行时温度高一点儿来获得更高的系统性能,但eBay却没回应过这个传言)。

eBay云计算技术服务团队的资深成员Ashwin Raveendran本周在KubeCon 2015会议上说他们正在尝试使用Kubernetes容器调度器来增强他们的OpenStack云。eBay是第一个愿意把OpenStack和Kubernetes结合的大型IT企业。Raveendran说eBay(在七月已经同PayPal支付服务进行了拆分)还在继续扩展它的基础架构而且当前在超过15万台服务器上使用了50多万个核。一个更直观的说法就是,这使得eBay的服务器集群规模已经同Rackspace Hosting及Softlayer这类的公有云服务提供者一样 。

在eBay一个典型的可用性区域拥有5000到20000台服务器,而且服务器会被分配到500个节点的chunk中。有意思的是,根据eBay在过去公布的一些数据,在2013年(在它剥离PayPal之前)它的CPU核数呈现为线性地增长而VM以及部署在其基础架构上的项目的数量则是指数级增长。关于存储,我们猜想eBay拥有超过200PB的容量,它应该运行在相当多的服务器之上。截止今年春天,1.6PB用于Cinder块存储。大约120PB的存储用于支持Hadoop,这也使其成为世界上最大的分析平台之一。

Raveendran在eBay所就职的数据及基础架构服务部门每秒钟从应用程序和基础架构监控系统中抽取2百万个指标(metrics),而且每天生成300TB以上的日志文件因为它每天需要处理十亿次查询并且显示200亿以上的图片。它显然是一个庞大且复杂的操作,而我们简化了一点儿。

eBay的平台栈看起来和大多数的现代企业在概念上很类似。

eBay宣布拥抱容器,将全面整合Kubernetes和OpenStack

OpenStack统一管理服务器和存储,并抽象出计算、存储和网络等资源。当前,eBay的现有系统强制每一个应用程序实例运行在它自己专用的虚拟机中。eBay使用Kubernetes不仅仅是改为用容器来部署应用程序,而是在该公司以基础架构的云计算层为中心来改变应用程序的生命周期 (包括构建、部署、监控并且修复问等开发者和系统管理员需要执行的关键功能)。eBay计划以容器作为运行环境而Kubernetes在OpenStack之上来管理这些容器来实现更佳灵活的部署模型。eBay所采用的Kubernetes使用方式是受到了他们当前在虚拟机里部署应用程序的自主技术的启发。

当前的设置如图所示:

eBay宣布拥抱容器,将全面整合Kubernetes和OpenStack

目前,eBay的大多数程序是用Java开发的。而且和很多基于虚拟机的商业集群一样,eBay的集群也是以静态的方式来调度的。严格地讲,这种方式意味着基础架构云中的服务器节点被分配到每一类负载中,就像这样:

eBay宣布拥抱容器,将全面整合Kubernetes和OpenStack

在集群中静态地调度节点显然不是一个理想的状态,但是很多公司在部分应用程序存在很大峰值的情况下也同样在其私有云中静态地分配容量。“这些服务对于相应的私有云而言是很大的问题,而且当我们需要容量的时候也不能迅速扩展到公有云上去“,Raveendran解释到。“我们不得不最大化地利用我们的资源”。

(除非你能创建和Amazon类似的自己拥有的公有云,当然我们跑题了)。

但是为什么诸如Kubernetes和Mesosphere等技术越来越受关注的原因之一是当多个负载共享一台主机时他们对于服务器的开销要小得多,而且可能更重要的是运行扩展负载的容器相比于传统的服务器虚拟化能够以一种快得多的方式启动和终止。曾经老旧的软件容器技术又焕发了新生,而且现在对于那些在过去的十年里使用相当重的技术来进行服务器虚拟化的企业而言很有诱惑力。他们现在开始明白什么时候坚固异常的虚拟机隔离手段并不必要而什么时候容器就可以满足需求了。

eBay主动拥抱了容器,但也需要继续在其基础架构云中支持虚拟机,因此它计划使用OpenStack的Magnum插件,请看五月的文章了解该平台的信息,它是用来将Docker Swarm和Kubernetes容器调度器引入OpenStack。

eBay宣布拥抱容器,将全面整合Kubernetes和OpenStack

如你所见,eBay将用Kubernetes加入Docker容器运行环境的kubelet主机代理进程替代其自主的主机代理进程。应用程序将从一个容器仓库下载并被部署到Kubernetes pod中的一台服务器,而且pod中的所有服务器在需要时可以被共同地管理。这个配置也将在eBay当前的基础架构中淘汰静态的负载均衡器和防火墙,Raveeddran称之为基础架构运维中的一个大瓶颈。当这些都完成了,动态调度看起来就是这样的:

eBay宣布拥抱容器,将全面整合Kubernetes和OpenStack

Raveendran解释说是Kubernetes能够吸引eBay关注的原因就是因为它是开源软件,有很多人在一起协作而且eBay可以有所贡献也能从中受益。可能更重要的, 在多个运行Docker容器的公有云上Kubernetes可以用于控制器层,这使得eBay在需求发起时有能力扩展到公有云而且工作负载能够从eBay的分布式私有云迁移到一个公有云中。

Raveendran说,转向Docker容器和Kubernetes来控制工作负载并不是没有挑战。如很多人多年来抱怨的,网络是OpenStack的一个挑战,特别是当前的现实问题是OpenStack并没有一个同Amazon Web服务(AWS)和Google计算引擎(Google Compute Engine)类似的虚拟路由器。但这里是eBay对于如何解决它的思考:

eBay宣布拥抱容器,将全面整合Kubernetes和OpenStack

其想法是使用OpenStack的Neutron网络插件来创建一个Kubernetes路由器。Raveendran说在经历了一个漫长的过程后,eBay只是将用于网络三层所有路径的边界网关协议(BGP)下放到服务器主机而非仅仅停留在基础架构中的机柜顶部交换机(TOR)上。这些是eBay的巨无霸伙伴们为了简化网络已经完成的事情,它使得一个单一网络囊括了差不多10万台设备(有时会更多)。

相关推荐