如何有效地同多个云提供商合作
在同多个云提供商合作之前,请评估他们在计算、存储和安全等方面的服务。
企业必须在多个云供应商中做出抉择。亚马逊网络服务是行业巨头,而微软Azure则提供了一整套越来越有竞争力的服务。还有谷歌云平台对于那些具有大数据和处理需求的客户来说很有吸引力,他们正好可以利用谷歌的基础架构。IBM和Rackspace则提供三巨头之外的选择。
企业们最好不要与单一的云供应商绑得太紧。在一个云里提供的专业化服务在另一个云里并不一定也存在。在其他情况下,一个组织内的各部门可能会在不同的平台上开发服务,继而需要集中式的云管理团队来支持多个供应商的托管环境。
在与多个云供应商合作时有一些策略和技巧,能够得到其优点同时限制了重复劳动和其他额外的工作。要理清这些,我们将仔细检验他们的核心服务:计算和工作负载管理、存储服务、数据管理和安全性。
接下来,我们会了解基础架构即代码的这一概念为何是多云管理的一个关键前提。容器服务被描述为跨云的一个公共抽象层,它有助于进一步缓解跨多个云上管理应用的负担。
计算和工作负载管理服务
计算和工作负载管理服务,包括业务编排,集群管理和配置工具。
首先,虚拟机(VM)是任何计算服务的基础单位。基础架构即服务的云供应商提供了各种的虚拟机,而了解他们之间的差别是非常重要的。一个特定的虚拟机规格会包括其OS,处理能力,内存和网络优化的功能。微软,谷歌和亚马逊网络服务(AWS)还提供了专门设计来支持大数据和分析任务负载的集群,能够支持例如Hadoop和Apache Spark等框架。
容器服务也变得越来越重要。容器化非常适合微服务部署,并且在许多情况下,可以比为每个应用程序运行单独的VM效率更高。容器提供在Linux基础上的轻量级虚拟化并可以类似Docker这样的标准工具一起使用。对于集群管理,Apache Mesos和Docker Swarm是值得考虑的工具。 Mesos适合于作业调度,同时支持Marathon和Chronos。并且Mesos还支持Docker Swarm API,这样你就可以在Mesos里运行Swarm,如果需要的话。
同样归于计算和管理服务的大伞下的还有编排。编排的功能允许系统管理员以代码的形式定义基础架构并自动化代码部署。
编排对于需要规模化或跨多云运行的组织尤为重要。在多云的场景下,例如Chef和Puppet之类的配置和编排工具是很重要的。特定厂商专有的工具,如AWS CloudFormation,也是可供选择的选项。
在第一和第三方工具之间选择时,请记住其中的权衡利弊。第三方工具提供更多的跨云的灵活性,并允许跨云迁移工作负载。另一方面,厂商自己的工具会按照在给定厂商的云里工作的目的构建。
存储服务
跨多个云迁移工作负载是具有挑战性的,如果你需要在云之间进行协调或者在另一个竞争的云平台上运行一个被设计成使用某个云的API的脚本。然而,存储,又带来了另一种不同的问题。当所有的主流云厂商都提供对象存储服务时,要理解这些服务之间更细微的差别很重要。要优化成本和性能,你可能要根据数据保存的时间段,耐用性要求,存储和检索数据的延迟以及接近计算资源来选择对象存储。
例如,AWS提供简单存储服务(S3)来存储对象以及弹性块存储有关虚拟机文件系统存储弹性块存储简单存储服务(S3)。S3对象存储以较低的成本介入,但延迟较高并且不适合文件系统。另一方面,谷歌则以低成本提供适合文件系统存储的Nearline存储。要知道,Nearline存储有较高的延迟。如果你正在寻找归档存储,那么选择一个单一的云提供商来最低限度的保持存储管理是合理的。如果冗余很重要的话,你可能要考虑在多个云里进行归档。
邻近计算是另一个重要的考虑因素。在一般情况下,数据应尽可能靠近计算资源。这将提高性能从而削减成本。此外,数据复制出云往往会产生费用,所以将计算任务放进生成数据的同一个云中也很有道理。
数据管理
数据管理包括使用关系型和非关系——也被称为NoSQL,的数据库产品管理结构化和半结构化的数据。管理数据有两种选择:使用数据库即服务(DBaaS)或管理自己的数据库。在做出决定时,你要考虑你将如何存储数据,该数据的物理位置,涉及到的延迟级别,以及环境的耐用性。此外,还要考虑如果该厂商或存储方法不奏效的情况下需要移动数据时所涉及到的成本。
使用DBaaS会将数据库业务同一个单一的厂商紧密绑定,虽然这不一定是坏事。一种选择是AWS的DynamoDB,它非常适合用于健值和文件的数据存储。它提供低延迟和配置的一致性,几乎没有任何数据库的管理开销。然而,它采用其他厂商无法使用的专有数据库。使用如DynamoDB之类的专有数据库工具可能会增加操作人员的压力,如果你需要多个云的专有服务的话。
当使用多个云提供商时,最好的选择最有可能是管理自己的数据库。虽然这听起来像一个昂贵的苦差事,但流程编排工具可以提供帮助。如果你的数据库配置脚本化,那这些工具可以让你更有效的跨云管理自己的数据存储。使用多个云提供商的一个好处是,你可以跨云存储备份,从而拥有一个多厂商,基于云的灾难恢复策略。
无论选择哪种数据管理方法,始终要记住数据管理的初衷。数据存储在哪里可以影响它需要如何被处理并保护。安全港协议已经失效,所以考虑使用其他规定,如HIPAA,作为指导,并规划基于地理的数据存储策略。
抽象和安全问题
厂商特定的工具可能使你无法获得一些云计算的灵活性。尽管如此,也有一些方法可以解决这个问题,并从特定厂商的平台中分离出你的资源。某些特定的策略可以将特定云厂商的实现细节隐藏掉。例如,你可以为如对象存储等常用的功能建立一个薄抽象层。
这就需要使用跨云的API,如Apache Libcloud。Libcloud是一个开源的Python API,使用户能够与各种云服务供应商交互。该API由AWS弹性云计算和S3实例,以及谷歌计算引擎和Rackspace支持。支持的Python版本包括2.5,2.6,2.7,PyPy和Python 3。
尽量不要使用专门的服务,如AWS Lambda。考虑将你会在Lambda中运行的功能改为在Docker容器上实现。容器在各种云平台之上都能使用。
如果你打算从单一供应商解绑,那么建议运行你自己的服务。这对于数据库尤其如此。然而,始终把成本考虑在内;从长远来讲一个DBaaS可能最终会节省你的成本。
当使用多个云供应商时,安全变得越来越具挑战性,因为你必须实现同一控制的跨云的多个版本。例如,实现一个目录并通过联合让多个云可用而不是实现多个目录。尽可能多地使用一个通用的基础架构,如LDAP或活动目录。至于实施跨云策略,第三方服务和工具是必不可少的。
对于复杂的身份管理任务,可以考虑第三方服务,如Ping Identity。Ping Identity提供了许多跨平台的诸如多因素认证和用户身份管理的工具。
对于安全日志管理,一个强大的第三方工具是Loggly,它使用开源的协议,因此与多个云提供商兼容。该工具读取并巩固了许多基于文本的日志类型,包括Ruby,Java,Python,PHP和MySQL,等等。Alert Logic提供了Cloud Defender产品以及一整套的安全工具。Cloud Defender收集安全数据,并可以进行安全数据分析和威胁分析。
管理基础架构即代码
当涉及到如何有效利用多云,管理基础架构即代码是一个不错的起点。软件开发者已经创建了各种先进的技术和工具来管理多版本的频繁变更的代码。这些工具和做法,可用于管理基础架构,当使用声明规格时。按照要求部署到云中的任何资源以脚本的方式进行实践。如果一切正常的话,系统管理员不应手动添加和删除资源或更改配置,而应该通过使用第三方或专有的工具部署脚本来完成。
这种观念还可以沿用到代码部署之外。管理员可以利用第三方服务来更好地使用多云。云服务代理公司,作为云提供商和用户之间的媒介,就是这样一种值得考虑的服务。另一个选择是对云之间的整合,以促进工作负载管理和成本管理工具云聚合工具。
与多个云提供商合作没有硬性和速效的法则,但是有一些实践可以将重复的工作,迁移的难度以及安全漏洞限制在一定范围内。