如何在跨多云平台实现部署管理 云和虚拟化
关于云计算服务的讨论往往都是从AWS开始的,但是对于绝大多数企业来说,这并不是云计算应用的全部。在业内,越来越多的企业都在实施使用多个云计算平台的发展策略,所谓多个云计算就是指囊括公共云计算和私有云计算,从而实现避免受限于某家供应商、提升交付可用服务的能力、避免套利差异或者保持对特定敏感信息的控制权等。虽然使用多个云计算平台可谓是一剂良方,但是它也会导致应用程序、API和配置等方面诸多管理问题的产生。
由于多个云计算平台并不会共享通用API、对于服务的定义均各自不同以及计费模式也不尽相同,所以跨多个云计算平台的应用程序管理和基础设施配置将是一个非常复杂的问题。但是,这并不会成为实施多个云计算平台策略的瓶颈,这是因为市场上有着大量的成熟软件和软件即服务(SaaS)选项可实现跨多个云计算平台的部署自动化。然而,所有的自动化工具都是基于一个共同的概念框架的,即把云计算资源当作是一个如同软件代码一样可配置、可运行和可管理的抽象对象。因此,在开发运营方法学和组织模式之间就存在着一个交集。
多个云计算模式势在必行
你是否认为使用多个云计算平台只是适合于那些高速发展的初创公司或跨国大企业?再想一想,根据RightScale发布的年度云计算调研报告《2015 State of the Cloud Report》,近六成的受访者同时使用了公共云计算和私有云计算。此外,有14%的受访者制定了多个公共云计算的实施战略,而55%正在使用混合云计算。也许你无法接受RightScale的数据和判断,但是业内领先的云计算管理软件供应商,Forrester咨询公司也提出了类似的数据和看法。Forrester公司发现,超过半数的大型企业已经在使用一个以上的公共云计算供应商,三分之一或以上的企业则在使用三个或三个以上的云计算平台(图1)。
图1:大多数公司都正在使用多个云计算平台
多个云计算这一趋势是非常合乎逻辑的。没有哪一家企业会想要让他们的重要基础设施完全唯一地依赖于某一家供应商,即便诸如AWS这样庞大可靠的业内巨头也是无法让人完全放心的。事实上,如果缺乏包括若干可用区域在内的合适的AWS架构,亚马逊本身也是会经常遭遇中断事件的, 例如当北弗吉尼亚州出现几个小时中断时,AirB2B、Tinder、Reddit等都难以幸免地被殃及池鱼。
然而,正如Forrester公司所指出的,不同云计算平台之间的异质性常常是导致众多IT专业人士感到焦虑的主因。基于多家供应商的混合云计算模式要求用户决定如何管理不同的云计算平台以便于为云计算应用程序的开发人员和企业用户提供较为一致的使用体验。不一致的管理接口和监控接口会让他们感到特别的沮丧。事实上,RightScale公司的调研报告指出,约四分之一的受访者表示管理多个云计算平台是一项“非常非常具有挑战性”的工作。究其根本,Forrester公司的数据表明, 管理多个云计算平台的最大问题包括:
- 不同供应商之间的服务一致性;
- 不同云计算平台之间的工作负载迁移;
- 跨多个云计算平台的管理整合;
- 以及支持不同云计算最终用户的门户网站。
“云计算无关”部署软件能够帮助解决上述四个问题。
“云计算无关”管理软件简介
数十种软件和SaaS产品可实现跨多个云计算平台的基础设施和应用程序的自动化管理。其中一些软件重点关注特定需求或应用场景。例如,Cloudyn是专为资产和成本管理应用而开发的,它包括了为特定工作负载确定具最高成本效益部署选项的工作负载优化器,而CSC使用之前ServiceMesh产品,重点关注云计算管理、安全性以及生命周期管理。诸如Cliqr、Cloudify以及ElasticBox这些其他类产品则采用了一种以应用程序为中心的方法来实现云计算自动化。
最流行的多云平台产品一般都被众多企业用作针对云计算管理的开发运营方法,它可将应用程序编程扩展至基础设施配置与管理的范畴。事实上,每一种工具的重要区别就是它所选择使用的编程语言。
谈起云计算自动化,大多数人的脑海中会出现RightScale;但是,就该公司自己的调查报告显示,最常用的基础设施开发运营工具是Chef、Puppet、Ansible 和 SaltStack:
Chef:恰如其名,Chef把基础设施配置、部署 和管理等工作都集成在一起,可让任何运行Chef客户端的系统解释。当然,在后端还是存在着一些服务器复杂性的,但是,正如我在SearchAWS发布的“在AWS中使用Chef”一文中所详细介绍的那样,Chef可以管理云计算应用程序部署的所有工作,它可以在云计算本身内运行(即Chef服务器、开发人员工作站、系统节点和分析引擎等都可以作为IaaS实例运行)。Chef支持的主要云计算服务包括:AWS、Azure、Google、VMware(vCloud Air)、IBM公司的Softlayer以及SmartCloud Orchestrator 和 Rackspace/OpenStack。
Puppet:Puppet被称为是协调软件的开山鼻祖,该产品不仅自身成熟而且还受到了广泛支持。Puppet拥有一个基于类的领域特定语言(DSL),其设计灵感来自于Nagios配置文件格式,它类似于JSON。虽然它拥有一个Web用户界面,但是其高级配置需要编程和使用一个CLI。Puppet Razor是一个最新发布的工具,它可以自动发现和库存基础设施,并动态地为裸机管理选择一个首选的系统映像。
Ansible: 这是一个开源平台,其商业版已于近期被Red Hat公司收购,Ansible不需要软件代理;它可通过安全Shell连接进行完全运行。Ansible针对其配置“playbooks”使用了YAML,这主要是用于进行系统配置、部署和协调等工作。
SaltStack: 这是一个相对较新的平台,它主要侧重于速度和可扩展性方面,Salt有两种版本:开源代码和支持企业版。Salt使用YAML来描述系统状态;但是,整个平台包括了一组复杂的组件,这对于那些并不熟悉另一种自动化平台的用户来说就意味着一个艰难的学习曲线。
建议与用例
本文所介绍的任何自动化大平台都可在私有基础设施中和跨所有主要公有云平台正常运行;但是,具体的集成细节则大相径庭。
选择产品的决策应当从企业基础设施的复杂性和规模出发,关注IT/开发运营团队所拥有的专业知识。虽然诸如戴尔公司Cloud Manager(即之前的Enstratius)、RightScal或Scalr这类的集成SaaS产品在连接至内部基础设施时会有一些麻烦,但是它们都是最易于部署和操作的,这是因为它们都提供了全面的Web用户界面和预置模板,并与大型云计算服务相集成。在众多较为通用的工具中,Puppet是最为成熟的产品,这使得它在大型企业用户变得非常流行。此外,由于其无代理的设计和简单的YAML语法,Ansible可能更易于实施和学习。