云计算及云技术须知,第一部分

深入剖析构成云的各项技术,并对云服务提供商进行调查。

云已成为所有数据存储的代名词。它还等同于许多访问相同后端数据存储的以网络为中心的服务。但这个术语也已发展出更多含义。

云计算提供对服务器、存储、数据库和应用程序资源的更简化访问,用户可以配置和使用满足其应用程序需求的最低要求集。仅在过去十年中,向更广泛、更易访问的网络的范式转变迫使硬件供应商和服务提供商重新思考其战略,并适应存储信息和服务应用程序资源的新模式。随着时间的推移,越来越多的个人和企业将自己连接到这个更广阔的计算世界。

什么是云?

“云”的概念常常与广义的互联网相混淆。虽然构成云的各种组件确实可以通过互联网访问,但它们并非同一事物。从最广义的角度来说,云计算使公司、服务提供商和个人能够为其需求动态配置适当数量的计算资源(计算节点、块或对象存储等)。这些应用程序服务通过网络访问——不一定是公共网络。存在三种不同的云部署类型:公有云、私有云以及两者的混合云。

公有云与私有云的区别在于,私有云通常部署在数据中心,并在使用其云计算技术的专有网络下部署——也就是说,它是为服务组织而开发和维护的。私有云部署的资源通过正常的硬件采购方式和传统的硬件销售渠道获得。公有云的情况并非如此。公有云的资源根据用户的请求动态配置给用户,并且可能以按使用量付费的模式或免费提供。

世界领先的公有云平台包括

  • 亚马逊云服务 (AWS)
  • 微软 Azure
  • 谷歌云平台
  • IBM Cloud(原 SoftLayer)

顾名思义,混合云模型允许在公有云和私有云部署之间无缝访问和转换,所有这些都在单个框架下管理。

对于那些倾向于在内部或部分在公有云上托管其工作负载的人(有时是出于安全、数据主权或合规性的考虑),私有云和混合云产品继续提供相同数量的服务,但一切都在您的控制之下。

使用云服务使您能够实现以下目标

  • 通过轻松访问和简化操作系统/应用程序的部署以及分配资源的管理,增强业务敏捷性。
  • 通过减少对硬件和整体数据中心/网络基础设施的担忧,从而减少资本支出并优化预算。
  • 转变您交付服务和管理资源的方式,使其灵活扩展以满足您不断变化的需求。
  • 提高运营和效率,无需担心硬件、冷却或管理成本——您只需为您需要和使用的内容付费(这适用于公有云选项)。

采用云模式使开发人员能够访问构建和部署应用程序所需的最新和最强大的工具和服务,这些工具和服务可在即时可用的基础设施上使用。更快的开发周期意味着公司面临着以更快的速度竞争的压力,否则将面临市场颠覆。这种新的业务速度以及“按需”和“一切皆服务”的心态已超越应用程序开发人员,扩展到财务、人力资源甚至销售部门。

行业中的顶尖玩家

在本“深度剖析”系列中,我将更多地关注公有云服务提供商及其产品,并以亚马逊 AWS 的示例部署为例。我为什么要关注公有云?嗯,对于大多数读者来说,它似乎是更具吸引力的选择。为什么会这样?与私有云和本地数据中心部署不同,公有云消费旨在减轻维护人员投资和持续更新其计算硬件和网络基础设施的负担。现实情况是:硬件会老化,而且老化速度相对较快。

公有云旨在理论上无限扩展。当您需要配置更多资源时,服务提供商完全有能力满足这些需求。这里的重点是您永远不会消耗公有云的所有容量。

其理念是显著减少(并可能消除)资本支出 (capex),并将更多精力放在现在已减少的运营支出 (opex) 上。这种模式允许公司减少其 IT 人员配备和计算硬件/软件成本。公司不再需要前期大量投资,而是订阅他们所需的基础设施和服务。请记住,这是一种按需付费的模式。

注意:服务提供商不限于此处提及的提供商。此列表包含市场份额最大的提供商。

亚马逊

亚马逊云服务 (AWS) 于 2006 年首次推出,提供一套按需云计算、存储和网络资源以及数据存储。如今,AWS 还提供广泛的服务列表,重点关注计算、存储、网络、数据库、分析、开发人员工具等等。其中最著名的服务是 Amazon Elastic Compute Cloud (EC2) 和 Amazon Simple Storage Service (S3)。(我将在本系列的第二部分介绍这些产品以及更多内容。)

亚马逊站在公有云的最前沿,拥有最大的用户市场份额——而且份额巨大。作为最早投资云的公司之一,亚马逊能够适应、重新定义甚至引领行业趋势。

微软

微软 Azure 于 2010 年向公众发布,重新定义了现有微软生态系统内外的计算。是的,这包括 Linux。与 AWS 非常相似,Azure 为客户提供了大量有吸引力的云产品,涵盖计算、存储、数据库等。微软在云方面投入了巨额资金,这一点显而易见。毫不奇怪,微软目前是第二大服务提供商,正在迅速逼近亚马逊的市场份额。

谷歌

谷歌进军这个市场是一个不断发展的过程。谷歌很早就拥抱了云计算和云式计算,基本上会根据自己的判断将内部实施的框架提供给更广泛的公众。直到 2010 年左右推出谷歌云存储,谷歌云平台的基础才为普通公众和未来的云产品奠定基础。如今,谷歌仍然是一个非常强大的竞争对手。

IBM

IBM 于 2012 年宣布了其云雄心。自宣布以来,愿景(和名称)不断发展,但最终结果是相同的:计算、存储等等,但这次,重点是安全性、混合部署以及通过臭名昭著的沃森框架连接到人工智能 (AI) 后端。

架构概述

自云计算概念诞生以来,整个云计算概念不断发展。该技术自然而然地发展以满足新的消费者需求和工作负载,并具有更新的功能和特性(我将在本系列的第二部分重点介绍这种演变)。如果我说以下描述涵盖了您标准云数据中心的所有细节,那将是非常不公平和不现实的,因此,我将其描述得较为笼统。

区域和可用区

以亚马逊为例,AWS 将其数据中心分布在全球 12 个区域内的 33 个可用区中。区域是独立的地理位置。每个可用区都拥有一个或多个数据中心。每个数据中心都配备了 50,000–80,000 台服务器,并且每个数据中心都配置了冗余电源以确保稳定性、网络连接和连通性。微软 Azure 跨越 36 个全球区域运行,每个区域都包含一个为该特定区域提供服务的数据中心。IBM Cloud 在全球至少 33 个单数据中心区域运营,每个区域都包含数千台(如果不是数万台)服务器。

作为用户,您可以在多个位置和跨多个可用区放置虚拟机实例或资源。如果这些资源需要跨多个区域复制,则需要确保调整资源以完全执行此操作。

这种方法允许用户和企业利用云提供商的高可用性。例如,如果我是公司 foo,提供服务 bar,反过来又依赖 AWS 来公开我托管和运行服务 bar 所需的所有组件,那么将这些资源复制到另一个可用区甚至完全不同的区域将符合我的最佳利益。例如,如果区域 A 发生中断(例如内部故障、地震、飓风或类似情况),我仍然可以从区域 B 继续提供服务 bar(标准故障转移程序)。

公有云中的每个服务器或虚拟机实例都可以通过公共 IP 地址访问。使用诸如亚马逊的 Virtual Private Cloud (VPC) 之类的功能,用户能够以逻辑方式配置隔离的虚拟网络,以托管其 AWS 资源。虽然 VPC 仅限于特定区域,但可以通过某些方法使一个区域中的私有网络与另一个区域的私有网络对等互连。

存储

当涉及到云中的存储时,事情开始变得有趣起来。乍一看,在没有任何解释的情况下,图 1 中所示的图示可能看起来有些复杂,但我仍然希望您花点时间研究一下它。

diagram

图 1. 云中典型存储架构的高级概述

在底部,是存储服务器,由多个物理存储设备或硬盘驱动器组成。在单个位置内部署多个存储服务器。然后,将这些物理卷汇集在一起,无论是在单个位置内还是跨多个位置,以创建逻辑卷。

当用户请求虚拟机实例的数据卷,甚至通过网络访问数据卷时,将从更大的驱动器池中划分出指定大小的卷。在大多数情况下,用户可以根据需要轻松调整数据卷的大小。

在云中,存储以几种方式呈现给用户。首先是传统的块设备或文件系统,遵循古老的访问方法,可以映射到运行您选择的任何操作系统的任何虚拟机。在 AWS 上,这些分别称为 Elastic Block Storage (EBS) 和 Elastic File System (EFS)。另一种更新的方法称为对象存储,可通过基于 HTTP 的 REpresentational State Transfer (REST) API 通过网络访问。

对象存储与块/文件系统存储的不同之处在于,它将数据作为对象进行管理。每个对象都将包含数据本身,以及元数据和全局唯一标识符。用户或应用程序将通过按其唯一标识符请求对象来访问该对象。这里没有文件层次结构的概念,也没有目录或子目录。该技术已成为更现代的以网络为中心的计算风格的相当标准的技术。非常常见的是,它用于存储照片、视频、音乐等。前面提到过,AWS 对象解决方案称为 S3。

虚拟化

云成功的关键围绕着基础设施即服务 (IaaS) 的概念及其通过虚拟机监控程序的 API 服务虚拟机的功能。虚拟机监控程序允许您在同一物理硬件上托管多个操作系统(即虚拟机)。大多数现代虚拟机监控程序都旨在模拟多种 CPU 架构,包括 Intel (x86 和 x86-64)、ARM、PowerPC 和 MIPS。在云的情况下,通过基于 Web 的前端,您可以完全控制所有已分配的计算资源,并且还能够在几分钟内获得和启动新的服务器实例。

请思考一下。您可以在几分钟内同时配置一台服务器或数千台服务器实例——不是几小时或几天,而是几分钟。这非常令人印象深刻,对吧?所有这些都通过 Web 服务应用程序编程接口 (API) 进行控制。对于那些不太熟悉的人来说,API 是将服务、应用程序和整个系统粘合在一起的东西。通常,API 充当公司或产品的公共形象,通过公开业务功能和服务。专为云设计的 API 可以从浏览器、移动应用程序或任何其他启用互联网的端点调用。

对于每个部署的服务器实例,您再次完全掌控。翻译:您拥有每个实例的 root 访问权限(带有控制台输出),并且能够以您需要的任何方式与它们交互。通过同一个 Web 服务 API,您可以启动或停止任何必要的实例。云服务提供商允许用户选择(虚拟)硬件配置——即内存、CPU 和存储以及驱动器分区大小。用户还可以选择从多个操作系统列表(包括 Linux 发行版和 Microsoft Windows Server)和软件包中安装。最后,值得注意的是,选择的资源越多,服务器实例就越昂贵。

chart

图 2. 说明在裸机系统、虚拟机监控程序和容器上运行应用程序之间的区别

容器

容器几乎与运行虚拟机时的裸机一样接近。托管虚拟机几乎不会产生任何开销。此功能限制、核算和隔离一个或多个进程的 CPU、内存、磁盘 I/O 和网络使用情况。从本质上讲,容器将软件应用程序与操作系统分离,在运行所有其他内容在一个或多个隔离的“容器”中时,为用户提供干净且最小的操作系统环境。

这种隔离可防止在给定容器中运行的进程监视或影响在另一个容器中运行的进程。此外,这些容器化服务不会影响或干扰主机。能够将分散在多个物理服务器上的许多服务整合到一台服务器中,是数据中心选择采用该技术的众多原因之一。这种隔离方法通过限制安全漏洞或违规造成的损害来增强技术的安全性。成功利用一个容器中运行的应用程序上的安全漏洞的入侵者将被限制在该容器内可能采取的一组操作中。

在云的背景下,容器通过不仅将应用程序与整个操作系统(虚拟化与否)隔离,而且还能够以软件和硬件方面的最低要求进行部署,从而极大地简化了应用程序部署,进一步减少了维护两者的麻烦。

无服务器计算

云原生计算或无服务器计算是描述部署和管理应用程序的更现代趋势的最新术语。这个想法非常简单明了。每个应用程序或进程都打包到自己的容器中,而容器又在节点集群中动态地(即,调度和管理)进行编排。这种方法使应用程序摆脱了对物理硬件和操作系统的依赖,并进入了它们自己的独立且沙盒化的环境中,该环境可以在数据中心内的任何位置运行。云原生方法是关于分离应用程序交付的各个组件。

这听起来可能与在云中运行任何其他容器相同,但使云原生计算如此独特的原因在于,您无需担心管理该容器(意味着更少的开销)。这项技术对开发人员是隐藏的。只需上传您的代码,当指定的触发器启用时,API 网关(由服务提供商维护)将以旨在处理该触发器的方式部署您的代码。

这里首先想到的是亚马逊的 AWS Lambda。同样,在这种模式下,无需配置或管理物理服务器或虚拟机服务器。假设它处于稳定或生产状态,只需上传您的代码即可。您的代码只是部署在隔离的容器化环境中。在 Lambda 的情况下,亚马逊为开发人员提供了一个框架,用于上传其事件驱动的应用程序代码(以 Node.js、Python、Java 或 C# 编写),并在几毫秒内响应网站点击等事件。运行您的代码主体的所有库和依赖项都在容器内提供。

至于触发应用程序的事件类型,亚马逊使其可以触发网站访问或点击、对其 API 网关的 REST HTTP 请求、物联网 (IoT) 设备上的传感器读数,甚至是将照片上传到 S3 存储桶。

diagram

图 3. 云原生计算的典型模型

现在,所有这些组件是如何组合在一起的?它始于用户通过网站或移动设备上的应用程序访问您的服务。Web 服务器及其依赖的各种组件可以从本地管理的容器甚至虚拟机托管。如果 Web 服务器或移动应用程序需要特定功能,它将联系第三方身份验证服务,例如 AWS Identity and Access Management (IAM) 服务,以获取访问 API 网关之外托管的无服务器功能的适当凭据。触发后,这些功能将执行必要的操作,并返回 Web 服务器或移动应用程序请求的任何内容。(我将在第二部分更深入地介绍这项技术。)

安全

通常认为私有云和本地解决方案比公有云选项更安全,但最近的研究表明情况并非如此。公有云服务提供商花费更多的时间和资源咨询安全专家并更新其软件框架,以限制安全漏洞。虽然这可能是事实,但在利用公有云服务时,真正的安全挑战是以安全的方式使用它。对于企业组织而言,这意味着应用安全云采用的最佳实践,尽可能减少锁定,并最大限度地提高可用性和正常运行时间。

我已经暗示了身份和身份验证方法,当涉及到公开的服务时,此功能变得越来越重要。这些身份验证服务使用户能够管理对其提供商的云服务的访问。例如,AWS 有一种称为 IAM 的东西。使用 IAM,您将能够创建和管理 AWS 用户/组,并使用允许/拒绝他们访问各种 AWS 资源或特定 AWS 服务 API 的权限。对于较大(甚至较小)的部署,此权限框架简化了对构成云的各种组件的全局访问。它通常是主要提供商提供的免费服务。

总结

可以公平地说,本文涵盖了很多内容:关于云的组成、不同的部署方法(公有云、私有云和混合云)以及顶级云服务提供商公开的服务类型,然后概述了云的设计方式、云的功能以及该功能如何实现我们今天享受使用的功能。

在本系列的第二部分中,我将使用 AWS 中的真实示例进一步探索云。因此,如果您尚未这样做,请务必在 AWS 上注册一个帐户。该帐户可能会产生费用。

Petros Koutoupis,LJ 特约编辑,目前是 Cray Lustre 高性能文件系统部门的高级性能软件工程师。他还是 RapidDisk Project 的创建者和维护者。Petros 在数据存储行业工作了十多年,并帮助开创了当今广泛使用的许多技术。

加载 Disqus 评论