云计算及云技术,第二部分:云的使用

如何开始使用 AWS,安装 Apache,创建 EFS 卷等等。

无论您如何日常访问数据,云都将继续存在。无论您是在社交媒体帐户中上传和与朋友分享新照片,还是在办公室或学校与同事一起更新文档和电子表格,您都有可能以某种形式连接到云。

在本系列的第一部分中,我探讨了云的构成以及当其所有独立的移动部件组合在一起时如何运作。在本文中,以第一部分的基础为基础,我将通过一些实际示例介绍云的使用。

AWS 入门

就本文而言,我将重点介绍 Amazon Web Services (AWS) 提供的一些顶级产品。请注意,我与亚马逊没有任何关联,也没有声明亚马逊的产品优于其竞争对手。

如果您还没有注册,请务必注册一个帐户。但在您注册之前,请了解可能会收费。亚马逊可能会为新注册用户提供为期有限的时间(通常为一年)的免费套餐。在大多数情况下,这些产品的限制远非现代用例的理想选择。它是一种按需付费模式,您只需在实例或服务保持活动状态时付费。

一旦您注册并在 Web 浏览器中登录,您将看到一个非常直观的仪表板。

Screenshot

图 1. AWS 主要服务和资源仪表板。

计算

最初,利用云计算的公司直接复制粘贴他们自己的数据中心,以部署标准 Web/应用程序/数据库服务器。模式是相同的。这种方法没有错。对于大多数从本地环境转换为云环境的用户来说,这种转换在某种程度上是无缝的——至少从访问这些用户的角度来看是这样。唯一的真正区别在于它只是在不同的数据中心,并且没有维护支持它的基础设施的麻烦。

在 AWS 的世界中,虚拟计算服务器在弹性云计算 (EC2) 堆栈下进行管理,从整个虚拟实例到容器等等。让我们通过导航到 EC2 仪表板来开始一个 EC2 实验示例。

screenshot

图 2. 弹性云计算仪表板

选择“启动实例”后,您将看到一个屏幕,您可以在其中从各种 Linux 和 Windows 安装的预配置镜像中进行选择。在本示例中,我们选择 Ubuntu Server 16.04。

以下屏幕提供了定义所需虚拟内核或处理器数量、总内存量和网络速度的选项。请记住,在此实例中定义的内核和内存越多,成本就越高。

从此时起,您可以决定是否使用额外的本地存储(使用弹性块存储或 EBS 框架)、安全策略、部署区域(数据中心)等进一步自定义此特定实例。在本示例中,我们选择“查看并启动”。

screenshot

图 3. EC2 实例查看屏幕

确认您的所有设置均正确,并记下实例的安全组名称(您稍后将重新访问它)。按启动。

下一步非常重要。系统将提示您关联现有的公钥/私钥对以访问此虚拟机,或创建一个新的密钥对。创建后,请务必下载并将生成的 PEM 文件副本存储在安全的地方。您稍后将需要它。

screenshot

图 4. EC2 公钥/私钥对创建窗口

启动您的实例并转到实例仪表板。您的虚拟机现在已启动并运行,您应该能够使用该 PEM 文件登录到它。

现在,在您的本地计算机上找到该 PEM 文件,并将其权限更改为仅所有者读取访问权限


$ chmod 400 Linux-Journal.pem

使用 SSH 并引用相同的 PEM 文件,通过其公共 IP 地址并以用户 ubuntu 身份登录到该实例


$ ssh -i Linux-Journal.pem ubuntu@35.165.122.94
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-1049-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in
the individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

To run a command as administrator (user "root"), use
"sudo <command>". See "man sudo_root" for details.

ubuntu@ip-172-31-21-167:~$

瞧! 您做到了。您在 AWS 上部署了一个虚拟机,现在已连接到它。从现在开始,您可以像对待任何其他服务器一样对待它。例如,现在您可以安装 Apache


$ sudo apt install apache2

现在 Apache 已安装并运行,您需要修改此实例使用的同一安全组,以允许通过同一公共 IP 地址访问端口 80。为此,请导航到实例仪表板菜单选项“安全组”,该选项位于“网络和安全”类别下。在列表中找到您的安全组,选择它,然后在选择表的底部,单击“入站”选项卡。接下来,让我们添加一个规则以允许端口 80 (HTTP) 上的入站访问。完成所有操作后,打开 Web 浏览器,并将计算机的公共 IP 地址粘贴到其中。

screenshot

图 5. 访问虚拟机实例上的端口 80

现在,如果您不需要完整的操作系统,而只关心运行一个或两个应用程序呢?以上面的 Apache 示例为例,也许您只需要一个 Web 服务器。这就是弹性容器服务 (ECS) 发挥作用的地方。ECS 构建在 EC2 之上,因为您需要启动一个 EC2 实例来托管从您 Amazon 托管的 Docker 镜像注册表上传的 Docker 实例。Docker 是最流行的容器技术。它是一个用户空间和轻量级虚拟化平台,它利用 Linux 控制组 (cgroups) 和命名空间来管理资源隔离。

随着用户继续深入云,他们将开始依赖提供商的负载均衡器、DNS 管理器等等。前面讨论的模型不断发展以适应这些需求并简化其管理。甚至可能希望接入提供商的机器学习或分析平台等等。

云原生应用程序

当走向无服务器时,传统的数据中心开始消失。这是一种非常弹性的模型——服务启动和关闭,始终响应需求。花费在登录服务器上的时间大大减少,相反,DevOps 工程师将大部分时间用于编写 API 代码以连接其产品中的所有点。Linux 在底层运行一切的事实在某种程度上在等式中丢失了。越来越不需要知道甚至关心。

正如人们所期望的那样,容器技术帮助加速了云的采用。想想看。您拥有这些持久的容器化应用程序镜像,它们可以在几秒钟内根据需要启动或关闭,并在多个节点或数据中心位置之间进行平衡,以实现最佳服务质量 (QoS)。但是,如果您不想被所有容器的东西所困扰,而只关心您的应用程序及其功能呢?这就是 Amazon 的 Lambda 的用武之地。正如我在第一部分中提到的,使用 Lambda,您无需担心容器。只需上传您的事件驱动应用程序代码(用 Node.js、Python、Java 或 C# 编写),并在几毫秒内响应事件,例如网站点击。Lambda 会自动扩展以支持您应用程序的精确需求。

至于触发您的应用程序或代码处理程序的事件类型(标记为事件源),亚马逊已经使其可以触发网站访问或点击、对其 API 网关的 REST HTTP 请求、物联网 (IoT) 设备上的传感器读数,甚至是将照片上传到 S3 存储桶。此 API 网关构成了连接 AWS Lambda 所有部分的桥梁。例如,开发人员可以编写一个处理程序来触发 HTTPS 请求事件。

假设您需要为您的代码启用一定程度的粒度。Lambda 通过允许开发人员编写模块化处理程序来适应这一点。例如,您可以为每个 API 方法编写一个处理程序,并且可以独立于其他处理程序调用、更新和更改每个处理程序。

Lambda 允许开发人员将所有必需的依赖项(即库、本机二进制文件甚至外部 Web 服务)组合到您的函数中到一个包中,从而使处理程序可以自由地访问其中的任何依赖项,因为它需要它们。

现在,这与 Amazon AWS EC2 实例相比如何?好吧,简短的答案是它更简化,所谓的简化是指在配置或维护您的操作环境方面几乎没有开销。如果您需要更多超出您的环境范围的东西,需要访问完整的操作系统或容器,您将启动一个 EC2 虚拟实例。如果您只需要托管一个函数或特殊用途的应用程序,那么 Lambda 将成为更好的选择。使用 Lambda,没有太多可自定义的——有时,少即是多。

存储

如果您还记得第一部分的内容,在云中,多个本地卷被汇集到一个或多个站点,并汇集成更大的存储池。当以块、文件系统或对象格式请求卷时,它们是从这些更大的池中划分出来的。让我们看看其中一些 AWS 产品。

弹性文件系统

Amazon 弹性文件系统 (EFS) 为用户提供了一个简化的、高度可用且高度可扩展的文件存储,用于在云中与 EC2 实例一起使用。与亚马逊提供的任何其他产品一样,EFS 卷的存储容量是弹性的,它可以动态增长和缩小以满足您应用程序的需求。当挂载到您的虚拟机时,EFS 卷提供传统的文件系统接口和文件系统访问语义。

要创建新的 EFS 卷,请从主 AWS 仪表板中选择 EFS,然后单击“创建文件系统”按钮。您将被定向到一个屏幕,您需要在其中配置新的文件系统。为了简化操作,让我们选择与前面示例中的 EC2 实例相同的安全组。

screenshot

图 6. 创建新的文件系统并将其分配给安全组

接下来,为您的文件系统命名并验证其选项。

screenshot

图 7. 设置名称和配置选项

确认并创建后,您将看到一个类似于图 8 的摘要。请注意,在文件系统的“生命周期状态”显示为可用之前,文件系统无法从特定位置使用。

screenshot

图 8. 文件系统摘要

使用相同的 EC2 实例,从发行版的软件包存储库安装 NFS 软件包


$ sudo apt-get install nfs-common

在继续之前,您需要将 NFS 添加到您的安全组。这适用于入站和出站流量。

screenshot

图 9. 将 NFS 添加到您的安全组

从您的虚拟机实例的控制台,挂载 NFS 文件系统


$ sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=
↪1048576,hard,timeo=600,retrans=2 fs-05cb43ac.efs.us
↪-west-2.amazonaws.com:/ /mnt

验证卷是否已挂载(注意:在下面的最后一行“文件系统”下,名称被截断,因此输出将全部适合;该条目应读取 fs-05cb43ac.efs.us-west-2.amazonaws.com


$ df
Filesystem       1K-blocks    Used        Available Use% Mounted on
udev                499312       0           499312   0% /dev
tmpfs               101456    3036            98420   3% /run
/dev/xvda1         8065444 1266640          6782420  16% /
tmpfs               507268       0           507268   0% /dev/shm
tmpfs                 5120       0             5120   0% /run/lock
tmpfs               507268       0           507268   0% /sys/fs/cgroup
tmpfs               101456       0           101456   0% /run/user/1000
fs-05...  9007199254739968       0 9007199254739968   0% /home/ubuntu/efs

您成功了!EFS 卷现在已连接到您的 EC2 实例,您可以像任何其他文件系统一样从中读取和写入。

S3

简单存储服务 (S3) 为应用程序提供了一个前端,用于大规模地存储和检索来自存储桶的数百万甚至数十亿的数据内容。传统的文件系统无法编目如此庞大的数据列表,也无法在合理的时间内提供这些数据。对象存储解决了这个问题。它不是文件系统,而是一个高级编目系统。当您将文件 PUT 到您的存储桶中时,您使用标签 ID 执行此操作。然后,当您从同一存储桶 GET 该文件时,您使用相同的标签 ID 请求它。

在高层次上,您看不到数据是如何存储或管理的,从技术上讲,您也不应该关心。每种对象存储解决方案都有自己的方法来保存对象内容,有时它就像将每个单独的对象保存为嵌套目录结构下的文件并位于传统文件系统之上一样简单,但随后不将其对最终用户或应用程序可见。应用程序将使用 REST API 并通过 HTTP 与存储桶的端点通信来访问此数据或存储桶。

Amazon 的 S3 API 已成为某种标准,其他对象存储解决方案也保持与此 API 以及他们自己的 API 的兼容性。希望这样做的动机是将这些 AWS S3 用户迁移到其他对象存储平台。

Glacier

Amazon 的 Glacier 为其用户提供了一种极其安全、持久且低成本(每月每 GB 低至 0.004 美元)的替代方案,用于在云端托管数据存档和长期备份。对于大多数公司来说,这是一种摆脱陈旧且非常有限的本地文件服务器和磁带驱动器的方法。您的公司多久发现自己难以减少消耗或增加其本地存档系统的容量?这种情况发生的频率比您想象的要高得多。Glacier 减轻了所有这些麻烦和担忧。

私有云和 OpenStack

当我 15 年前进入数据存储行业时,那是一个非常不同的时代,拥有非常不同的客户。那是存储区域网络 (SAN) 和网络附加存储 (NAS) 的时代。云不存在。我们的客户主要是中大型企业用户。这些公司都是单一供应商商店。如果您是 HP 商店,您就购买 HP。EMC,您就购买 EMC。NetApp,您就购买 NetApp,等等。从客户的角度来看,知道您只需要与单个供应商交互即可进行采购、管理和支持,这会让人感到安心。

大约十年前,这种心态开始改变。令人兴奋的新技术涌现:虚拟化、闪存和软件定义的一切。这些相同的技术最终将实现当时的未来云。客户想要所有这些简洁的功能。然而,问题在于大型供应商没有提供它们——至少在最初没有提供。因此,客户开始偏离单一供应商的方法。这意味着多个供应商和多个管理界面。现在有太多的移动部件,每个部件都需要数据中心的不同专业知识水平。

然而,隧道尽头有一线光明:OpenStack 的出现。OpenStack 将所有这些移动组件(即存储、计算和网络)粘合在一起。该项目是一个 Apache 许可的开源框架,旨在构建和管理公共云和私有云。其相互关联的组件控制处理、存储和网络资源的硬件池,所有这些都通过基于 Web 的仪表板、一组命令行实用程序或通过 API 进行管理。即使 OpenStack 导出和发布其自己独特的 API,该项目也努力保持与竞争 API 的兼容性,其中包括 Amazon 的 EC2 和 S3。

OpenStack 的主要目标是创建一个单一且通用的框架,以动态部署和管理数据中心中的各种技术。该项目最初于 2010 年启动,由 Rackspace Hosting 和 NASA 联合发起,此后呈指数级增长,并吸引了众多支持者和用户。OpenStack 成功的秘诀在于融合。通过提供一个单一且标准化的框架,它将秩序带回了一个几乎无法管理的生态系统。它最近的流行应该不足为奇。

现代公司支持的 Linux 发行版——包括 Red Hat Enterprise Linux (RHEL)、SUSE Linux Enterprise Server (SLES) 和 Ubuntu Server——不仅在简化技术方面,而且在支持技术方面都付出了巨大的努力。虽然我在这里不再花更多时间讨论该技术,因为它值得单独撰写,但请允许我说,如果您希望运行自己的私有云部署,OpenStack 绝对是最佳选择。

总结

最后,为什么要使用云?如果以下列表不能说服您,我不知道还有什么可以

  • 灵活性。
  • 开发和部署速度。
  • 容错能力(以及高效的灾难恢复计划)。
  • 访问最新和最出色的软件。
  • 降低运营成本。
  • 加强跨团队协作。
  • 远程访问(随时随地工作)。
  • 安全。
  • 以及更多...

公共云平台的可用性,该平台提供一流的性能、令人难以置信的广泛且不断增长的服务选择以及全球覆盖范围,对于您的 IT 战略来说是一个强大且可以说必要的补充。对于较大的组织,您可能必须计划为某些类型的工作负载构建自己的内部云——而 OpenStack 的可用性在可扩展性、所有权和现有数据中心资产的利用率方面提供了两全其美的优势。

由于篇幅限制,我在这里没有介绍很多内容——例如,AWS 和其他云提供商添加了非常高级的安全选项,以限制对各种资源的访问,并通过创建用户和组策略来实现这一点。您还可以扩展 EC2 实例使用的安全组的规则,并进一步将某些端口限制为特定的 IP 地址或地址范围。如果您决定利用云来满足您的计算需求,请务必投入足够的时间来确保正确配置这些设置。

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

加载 Disqus 评论