如今,“云计算”已经成为IT业界的热门词汇,无论是专业人士还是厂商,都希望数据中心能发生翻天地覆的变化,很多人高性能计算(HPC)用户也在评估HPC负载是否适合于部署在云环境中。导致这种争论的原因之一是人们不清楚“究竟什么是云计算?”以及“什么样的应用算得上是HPC应用?
HPC应用是无法“一刀切”的,我们很难简单地把某类应用归为HPC应用, 2000年初,计算机应用从集中控制的大型主机转向分布式的计算集群就清楚地说明了这一事实。这种做法不仅将普通的商用硬件带入了HPC领域,也给客户提供了更多的选择。 HPC用户可以按照最低需求来构建HPC,从而节省投资成本。你会发现,有些 HPC系统的节点数较少,但每个处理器配备的内存较大,带宽较窄或节点之间的延时较长;而另一些 HPC系统则可能按照不同的参数要求来设计,所有这些都是针对应用需求量身定做的。
然而,对大多数企业或IT部门来说,降低成本的压力都在与日俱增,因此“按用量付费”的云计算模式也就应运而生。问题的关键是,并非所有的计算类型都适合于云架构。
Rackspace、亚马逊、Savvis以及其他一些 IaaS提供商都采用不同的虚拟化技术来管理其底层的硬件资源,遗憾的是每家厂商采用的虚拟化技术是不同的,而且有时是保密的,比如AWS EC2。因此,对HPC应用来说,究竟是采用虚拟机还是物理机就成为构建HPC云之前需要特别讨论的一个问题。
虚拟化问题
高性能计算(HPC)架构师迟迟没有采用虚拟化技术的主要原因有两个:其一是人们通常认为的虚拟化会严重影响应用程序的性能,虚拟化提升灵活性的优点被其降低了应用程序吞吐量的缺点所压倒;其二是传统的HPC基础架构的利用率已经非常高了(通常为80%~95%),因此,通常推动企业采用虚拟化的动因(提高硬件利用率、整合服务器或提高许可证利用率)不足以抵消使用虚拟化资源运行工作负载带来的复杂性和费用增加的缺点。
然而在很多情况下,HPC架构师又愿意牺牲5%的应用程序性能来获得虚拟化带来的灵活性和弹性。HPC用户愿意这样做的主要原因有以下几个:
安全性——虚拟机可以作为实例添加到虚拟局域网中,或者从虚拟局域网中删除。一些HPC环境要求多组用户之间,甚至用户本身之间实现数据和宿主相互隔离。传统的虚拟局域网通常与物理服务器结合使用,结果造成了资源孤岛,在变化的负载环境中,孤岛将导致孤岛内资源利用率低下。虚拟机和虚拟局域网可以配合使用,把用户彼此隔离开来,并将数据隔离起来,有权访问的用户才可以访问。
应用程序堆栈控制——很多应用程序需要特定的操作系统版本、更新版、代码库和配置等。在混合应用环境下,多个应用共享同一物理硬件,这种情况下,就很难满足所有应用对特定堆栈的要求。采用虚拟化技术,这个难题就迎刃而解了,因为,在虚拟化环境下整个堆栈可以作为应用程序的一部分来部署。
充分利用高价值资产——在异构的HPC系统中,最新(因而最快)的机器常常需求量最大。为了满足这个需求,一些企业采用预留系统以尽量减小用户之间的冲突。但遗憾的是,这种预留系统常常没有得到充分的利用。相比之下,使用虚拟机处理计算作业时,大多数虚拟机管理程序内部的迁移工具允许机会性工作负载使用高价值资产,甚至为一个不同的用户打开了预留窗口后也可以使用。如果提出预留要求的用户最终提交工作负载,要求处理负载,机会性工作负载随后可以迁移到价值较低的资产,以便继续处理,而不浪费任何处理器周期。
处理执行时间长的作业——几种HPC应用程序不提供检查点重启功能。然而,虚拟机技术可以获取和检查虚拟机的整个状态,以便检查以前无法检查的应用程序设置。如果作业运行时间足够长,对于整个解决方案来说有一样的平均无故障时间(MTBF),那么虚拟机内部的检查点工具可能非常吸引人。此外,如果服务器维护是经常进行或具有可预测性,那么虚拟机内部的检查点迁移或暂停运行时间长的作业,可以防止计算时间流失,同时消除执行常规服务器维护工作所面临的任何障碍。
使用HPC云的商业理由
有几个关键因素促使企业考虑实施云计算,这些因素可以帮助企业削减成本,为内部用户提供更好的服务。这些因素是:
按使用量付费——客户可以按照应用程序的运行时间或者按使用存储和数据传输服务的时间支付费用。
近乎无限的基础架构——几乎可以实时享用基础架构;反过来,没有工作负载时,基础架构可以缩回到近乎零资源。
根据工作负载配置资源——可以根据工作负载,随时分配操作系统或服务器的类型,大幅改进了资源配置方面的灵活性。
实施HPC云面临的障碍
尽管云计算有诸多优势,但是在考虑云计算是否适合HPC环境时还有很多障碍需要克服。
安全性和知识产权——云环境中的数据对商业企业来说常常是核心的知识产权。绝不能忽视这种可能性:商业竞争对手可能使用相同的共享计算资源。从法律的角度来看,一旦发生数据泄密,知识产权保护和赔偿条款为云计算使用者带来的追索权很有限。
软件许可——大多数商业企业使用独立软件开发商(ISV)提供的第三方软件来运行或管理HPC作业。这些应用软件在购买时都附有法律协议,明确了该应用程序可以在何处运行,通常都规定该应用程序只能在客户的场地运行。
数据转移——除非企业完全采用云计算,弃用自己的数据中心,否则用于模拟的模和结果就必须在云计算提供商与客户数据中心之间进行传输。然而这项工作很复杂,因为就传输大容量文件而言,互联网带宽很有限;而且对大多数基础架构即服务(IaaS)提供商来说,进出云环境传输的所有数据都是按字节数计费的“收费服务”。
定价模式——按使用量付费的模式常常对客户有很大的吸引力,但如果长期使用公共云,其费用通常比在两年内自己拥有和维护硬件的成本贵两三倍。公司应认真确定在多长时间内使用公共云比使用本地服务器更有优势。
面向HPC的云计算
HPC数据中心必须综合考虑采用云计算的商业理由及其面临的障碍,才能确定这种模式是否适合本企业以及哪种模式最适合自己。
实现HPC云需要几款工具,包括虚拟机管理程序平台、工作负载管理器和基础架构管理工具包。管理工具包应该提供策略定义及执行、配置管理、资源预留及报告等功能。虚拟机管理程序平台应该为云计算资源的虚拟部分提供良好的基础。最后,工作负载管理器应该提供作业管理功能。
对多数大型HPC环境来说,用户需要考虑采用私有云还是混合云解决方案。在混合云环境中,可以在峰值需求期间使用外部公共云,这又叫“云爆发”(cloud bursting);比较小的HPC环境可能应该考虑公共云,使用的所有资源都在云端。不管使用哪一种模式的云,特别重要的是确保基础架构包含可以同时充分利用物理资源和虚拟资源的管理层,因为HPC应用程序仍主要放置在物理机器上。在理想情况下,该管理层应该能够把虚拟机管理程序环境和物理环境合并为一个动态共享的基础架构,既支持多种操作系统,又支持异构环境。
混合云方案对HPC环境来说可能非常有优势,因为它可以提供完成作业所需要的额外计算能力。在下列情况尤其应该考虑采用云爆发方案:
预计作业在本地运行的等待时间过长时;
如果作业在本地运行所需的累计运行时间过长时;
当作业对进出云环境的数据传输要求不高时。
一旦确定了企业实施云计算的最佳方案,就可以采用多种方法来评估IaaS提供商,看看哪一家提供商最适合本企业的应用和工作负载要求。评估时要考虑的因素包括性能、可靠性、创建实例的速度、价格等,此外,还应该考虑每一家IaaS提供商的洽谈和定价流程以及政策,还要对照服务级别协议(SLA)评估可靠性。考虑上述每一个因素对于企业选择最适合其用途的提供商大有帮助。