【51CTO 11月18号外电】为什么要拥有服务器硬件?在过去的15年里,每当服务器出现故障,或者需要对各台Web服务器、邮件服务器和数据库服务器进行升级,我就重复在问自己这个问题。我原本可以选择向托管服务商租用专门硬件,或者使用共享主机。但是我的要求所需的资源其成本将远高于采用租赁方案后分摊下来的费用。于是,我只好拥有、维护和更新自己的服务器。
这种状况一直持续到了去年秋天,当时我试用了虚拟专用服务器(VPS):在高端服务器上运行的拥有根访问权的虚拟化服务器,专门为了满足你这个用户的需要。虽然数年来你可以向众多公司租用VPS,但是选择方案在2010年特别多。软件已成熟,可靠服务已可用;相对绝大多数网站执行的那种常规Web和数据库任务的性能而言,其成本现在具有相当大的优势。
竞争很重要。因为竞争不但促使价格降下来,还确保如果某个主机服务商未能满足你的要求,你在选择另一家服务商时有众多选择。从一种服务迁移到另一种服务并非易事,但也不是什么可怕的任务。亚马逊推出弹性计算云(EC2)后,我先关注了虚拟化主机服务;此后进入这个领域的提供商逐年增多,提供的服务也不大复杂。去年11月,我终于决定试水;到去年年底,我扔掉了自己拥有或帮助管理的所有服务器硬件,一并扔掉的还有相当大的压力和成本。性能更好,备份更简单,我晚上也睡得更安稳了。四个月下来,我遇到过几次小麻烦,但总的来说运行相当顺畅。
本文将逐步介绍为什么应该选择VPS,而不是专用服务器或共享主机;介绍如何选择你所需要的服务和方案,可能会出现什么岔子,以及如何应对备份和灾难。如果你在运行几台对外的服务器,时常但无规律地需要应对繁重需求,或者需要为遍布各地的工作小组或个人维护共享服务器,就应该学会如何评估一个或多个VPS主机是不是适合自己。
我直接使用过Rackspace的云服务器(Cloud Server)和Linode同名的Linode。我还试用过亚马逊的EC2,我经常使用这项服务,处理一项经常性的数据库构建工作。在文章末尾的图表中,你能看到其他服务在价格和功能方面相比如何,但我无法提供坊间传闻。
无法逐一罗列所有的服务提供商,也没有这个必要。将有些提供商排除在外,是因为其价格高得离谱。比如说,Ubiquity Server Solutions对Linux VPS收取的费率两倍于本文中提到的其他公司,又没有什么明显的理由。
VPS与专用主机托管和共享主机托管的比较
VPS是在一个共享硬件上运行的虚拟机器。一台功能通常很强的多核主机经配置后,可以提供专用内存池;共享核心、单核或多核;以及硬盘存储空间。主机通常提供一系列的GNU/Linux操作系统,供客户选择。有些主机还提供一个或多个版本的Windows Server。(苹果允许使用Mac OS X Server虚拟化,但只能用在苹果硬件上,还要求为硬件和每个虚拟化实例单独购买许可证。苹果终止了机架Xserve服务器,因而我们不太可能看到任何大规模的虚拟化。)
与VPS连接的存储系统具有持续性:如果你的虚拟机或运行虚拟机的主机硬件崩溃或断电,重启后,可以在上一次停运的地方继续运行,当然硬盘故障除外。亚马逊是唯一的例外,我会单独讨论。可能还需要恢复文件系统,这视操作系统而定。由于Linux中有ext3日志功能,我还没有发现除了简略的启动修复之外还需要什么操作(不过,备份虚拟机相当容易,我们会在下一篇文章中讨论)。
VPS在几个重要方面有别于租赁专用硬件设备或使用共享服务器场地
如果你向提供商租赁专用机器,无异于被这个硬件绑住了手脚。这在过去还是个特别的优点,因为别人无法使用你的处理器周期资源,你想执行什么任务,可以执行什么任务。
然而,要是专用硬件出现了故障,主机服务商就得找出备用部件,必须移除、重新指向或恢复驱动程序。有些主机服务商承诺手头备有这种部件。如果你的要求超出了专用设备的限制,就得安排迁移到另一个物理硬件上的事宜。如果你突然需要10个一模一样的专用主机,这安排起来很费时间。
提供专用硬件的主机托管服务商可能并不为备份主机提供简单的解决方案,备份主机可能完全是你的责任。这就使得恢复同样很困难,或者需要支付按小时计费的昂贵的“远程操作服务费”。
至于共享主机托管,你与其他用户共享同一台机器。你不知道有多少人的网站或其他服务在系统上运行,也不知道你在某个时间可以使用多少的计算功能。众多的节制系统试图牢牢控制每个用户,但是这好比一群人在拥挤的房间里,只要有个人大声喧哗,别人就无法谈话。
如果你自己使用过多的资源——无论出于正当原因,还是由于编程上的错误,可能会被踢开、被建议升级到专用硬件,或者受到节制,结果任务完成不了。共享主机通常不断地增量备份,但这得不到保证:你得承担一部分风险,确保自己也有备份。
(现在开始出现了一种共享主机替代方案,Rackspace的Cloud Sites就是典例。它比共享主机方案要贵不少,你也无法获得根访问权。但是你的文件和脚本散布在能够自动扩展的一组机器上。基本费用相当于一台专用计算机。它奇特地结合了虚拟化和共享主机,适用于不需要调整后台服务器的流量较大的网站。如果某网站大多数时候每天的页面浏览量平均为5万人次,但偶尔猛增至100万人次,那它很适合采用这种方案。还有内容分发网络(CDN),可用于分发静态页面、组件、图像及其他媒体,按每GB量收费。)
VPS消除了硬件方面的任何顾虑:无论主机服务提供商作出什么决定,其选择对你来说是看不见的。你获得了专用服务器的一些优点,因为VPS看起来就像一个设备,与一组特定的硬件相连接。如果主机有闲置周期,许多服务器允许你在峰值时期的处理器使用率高于保证的极限值,因而在那个方面提供了小小的优势。最近,我在Linode运行的一台MySQL服务器在几小时内保持着400%的处理器使用率。
你仍要负责维护操作系统的运行,可能会把什么事情弄糟。但是你也可以将系统快照作为备份来保存,万一犯了重大错误,可以迅速恢复到快照。如果主机硬件出现故障,VPS服务可以迅速将你迁移到另一个系统上(我已经碰到过这种事)。
一旦你创建了合自己心意的VPS,几乎所有VPS服务都允许你复制。遇到了流量激增的情况,你可以启动额外的一横一样的镜像。有些服务还提供工具,以便在这类服务器或循环DNS之间均衡负载。亚马逊在这方面显得尤其灵活,它设计的系统让用户可以启动1000台服务器,然后停用这些服务器,用户只需要为运行期间的使用量付费。
#p#
亚马逊一直是个例外
亚马逊率先大举进军虚拟服务器主机托管领域;就本文提到的每个方面而言,亚马逊的服务几乎总有例外。(亚马逊不是率先提供虚拟主机的,但据我回忆和发现,亚马逊率先提供实际上没有限制的容量来创建主机,并向持有有效信用卡的人提供服务。)
剩下来的***区别在于,亚马逊的标准服务在运行时,不保留一份启动磁盘镜像的持续性常规副本;有办法添加持续性,但我在测试中觉得持续性并不可靠。如果你的标准镜像崩溃了,就无法从那个点来恢复。长期以来,这使得EC2局限于用在负载均衡网站,或者亚马逊的简单存储服务(S3)拥有所有数据***副本的系统。
本文提到的其他所有VPS服务只提供持续性磁盘镜像,只有在你付费购买VPS期间,它才完好无损。大多数服务供了存储这种磁盘镜像的功能,即使你删除了实际实例,以后还是可以恢复过来。
你可以创建一个亚马逊所说的自定义的亚马逊机器镜像(Amazon Machine Image),它让你可以拿来标准发行版后进行修改,然后把它作为可装入的镜像写入,用于许多实例。这对于想要创建某几种特定配置的多个实例的公司来说很有用。
亚马逊还让你可以根据需要,创建持续一小时、一星期、一个月或更长时间的实例。由于VPS提供商在某个机器上分配了特定的持续性存储空间,实例不用后必须删除掉,不过你通常可以通过存储镜像来恢复,你只要支付存储费,就可以保存存储镜像。
为了避免没有持续性存储空间的问题,你可以用命令来创建实例,那样它在系统启动时就能执行任务。依赖EC2的那些用户使用这种脚本,即可利用持续性但非挂载式的S3服务,将文件拷贝过去,亚马逊并不因此计算带宽的使用量;可以通过亚马逊弹性块存储(EBS)服务挂载持续性卷;或者连接到亚马逊关系数据库服务(RDS)处的持续性MySQL架构。同时结合三者使用其功能也相当强。
虽然亚马逊在一年前就开始提供持续性、可启动的EBS卷,但我还是无法让这些卷运行起来如同亚马逊机器镜像(AMI)一样可靠。实例会突然终止。你可以暂停这种实例,不用为运行时间付费;但我并未发现可以在运行状态下恢复这些实例。
捣鼓了一番后,我还是创建了完全符合自己要求的实例。我使用标准的AMI,然后对它进行定制。一旦定制完毕,我创建了快照,作为基本镜像。我把所有脚本和数据存放在持续性EBS驱动器上。我启动自定义AMI,然后挂载持续性驱动器,运行每周一次的数据库构建任务——这项任务要花几个小时,而且很耗费处理器资源,无法在我的生产环境上运行。又经过了一番调整后,我可以启动AMI,它正确地挂载了EBS卷,开始运行。
别指望这很容易。即使有比较新的管理控制台可以通过浏览器来使用,你还是无法在亚马逊环境下随便搭建服务器。事先一定要要有更充分的规划,尤其是你要想清楚如何应对实例崩溃及其他因素。
#p#
如何在众多选择当中挑选
每项服务都有其不同;在比较任何两项服务时,你有时觉得大同小异,而有时又觉得得大相径庭。
基本的思想是,你购买的是主机计算机的一块资源,封装成了虚拟机。大多数资源的价格按256MB内存的倍数计算,即使服务器可能最少从512MB或1GB开始计算。硬盘存储空间通常按同样的方式来划分,常常按256MB内存的倍数和10GB磁盘存储空间的倍数计算。
大多数服务让你试用一下:你可以从某个服务级别入手,比如1GB服务器,然后迁移到更高级别(或更低级别),停机时间只有短短几分钟,或者甚至只需要简单的重启。凭我的经验,如果服务器运行Apache或MySQL,每天处理数十万个请求(数万人次页面浏览量),那么至少需要2 GB;如果同一系统上同时运行Apache和MySQL,4 GB必不可少(我自己的配置是一台2GB Web生产系统,另一台是外界无法访问的专用的4 GB MySQL服务器。)
一两个公共IP地址已包含在内,而专有地址通常是免费的。额外的公共IP地址往往每一个每月需要1美元。大多数主机只允许两到四个额外的公共IP地址。过去运行不同的SSL/TLS Web服务器需要这些公共IP地址,而现在不再是这样了。
服务和成本方面最主要的变化因素是带宽和吞吐量。每家主机公司都有各种独特的组合,涵盖提供的服务、收取的费用和许下的承诺。为了简单起见,许多主机为每台服务器添加一定数量的带宽,只有用户超过了默认的带宽,才收费。带宽一般与服务器的内存及其他资源成比例。对于我联系的每家主机服务商而言,专用IP之间的流量是免费的。
比如说,Linode为分配给服务器的每256MB分配了100GB的入站和出站传输带宽。该公司还把你服务器的所有数据分配量汇集起来。我在Linode有2GB和4GB的VPS,每月传输的数据量总共2.4TB。2GB VPS是一台可能超过800GB使用量的Web服务器,但我根本没有接近总数据量,因为我的4GB服务器就运行MySQL,只是通过专用网络来通信。
与带宽不包含的竞争对手相比,Linode所收的费用相差并不明显。比如说,Rackspace只对传输的初始部分数据收费,费率标准为出站流量(服务器传输到互联网)每GB 0.22美元,入站流量每GB 0.08美元。如果用户每月传输1TB数据,Rackspace要多收220美元,而Rackspace的基本费率已经比几个竞争对手要贵一点。
Dreamhost和没有列出来的另外几家公司提供了传输数据量没有限制或者非常大的服务,它假设很少有客户会用这样的服务,确实有其道理。Dreamhost完全属于高端VPS主机服务商行列。
有别于数据传输量的是吞吐量,即每台服务器允许或者保证传输到互联网的每秒兆比特数量。主机服务商并没有特地宣传或解释这一点。
一般来说,主机服务商为每个VPS提供大约数十Mbps的吞吐量(入站和出站)。你似乎买不起更高速率的服务。有几家服务商提供速率高得惊人的连接,比如一家名为100TB的公司可以为每一台服务器提供千兆以太网交换服务,对互联网连接没有节制措施(然而,要是不进行全面测试,不可能知道在其或其他服务商的系统上与互联网之间的吞吐量通常会是怎样。)
VPS的另一个优点是,随着后端硬件变得更便宜,服务商不断升级,就算价格没有跌下来,功能应该也会增加。Linode去年就为所有实例添加了40%以上的内存,没有改变价格。需要重启VPS,才能获得新分配的内存资源。
本文帮你针对虚拟服务器实际所需的硬件部件作出了决策,下一篇文章将大致探讨操作系统及其控制。
# 附表
表1:带宽比较
表2:备份比较
原文链接:http://arstechnica.com/business/news/2011/02/virtual-private-servers.ars