发表于2024-12-19
容器技术能够显著提高软件运行、部署的效率,方便系统资源的管理。
CoreOS Container Linux是专门为容器设计的轻量级Linux操作系统,适合集群部署,为关键的应用程序提供自动化、安全性和可伸缩性。
读者对象是系统管理员、软件工程师以及对构建可扩展容错系统感兴趣的人。
《CoreOS实战》介绍CoreOS的生态系统与组件,如何在本地和云系统中设置CoreOS,然后逐步完善一个容器应用开发实例,最后介绍系统管理。
《CoreOS实战》是在CoreOS Container Linux上部署基于容器的系统的清晰指南。在其中,读者将看到一些讲解如何同时在私有基础设施和云系统中设置CoreOS的示例,并且可以使用真实的代码来实践常规的监控和升级技术。读者还将探究重要的容器感知的应用程序设计,其中包括微服务、Web和大数据示例,通过真实用例将读者所学知识转换成自有观点。
Matt Bailey目前是 ZeniMax 的技术主管。Matt Bailey拥有15年的IT从业经验,他具有从大规模计算集群架构到前端编程的丰富知识。
正如《CoreOS实战》的许多读者一样,我也是作为Linux和UNIX系统以及网络的系统管理员而开启技术行业职业生涯的。另外,就像许多人一样,我从未对可用的自动化程度感到满意过,也从未对其无条件信任过。我们中的一些人或多或少使用过CFEngine、Puppet和Chef来进行管理,并且使用我们的技术进行更严谨的工程设计和承担较少的系统管理工作。之后容器变得流行起来,并且CoreOS的发布大规模地填平了容器与系统管理之间的沟壑。
我是在2013年末CoreOS刚刚问世时开始使用它的。它是一款大部分系统管理员都认为迟早会出现的OS。它提供了一种集成方式,以便将服务编制为从其所运行的计算资源池中提取的抽象。Manning出版社在2015年末开始联系我,想要知道我是否有兴趣编写一本CoreOS方面的书籍,我接受了这个提议并且开始奋笔疾书。当我由于这个项目而无法在业余时间陪伴我的孩子们时,我也感到愧疚。这是我的第一《CoreOS实战》,我发现,内容构思以及在Vim中输入这些内容并不是最难的部分,最难的是同时找到充满动力的书籍编写时间和不受打扰的自由时间。而这种情况很少会同时出现,尤其是在家有幼儿的情况下。
我希望《CoreOS实战》能够引导读者并且为读者带来一些挑战。从某种程度上说,这《CoreOS实战》的内容发展遵循了我职业生涯的发展轨道以及此技术领域的发展轨道。具体而言,CoreOS和类似的系统都旨在将单调乏味的运营工作转变成软件开发,并且将系统管理救火式的工作转变成声明式的工程设计。因此,《CoreOS实战》是从基础组成部分开始介绍的,并且以完整的软件栈作为结束。
关于《CoreOS实战》《CoreOS实战》为应用程序架构、系统管理员以及寻求如何在不牺牲开发工作流或者运营简单性的情况下进行规模化计算的信息的人提供了一个有效资源。CoreOS及其组件套装提供了一种切实可行的方法来进行系统设计,其中高可用性、服务发现以及容错性变得不难实现,并且从一开始就成为核心基础设施和应用程序架构的组成部分。CoreOS和它所倡导的概念对于开发人员和运营专家来说都是有用的,CoreOS意识到在某种程度上容器化的意图正变得更易于投入运营、维护和迭代。
如果读者正在阅读《CoreOS实战》,那么大概已经注意到了,技术领域的普遍行动就是分解竖井并且将开发和运营这两方面结合到一起。在许多组织中,运营专家和应用程序架构师的角色正在被结合成一个角色,例如开发运营(DevOps)或者站点稳定工程(Site Reliability Engineering)。因而,一些人可能最终面临知识缺口。有时候,《CoreOS实战》可能看起来使用更高级的主题组合了对读者而言显而易见的信息,不过那是因为我在尝试为可能不具备成功使用CoreOS所需的部分基础知识的人提供完整的全局观念。
《CoreOS实战》读者对象《CoreOS实战》的读者对象是系统管理员、软件工程师以及对构建可扩展容错系统感兴趣的人。《CoreOS实战》研究了使用CoreOS进行运营化和构建服务的软件架构;如果读者有兴趣了解构建可扩展的具有容错性的系统,那么《CoreOS实战》就是很好的资料来源。
《CoreOS实战》中并没有大量的功能性代码——我基本上是在介绍配置文件以及一些用于Amazon Web Services的YAML模板。对于Bash和通用Linux系统管理的基础理解应该就足以让读者入门了。在《CoreOS实战》后面的内容中,会提供具有JavaScript前端的Node.js示例,不过JavaScript经验并不是必要的。
在描述《CoreOS实战》章节之前,先介绍一些技术背景知识。
背景介绍大约从2008年开始,扩展系统以便满足组织顾客的需要已经催生了包括服务、工具和咨询公司的整个行业。这些行业的最终目标一直都是管理具有较少资源的更大规模的系统——并且要非常快速地进行管理。这些平台即服务(Platform-as-a-Service,PaaS)、基础设施即服务(Infrastructure-as-a-Service,IaaS)以及配置管理套件都旨在将系统管理的重担转换成自动化系统,这样组织才能“轻易地”从规模化目标中将IT人力资源释放出来。其理念可以用一个比喻来形容(这个比喻是由Bill Baker提出的,这是我能找到的最贴切的比喻),我们应该将基础设施当作家畜而非宠物来对待。也就是说,计算资源单元是日用品或电器,而非具有名称的独立的、精心维护的服务器。当家畜出现问题时,我们会处理掉它们;而在宠物生病时,我们需要对其进行护理以便它们恢复健康。我们应该充分利用自动化,并且不应该过多关心是否必须进行重构;这样做应该是容易并且可复制的。
不过现实情况是,尝试达成这些可复制性和瞬时性目标通常会极其复杂。这样做的具体方式会变成竖井逻辑和工作流的黑盒,即使是在使用广泛引用的工具也会如此。像Chef和Puppet这样的配置管理系统对于此复杂性而言尤其脆弱——不是因为它们的设计就是如此,而是因为组织通常会遇到阻碍(技术性和非技术性的),而这些阻碍的最终解决都是以与这些工具的最佳实践完全无关的方式来处理的。在IaaS领域,组织通常会像处理其现场资源那样处理其公有云计算资源,这主要是因为IaaS具有允许这样做的灵活性,即使这样做会导致系统不可维护。下面介绍容器。
容器LXC是在Linux用户空间中创建虚拟化运行时的早期实践。与chroots和jails相比较,它是一种比较重的抽象,但又比完全虚拟化轻。在Docker于2013年推出并且围绕LXC技术增加大量特性之前,很少有人使用过或者听说过LXC,最终,Docker用自己的组件完全替换了LXC的组件。在我看来,大体而言,Docker和容器化解决了虚拟化打算解决的问题:关注点的简单隔离、系统的复制以及不可变的运行时状态。其优势很明显:依赖性管理变得被轻易包含其中;运行时是标准化的;并且其方法对开发人员足够友好,开发和运营可以使用相同的工具,且每个字节都在使用同一容器。因此,我们已经越来越少地听到“它仅对我适用,而不适用于生产”这样的话了。CoreOS在某种程度上正是此计算模型的运营化,它利用了在通用、分布式系统模型中容器化的优势。
《CoreOS实战》从头至尾都在介绍如何利用此计算模型的优势。读者将了解如何同时在原型环境和云端生产环境中部署和管理CoreOS。还将了解到如何设计和调整应用程序栈以便它能在此上下文中很好地运行。除了该OS,还将详细介绍CoreOS的每个组件及其应用:etcd用于配置和发现,rkt用于另一种方式的容器运行时,fleet用于分布式服务调度,flannel用于网络抽象。
分布式计算并非新概念;许多用于分布式系统的模型和软件包自从计算的广泛应用开始就已经问世了。不过这些系统中的大多数模型和软件包都不为人所知,具有高度的专属权,或者隔绝在像科学计算这样的特定行业中。最老的一些设计如今仍然存在的唯一原因就是支持20世纪70年代的遗留系统,它们为大型机和小型机驱动着分布式计算。
CoreOS背后的历史与推动因素单系统映像(Single System Image,SSI)计算的概念是一种OS架构,自20世纪90年代以来并没有看到它有多么活跃,它只在一些长期支持遗留系统的场景中得到了应用。SSI是一种架构,它将集群中的多台计算机作为单一系统来提供。其中有单一的文件系统、通过共享运行时空间来共享的进程间通信(Interprocess Communication,IPC),以及进程检查点/迁移。MOSIX/openMosix、Kerrighed、VMScluster和Plan 9(原生支持的)都是SSI系统。Plan 9上大概曾进行过大部分当前的开发活动,这应该表明了此计算模型当初的流行性。
SSI的主要缺陷在于,首先,这些系统通常难以配置和维护,并且并非旨在实现通用性。其次,该领域的发展已经明显停滞了:SSI中没有什么新东西出现,并且它已经无法跟上发展以用作一个流行模型。我认为这是因为科学和其他大数据计算已经拥抱了网格计算,比如像Condor、BOINC和Slurm这样的批处理操作模型。这些工具旨在在集群中运行计算任务并且交付结果;SSI的共享IPC无法为这些应用程序提供多少好处,因为数据传输的(时间)成本超过了阻塞式批处理过程的成本。在应用程序服务栈的领域中,通过像HTTP这样的协议的抽象以及分布式队列也让人们不再值得对共享IPC进行投入。
目前,对于分布式计算而言,问题域是如何有效管理大规模的系统。无论我们是在使用Web栈还是分布式批处理,可能都不需要共享IPC,不过SSI带来的其他内容具有更多显而易见的价值:共享文件系统意味着我们仅需要配置一个系统,并且进程检查点和迁移意味着结点都是可丢弃的并且“更类似家畜”。在不使用共享IPC的情况下,这些解决方案会难以实现。一些组织转而使用将配置应用到多台机器的配置管理系统,或者设置复杂的具有完全自定义逻辑的监控系统。根据我的经验来看,配置管理系统无法达成目标,因为它仅会完全确保运行时的所有状态;在它们运行完成之后,状态就会变成未知。这些系统更专注于可复制性而非一致性,这是一个好的目标,但无法提供通过分布式文件系统进行共享配置的可靠性。尝试同时管理进程的监控系统通常要么特定于应用程序,要么难以实现和维护。
无论是有意或无意,像Docker这样的容器系统都为重新利用SSI的优势奠定了基础,而不需要实现共享的IPC。Docker确保了运行时状态,并且提供了从OS中抽象出来的执行模型。“不过,”大家可能会想,“这完全与SSI相反。现在每一个独立的系统甚至都具有了更为隔离的配置和运行时,而非共享式的!”的确,此方法是不相关的,不过它实现了相同的目标。如果运行时状态仅被定义一次(比如在Dockerfile中),并且在整个容器生命周期中都对其进行维护,那么我们就达成单点配置的目标。并且,如果可以同时远程和独立于其运行之上的OS与集群结点来编制独立进程状态的话,我们就达成通用服务在集群范围内的进程调度这一目标。
意识到那些可能性就是需要独立于容器化系统之外的工具的地方。这正是CoreOS及其系统套件发挥作用的地方。CoreOS提供了足够的OS以供运行一些服务;其余的都是由etcd和fleet的编制工作来处理的—— etcd提供了分布式配置,从中容器可以定义其运行时特征,而fleet管理着分布式初始化和容器调度。从内部看,CoreOS也使用etcd来提供分布式锁以便自动管理OS升级,这转而又会使用fleet在整个集群中平衡服务,这样结点就可以自行升级了。
《CoreOS实战》路线图第1章首先简要介绍CoreOS生态系统。我提供了容器OS中核心系统的一些阐释,以及一个并非真正旨在用于执行而是揭示这些部分如何适配到一起的简要示例。
第2章介绍设置一个本地CoreOS环境的过程,我们将在《CoreOS实战》大部分后续内容中使用它作为沙盒。这也是人们在现实环境中使用的过程,以便为CoreOS构建组件,因此进一步关注该章的内容会是一个好的做法。
第3章讲解与CoreOS容错性和系统升级的方式有关的内容,并且介绍设置一个容错性Web应用的处理步骤。我们在《CoreOS实战》其余内容中基于这个“Hello World”进行构建。
第4章探讨了现实世界的需求和CoreOS生产部署的目标,以及与如何处理集群中分布式文件系统选项有关的一个现实示例。
第5章会研究十二要素应用方法论以及如何将之应用到希望在CoreOS中部署的应用程序栈上。该章会以如何在第6章中应用此方法论的概述作为结束。
第6章将第3章的示例扩展成一个具有许多层的更为真实的Web应用。我们还将引入一个持久化数据库层。
第7章使用了第6章的持久化层并且深入探究了如何让它具有容错性和在所有集群机器中的可扩展性。
第8章深入研究Amazon Web Services(AWS)中CoreOS的实践部署。
第9章讲解如何使用第6章和第7章中所构建的整个软件栈,并且以自动化方式将它部署到第8章所构造的AWS环境中。
第10章通过探讨CoreOS的系统管理部分总结了《CoreOS实战》内容,其中包括日志记录、备份、扩展以及CoreOS的新rkt容器系统。
源代码下载《CoreOS实战》中所有示例的源代码,包括一些非常长的AWS模板,都可以在www.manning.com/ books/coreos-in-action下载。也可扫描封底的二维码下载源代码。
作者简介Matt Bailey目前是ZeniMax的技术主管。他曾致力于高等教育行业,并且曾供职于科学计算、医疗和网络技术公司,以及一些初创型公司。读者可以通过http://mdb.io以在线方式联系他。
作者在线购买了《CoreOS实战》的读者可以免费访问Manning出版社所运营的一个私有网络论坛,读者可以在其中对《CoreOS实战》进行评论,提出技术问题,并且接受来自作者和其他读者的帮助。要访问该论坛并且进行订阅,可以将Web浏览器导航到www.manning.com/books/ coreos-in-action。这个页面提供了相关的信息,其中包括如何在注册之后登录该论坛,可以得到哪些帮助,以及该论坛上的行为准则。
Manning出版社对于读者的承诺旨在提供一个场所,其中读者与读者之间以及读者与作者之间可以展开有意义的对话。作者方面的参与程度是无法得到保证的,但对于作者在线的贡献仍旧是自愿的(并且免费的)。我们建议读者尝试向作者提出一些具有挑战性的问题以免他没兴趣关注!
只要《CoreOS实战》还在印刷,就可以从出版商的网站上访问作者在线论坛和前述探讨内容的归档。
《CoreOS实战》封面介绍 CoreOS实战 下载 mobi epub pdf txt 电子书 格式CoreOS实战 下载 mobi pdf epub txt 电子书 格式 2024
CoreOS实战 下载 mobi epub pdf 电子书CoreOS实战 mobi epub pdf txt 电子书 格式下载 2024