容器技术能够显著提高软件运行、部署的效率,方便系统资源的管理。
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实战》封面上的图画是一个“叙利亚苦行僧”。穆斯林苦行僧生活在宗教团体中,他们与世隔绝并且过着物资匮乏且冥想式的生活;他们是众所周知的智慧、医药、诗歌、启迪和妙语的源泉。该图例来自于伦敦老邦德街的William Miller于1802年1月1日出版的奥斯曼帝国服装图集。该图集的扉页已经丢失,并且我们至今都无法找到它的下落。这《CoreOS实战》的目录同时使用英语和法语来标识插图,每张插图都有创作它的两位艺术家的名字,他们无疑一定会为自己的作品被装饰到200年后的一本计算机编程书籍的封面上而感到惊讶。
自那时起,衣着习惯已经改变了,当时如此丰富的地区多样性已经逐渐消失。如今通常从衣着很难区分不同国家的居民。也许,尝试从乐观的角度来看,我们已经用文化和视觉上的多样性换来了更为多样化的个人生活——或者说是更为丰富以及有趣的知识技术生活。Manning出版社的同仁崇尚创造性、进取性,这个图集中的图片使得两个世纪以前丰富多彩的地区生活跃然于纸上,以其作为图书封面会让计算机行业多一些趣味性。
我是一名项目经理,负责管理多个开发团队和他们部署在各种云平台上的应用。在选择技术栈的时候,我非常看重系统的稳定性和运维的便捷性,以确保项目的顺利进行并降低运营成本。CoreOS 的一些特性,比如自动更新和声明式配置,听起来非常有吸引力,可以极大地减少我们团队在系统维护上花费的时间和精力。我购买这本书,是希望它能够提供一套切实可行的方案,说明如何将 CoreOS 应用于我们现有的项目中,或者如何在新项目中规划基于 CoreOS 的基础设施。我尤其关注书中会如何讲解如何实现服务的自动化部署和管理,如何进行有效的容量规划和资源调度,以及如何构建一套安全可靠的运行环境。如果这本书能够提供一些关于投资回报率(ROI)的分析,或者在不同规模的项目中应用 CoreOS 的最佳实践,那将对我做出技术决策提供重要的参考价值。
评分坦白说,我选择购买这本书,很大程度上是受到了它“实战”这个词的吸引。我是一名有几年经验的运维工程师,在日常工作中,理论知识固然重要,但更看重的是能够直接解决实际问题的经验和技巧。市面上关于 CoreOS 的介绍性文章并不少,但很多都停留在概念层面,缺乏具体的落地指导。我希望这本书能够提供一套完整的、可复用的实战方案,从环境搭建、应用部署,到监控、日志收集、故障排除,能够覆盖到一个完整的生产环境的运维流程。我特别关注书中会如何讲解如何将 CoreOS 与现有的CI/CD流程集成,如何实现自动化扩缩容,以及如何处理大规模集群的管理问题。如果书中能够包含一些进阶的调优技巧,或者针对特定场景(例如微服务架构、大数据平台)的部署优化建议,那更是锦上添花。我对书中可能出现的各种“坑”和解决方案非常期待,因为这直接关系到我能否在工作中快速上手,并真正发挥 CoreOS 的价值。
评分对于我这样的初学者来说,接触一项新的技术,最害怕的就是概念晦涩难懂,例子难以理解。我非常希望这本书能够用通俗易懂的语言,循序渐进地引导读者进入 CoreOS 的世界。从最基础的安装和配置开始,逐步深入到更复杂的概念,比如 etcd 的原理和使用、fleet 的集群管理,以及如何利用 systemd 来管理服务。如果书中能够提供大量的代码示例,并且这些示例都能够清晰地解释每一个命令的含义和作用,那么对我的学习将是巨大的帮助。我还希望书中能够包含一些“为什么”的解释,比如为什么 CoreOS 要采用这种设计理念,这种设计带来了哪些好处,以及它在哪些方面优于传统的 Linux 发行版。如果这本书能够帮助我建立起对 CoreOS 的一个清晰、全面的认知,并且让我有信心去尝试部署和管理自己的 CoreOS 集群,那么它的价值将是无法估量的。
评分这本书的发行,对我来说,就像在漆黑的夜晚找到了一盏指引方向的灯。我一直对云计算领域充满兴趣,尤其是那些能够带来效率提升和稳定性的底层技术。在实际工作中,我也曾遇到过需要深入理解系统内核和容器化部署的场景,但往往苦于缺乏系统性的指导,只能零散地从各种博客和论坛中拼凑信息,效果甚微。这本书的出现,正好填补了我在这方面的知识空白。我期待它能深入浅出地讲解 CoreOS 的核心概念,例如它的原子更新机制、不可变基础设施的理念,以及如何利用其独特的系统设计来构建更加健壮和可维护的应用环境。尤其让我好奇的是,书中会如何阐述 CoreOS 在安全性、自动化运维方面的优势,以及它与 Kubernetes 等编排工具的结合方式。如果这本书能提供丰富的实操案例,并且能够解答我在实际部署中可能遇到的各种疑难杂症,那么它无疑将成为我学习和实践 CoreOS 的最佳伙伴。我已经迫不及待地想翻开它,开始这场充满挑战又令人兴奋的学习之旅了。
评分作为一个对开源技术有着濃厚热情的研究者,我一直关注着 Linux 操作系统以及其生态系统的发展。CoreOS 作为一种面向云原生时代的操作系统,其独特的设计理念和技术选型,如不可变基础设施、原子更新等,都给我留下了深刻的印象。我购买这本书,是希望能够更深入地理解这些理念背后的逻辑,以及它们在实际应用中是如何实现的。我期待书中能够对 CoreOS 的内核配置、启动流程、以及其与 Docker 等容器技术的深度集成进行详细的阐述。同时,我也希望这本书能够探讨 CoreOS 在分布式系统中的应用,例如如何利用它来构建高可用、可伸缩的服务。如果书中能够包含一些关于 CoreOS 源码解读或者其社区贡献的讨论,那将更加符合我作为研究者的口味。我希望这本书能让我从一个更宏观的视角去理解 CoreOS,并为其未来的发展方向提供一些思考。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.teaonline.club All Rights Reserved. 图书大百科 版权所有