DevOps:软件架构师行动指南DevOps:软件架构师行动指南2.3 独特的云特性对DevOps的影响

2.3 独特的云特性对DevOps的影响


云影响DevOps的3个独特特性是简单地创建和切换环境的能力;轻松创建虚拟机的能力,以及数据库的管理。我们首先讨论环境。

2.3.1 环境

在我们的上下文中,环境是足够执行软件系统的一组计算资源,包括所有支持软件、数据集、网络通信,以及执行软件系统所需定义的外部实体。

这个定义的关键点是:除了明确定义的外部实体外,环境是自包含的。一个环境通常独立于其他环境。在第5章中,我们会看到一些环境,例如开发、集成、用户测试,以及生产环境。在第12章的案例研究中,环境的生命周期是其部署流水线的一部分。在开发、测试和部署过程的各阶段有多个环境并不是云独有的特性,但简单地创建和迁移环境的能力是云独有的特性——像克隆新实例一样容易。通过使环境之间没有可修改的共享资源来实现一个环境与另一个环境的隔离。只读资源,例如各种订阅源,可以共享而不会带来问题。因为环境与外部世界的通信只通过已定义的外部实体,所以这些实体能够通过URL访问,因此可以单独管理。写或修改这些外部实体的状态应该只在生产环境中进行,并为所有其他环境创建独立的外部实体(例如,仿制品或测试克隆)。

将环境可视化的一种方法是将其看作一个竖井。图2-5展示了两个不同环境(测试环境和生产环境)的两个变体。每一个包含了同一个系统稍有差异的版本。两个负载均衡器(负责它们各自的环境)有不同的IP地址。如图2-5a所示,测试可以通过分流到生产环境的输入流并将副本发送到测试环境来实现。这种情况下,重要的是测试数据库与生产数据库隔离。图2-5b给出了一个替代方案。这种情况下,将实际生产消息的某个子集发送到测试环境来执行现场测试。我们在第6章讨论金丝雀测试以及其他现场测试方法。环境之间的移动能够用一个脚本来实现,在使用脚本之前要测试其正确性。我们将在第6章看看其他在测试和生产环境之间移动的技术。

 

图2-5 a)使用实际数据测试;b)使用一个用户子集进行现场测试[标注法:架构]

将生产轻松地从一个环境切换到另一个环境的结果是使业务连续性的实现变得更容易。业务连续性意味着当主数据中心发生灾难时业务能够继续运作。在第11章,我们将看到管理多数据中心的案例,但此刻并没有要求将两个环境放在同一个数据中心。如果目标是从一个环境迅速切换到备份环境,就需要同步两个数据库。

2.3.2 轻松创建虚拟机

由于分配新虚拟机过于容易,所以用户管理云方面的一些问题就浮现出来。虚拟机需要打最新的补丁,就像物理机一样,还需要付费。没有打补丁的机器会成为安全风险。而且,在公有云中,用户要付费使用虚拟机。我们听闻过一个发生在主要美国大学的事件,有个学生出去过暑假,但没有清理自己分配的资源,结果回来发现一个$80 000的账单。

术语虚拟机蔓延用来描述管理过多虚拟机的复杂性。类似地,拥有太多虚拟机镜像的挑战称为镜像蔓延。有工具(如Janitor Monkey)可以扫描账户并确定分配了哪些机器以及它们最近的使用情况。当利用云即平台时,必不可少的活动之一就是为机器的分配和虚拟机镜像归档开发并执行一个策略。

2.3.3 数据考量

云的经济效益伴随NoSQL数据库系统一同到来。许多系统利用多个不同的数据库系统,既有关系数据库也有NoSQL。此外,大量数据为了不同的商务智能或运营目的从各种渠道汇聚在一起。如同云中的计算资源能够通过扩展增加,存储资源也能够增加。我们先探讨Hadoop分布式文件系统,它为一个集群内的应用提供存储。Hadoop 分布式文件系统为许多NoSQL数据库系统提供文件系统。然后,我们探讨与分布式文件系统相关的运维注意事项。

1. Hadoop分布式文件系统

Hadoop分布式文件系统提供了一个共享的存储资源池。应用通过Java、C或其他流行语言实现的一个常规文件系统接口来访问Hadoop分布式文件系统。可用的命令包括open(打开)、create(创建)、read(读)、write(写)、close(关闭)和append(追加)。由于多个应用共享Hadoop分布式文件系统提供的存储,所以一个管理器控制文件名的命名空间并在应用程序想写新块时分配空间。该管理器还提供信息以便应用程序能够直接访问特定的块。Hadoop分布式文件系统还有一个存储节点池。

Hadoop分布式文件系统中,这个管理器称为NameNode,存储池的每个元素称为DataNode。Hadoop分布式文件系统还分配了一个NameNode用于热备份。每个DataNode是一个单独的物理机或虚拟机。限制应用程序写固定大小的块——通常是64MB。当应用程序要向文件写一个新块时,它联系NameNode并请求存储该块的DataNode。每块将复制多次,通常是3次。NameNode用一个DataNode列表响应写请求,并得到可写块,之后应用程序把块写入每一个DataNode中。

Hadoop分布式文件系统的许多特性都是用来防范单个DataNode的故障并提高Hadoop分布式文件系统的性能。就我们的目的而言,关键要素是Hadoop分布式文件系统提供了一个在应用程序之间共享的存储池。

2.运维注意事项

与Hadoop分布式文件系统这样的共享文件系统相关的运维注意事项是双重的。

1)谁管理Hadoop分布式文件系统的安装?Hadoop分布式文件系统既可以是多个应用程序之间共享的一个系统,也可以只是一个应用程序的实例化。在单一应用程序的情况下,其管理职责将落在该应用程序的开发团队身上。在共享的情况下,系统的管理必须指派给组织内的某处。

2)存储在Hadoop分布式文件系统内的数据是如何防范灾难的?Hadoop分布式文件系统本身会在多个DataNode上备份数据,但数据中心的一般故障可能造成Hadoop分布式文件系统无法访问或者Hadoop分布式文件系统管理的数据被损坏或丢失。对于那些部分业务依赖于Hadoop分布式文件系统的持续执行并访问存储在Hadoop分布式文件系统中的数据的业务来说,业务连续性成为一个必须解决的问题。

上一篇:Linux分区和文件系统 ⑥


下一篇:Android初级进阶之自定义时钟(二)