去哪儿网CTO吴永强:虚拟化技术在“去哪儿”的应用
以下是演讲实录:
吴永强:我对这个行业很熟悉,特别是互联网行业。虚拟化在互联网行业开展很多年。去哪儿网是一个比较典型的中性企业,钱不多不少,投入有限,可能我们也就是几百兆,一千兆。人也是不多不少,我们现在130个人的技术团队。今天大部分人都准备做云计算,我的演讲主要是介绍一个中小型企业在发展中,对云计算、虚拟化的需求是什么,考虑的思路是什么,更多不是讲我们做的多好。
我第一个介绍一下去哪儿网。我们是05年成立的,目前现在是世界上最大的旅游搜索引擎。我们在2011年中我们成功超过携程在线。我们目前专注于旅游方面最大的网站。我们发展时间很长,现在有六年时间。我们做的东西又像互联网又像电子商务。我们主要产品有机票、酒店、现在还有团购、度假等服务。机票酒店前面是一个搜索引擎,后面是一个交易引擎,团购更多的像一个交易引擎。去哪儿网是一个相对来说技术上比较混合,业务上也比较混合的业务。我们现在又在积极开展移动互联网,我们有安卓、iPhone手机客户端。在iPhone在中国的应用旅游排到第一。
大家看到这个图,如果做过互联网新兴企业这张图并不是很漂亮,但是做电子商务是非常好的一个图。大概我们三年翻了三十几倍。每天消息系统承载60万消息,峰值2000条左右。因为我们是一个搜索引擎,每天大概是25000万次的数据获取。我们的实时数据大概有36个G,564万次访问,峰值是14000。70%的数据能够在3秒内得到服务,90%的数据能够在8秒钟提供服务。
我讲一下虚拟化在去哪儿网的故事。任何一个初创的企业,我是07年加入去哪儿网。互联网初创企业在初期不会有特别多的钱,开展业务的压力显然是很大的。第一个就是成本给它带来的压力。当时我记得很清楚,买一台服务器要考虑很久,像机房和带宽都是成本。一个初创企业可能买十个服务器至少能够养一个半人一年。第二个是部署速度慢,不能满足业务的需求。而且互联网初创企业增长根本没有计划性,同时功能扩展非常快,初创时候就是一个简单的功能,可能两三年内功能就变得越来越复杂。另外从老板开始大家都很着急,大家都想把这个业务快点做起来。
使用不均衡。忙的忙死,闲的闲死。忙的拼命加服务器,闲的撤不下来,互联网没有这个机制说放出去东西还能撤下来。另外互联网的应用通常要求有高可用性,基本上每个部件至少两个服务器。我们当时就想怎么应对这个情况,最简单的就是复用,但是发现维护的脚本,维护的系统都会非常复杂。还有一个是说重用,需要比较多的操作。
产品应用多了之后,开发人员多了之后,互联网企业里面它还有一种问题是开发测试系统越来越多,像BEto、staging。
精打细算,机器上一台一台加。购买、上架,部署,还没有实施完,应用死掉了。刚才说到重用,确认结构制订重用方案,重新安装,重新部署应用,有时候刚刚重新安装完,过两天又涨回去了,又得加回去。
虚拟化已经是非常流行了,我们想到了一个方法就是虚拟化,把计算资源部署和物理部署分开,当然我们考虑肯定是要使用开元软件,部署管理简单,而且我们必须能够在上面做二次开发。所以当时就选的产品Ovm/xen它是非常成熟的,也是大家用的比较多的,有基于web的管理界面,剪裁比较好,300M。
实施过程当中也很纠结,物理的beta环境迁移到虚拟化的时候,我觉得是一个摸索过程。因为至少从目前看,一般的企业,中国没有成熟的公用云的结构,绝大多数企业它一起来就是物理结构为主开发模式,基本上是开发向beta和staging整合,大家用了一段时间觉得没有什么太多问题,然后才向vlan做虚拟化。后边使用过程中遇到系统规模增大之后,你的网络处理,包括原有的监管和管理工具,其实最后都是有很多的工作要做。还有一些系统的结构,现在物理机或者数据库上机制都会随着你用分布式的结构会做很多的调整。目前我们70%以上的服务运行在xen上。
虚拟化并不是所有都适合,现在最大的问题还是在磁盘上,它是一个机械部件,以机票搜索为例两年之内搜索量增加37倍,系统模块数量增加7倍,物理服务器数量只增加70%从52增加到88台,instance从52增加190。我们现在所有服务器的平均使用率,虚拟化之前是15%,现在我们大概控制在55%到60%之间。另外资源使用更加有计划性。
增加服务器自动化程度很高,从以前的5天到1天,到现在5分钟就可以实现。业务人员要审核一下,你这个行不行,一台机器从开始到结束两分到两分半中。ops去IDC的次数由以前的一周两次变成一个月1至2次就OK了。OPS的工作变化从实施到自动化。
以前我要衡量你这个应用有多少负载,有多少计算器,我给你多大的内存,每一个服务器都是不一样的。这是靠人的经验。后续就会有非常多的操作,比如说升级,4兆不够了要8个兆。
分享一下我们在虚拟化过程中的经验。第一个是性能,虚拟机的性能肯定是有损失的,从我们的测试来看,同样配置的虚拟机性能大约为物理机70%左右。管理虚拟机应用的时候通常是按模拟化。
网络规模扩大,一般一个公司在一开始的时间从20台机器发展起来,大家都在一个网段里面,后来发现不够时了,要跨网段虚拟化的时候,当时遇到很大的问题。如果中型公司想转一开始设计就应该很好,不像我们一开始没有设计,中间的时候再去折腾,这个还是非常。
另外安全分区需要。然后部署,我们一开始虚拟化非常简单,就是直接拷贝映象,后来发现这个太慢了,网络拷8个兆的要拷一会儿,后来直接装机器,直接在网上面部署应用。跨vlan的部署能带来极大的便利性。可用性,需要考虑放置服务器的方法。
刚才我讲到了如果你没有规划好,那就很惨,一个服务器是物理设备,一定会当掉,当掉之后你会发现上面一堆都当掉,那么影响被放大。物理服务器就从大家眼中消失了,但是其实你还是要去管理,因为它的负载。你会发现虚拟化不太彻底,一般来说做不到彻底,因为你有很多的应用IO型的应用不适合虚拟化。那对应用人员很考验,因为他管的是两套,所以我们现在也想办法怎么样把两套融合。
因为今天是云计算,我是一个小公司的CTO,平时关注云计算不是那么多。只是有些时候会考虑一下这个问题。去哪儿网是一个互联网企业,他非常理解互联网业务特点。从我们自己理解,它有非常多的特点,业务增长不可预期,一个业务很可能因为一次事件,或者一次活动会得到非常大的增长。
第二个是产品演讲不可控,它的周期很短。
第三个互联网的开发跟传统企业开放都很大的区别。绝大多数都是迭代式开发,系统优化常常落后于系统的发展。第一个承载的是业务,然后才是我的性能比较差了,或者资料使用太多了,我们需要优化,所以它一定是落实的。造成的结果,像我们这样的企业对资源的需要是不停的波动,而且波动的幅度很大。可能我一个业务出来之后,突然需要一百个服务器,但是优化完了之后就减少了。你看我们公司我大概算了一下,搜索量和我机器的图。虚拟化它其实对于我们这样的企业虚拟化并不解决它的伸缩性,它只能涨不能少。因为机器出去之后一个企业没办法收回来卖掉。结合第一个我讲的它有时候飙的很高,我很快会让他下来,所以其实资源的使用,其实我们有虚拟化,资源使用是非常充分的,还是跟这个过程非常相关。
第一个它并没有改变我固定资产投入的方式。一个企业最不愿意投资资产,最不愿意投入机器。另外没有改变运营支出的方式,不是用多少付多少。然后虚拟化同样我的应用人员和开发人员还是没有从资源调度中解放出来。我的应用人员并没有从物理建设当中解放出来。还有一个绝大多数的公司都在做同样的事情,储存系统,如果没有云的话,这些东西大家都得自己做,没有共享。一个公司最主要的是业务,而不是做基础设施。特别像去哪儿网这样的公司最看重的是业务,并不是我们下面有一个多牛的储存系统,因为我们是网站和商务结合。虚拟化只是我们最初的一部分,云的挑战对一个企业很大,包括一些系统结构的变化,开发理念的变化,运维理念的变化,安全管理的挑战。
大家如果要做公有云的话我是热烈赞成的,我可以从中得到很多好处。第一个还是资源伸缩性问题。然后是硬件和IDC的定制,目前我们即使用了虚拟化,硬件和IDC还是以前的,成本跟以前差不了多少。而这些是我们这个规模的企业不可能做大的投入。如果有公有云的话,我更希望有一些共享基础服务。这些虚拟化解决不了的问题可能就是未来公有云存在的机会。
最后一个怎么迁移是个大问题。公有云要开展业务对于现代企业更多的是考虑你怎么帮他迁移,因为大家一想到迁移就崩溃。