Docker Swarm作为Docker集群原生的容器编排解决方案,是Docker生态系统中的关键组件之一。《Swarm容器编排与Docker原生集群》涵盖了Swarm中的发现、调度、高可用、安全和平台伸缩性等重要主题,能帮助你了解Swarm如何组建包含4700个节点的集群,并掌握Swarm的使用与管理,以及如何使用实现大规模应用的可伸缩。
《Swarm容器编排与Docker原生集群》适合企业架构、开发、运维等各岗位从业者阅读,同样适合广大想了解当前主流CaaS架构内在运行原理与真实场景实践的普通学习者。
集群首选|编排王道→Swarm Mode/Swarmkit→大型生产级分布式应用|大规模容器自动化部署。
译者介绍
崔婧雯,具有近10年软件测试开发经验。现就职于IBM,高级软件工程师,负责IBM WebSphere业务流程管理软件的系统测试和自动化CI测试平台的开发工作。曾就职于VMware从事桌面虚拟化产品的质量保证工作。对Dokcer,虚拟化,业务流程管理等技术有浓厚的兴趣。译有《Mesos 大数据资源调度与大规模容器运行 佳实践》《持续轻量级Java EE开发:编写可测试的代码》《用Mesos框架构建分布式应用》等技术著作。
欢迎来到《Swarm 容器编排与 Docker 原生集群》一书!这是一本关于容器和分布式系统的书。本书将介绍如何使用原生的 Docker 工具建模微服务、生成任务、扩大应用程序的规模,以及将容器推送到 Docker 集群里!一句话来说,本书将讨论 Docker 的编排。
随着最近 Swarm Mode 的崛起,以及 Docker Engine 启用了 Swarm 功能,编排 Docker的最佳方式其实还是 Docker!
听上去不错,但是“编排 Docker”是什么意思呢?什么是编排?更确切的说法是,什么是管弦乐队?
管弦乐队指的是音乐家的全体,它由指挥家指挥,指挥家负责控制节奏、旋律,塑造出音乐的整体。弦乐队、管乐队、打击乐队、键盘乐队以及其他乐队都会遵循指挥家的指挥,共同演奏出惊人的交响乐曲,比如贝多芬的《第九交响乐》。
类似地,在容器编排系统里,音乐家是任务,指挥家则是领导者服务(Swarm primitives)。任务并不演奏旋律,或者并不仅仅做这些:更为抽象地说,它们执行一些计算型工作,比如,运行 Web 服务器。而指挥家——Swarm,则负责它们的预配,它们的可用性,它们的链接,它们的扩展。这也就是大家所说的“Docker 编排”。
本书讲述如何预配这样的 Docker“管弦乐队”,如何保证服务的可用性,如何连接任务,以及如何扩展平台,从而演奏出属于应用程序的动人交响乐。
本书范围
第 1 章“欢迎来到 Docker Swarm”会介绍 Swarm,并且解释用户为什么需要集群解决方案来管理容器。这一章介绍 Swarm 的特性,介绍其架构的高层级描述。这一章还设计了一些示例,讲述 Swarm 和 Fleet、Kubernetes、Mesos 的不同之处。之后也会介绍 Docker 工具的安装以及两种 Swarm 的预配方式:本地的 Swarm Standalone 和远程在 DigitalOcean 上的 Swarm Mode 集群。
第 2 章“探索发现服务”是描述性语言最多、最抽象的一章。这一章介绍发现机制和共识算法是什么,以及它们为什么对于分布式系统来说至关重要。本章会详细介绍 SwarmMode 包含的共识机制 Raft 及其实现 Etcd。还会介绍第 1 章“欢迎来到 Docker Swarm”里所使用的发现机制的局限性,并且使用Consul扩展上一章的本地示例,之后重新将其部署。
第 3 章“遇见 Docker Swarm Mode”介绍全新的 Docker kit,它能够帮助用户创建任何规模的任务集群。本章会介绍 Docker Swarm Mode 的基础——Swarm Kit,介绍它在 Docker1.12+版本里是如何工作的,讨论其架构、理念,它和“旧”Swarm 的不同之处在哪里,以及它是如何通过抽象出服务和任务来组织工作负载的。
第 4 章“创建生产级别 Swarm”介绍并且讨论了社区驱动的项目——Swarm2k 和Swarm3k,我们实验了 2300 和 4800 个节点的 Swarm 集群,可以运行成千上万个容器。最后总结了可用计划,预配多大规模的集群,以及实验中的经验教训。
第 5 章“管理 Swarm 集群”主要探讨基础架构。这一章展示如何增加或者降低 Swarm的规模,如何 promote 以及 demote 节点,以及如何更新集群和节点的属性。这一章还会介绍 Shipyard 和 Portainer.io,其可以作为 Swarm 的图形 UI。
第 6 章“Swarm 上真实应用的部署”介绍了将真实应用程序放到 Swarm 上,并且讨论了 Compose、Docker Stacks 和 Docker Application Bundles。这一章展示了典型的部署工作流如何在集群里过滤并且调度容器,将其作为服务启动,将容器作为任务处理。这一章从定义一个使用 Nginx 的 Web 服务开始,然后部署一个使用 MySQL 的 WordPress,最终介绍一个更为实际的应用:Apache Spark。
第 7 章“平台的向上伸缩”将在前几章的基础上开始新的话题讨论。这一章将介绍Flocker,给 Swarm 上运行的 Spark 增加存储能力,并且会展示如何安装,以及如何和 Swarm一起大规模、自动地使用它。这一章将完善之前的 Spark 示例,运行一些真实的大数据 job,并且为该基础架构搭建基础的监控系统。
第 8 章“Swarm 附加特性的探索”讨论了一些对于 Swarm 来说很重要的高级话题,包括 Libnetwork 和 libkv。
第 9 章“Swarm 集群和 Docker 软件供应链的安全加固”关注 Swarm 集群的安全方面,会介绍平台的参数、证书、防火墙等概念,并且会介绍 Notary。
第 10 章“Swarm 和云”介绍了在云供应商那里运行 Swarm 的最为流行的几种方案。将在 AWS 和 Azure 上安装 Swarm,然后介绍 Docker Datacenter,最后会转向 OpenStack,介绍在 Magnum 上如何安装以及管理 Swarm,Magnum 是 OpenStack 提供的容器即服务方案。
第 11 章“Swarm 的未来展望”展望了 Docker 编排的趋势,比如软件定义的基础架构、Infrakt、unikernel 以及 Caas。伟大的征途尚未结束!
阅读本书的要求
本书假定读者有在命令行里使用 Docker 的经验:本书通篇会持续地拉取镜像、运行容器、定义服务、暴露端口以及创建网络。
另外,读者最好对网络协议有一些基本了解,并且熟悉公有云和私有云的概念,比如虚拟机和 tenant 网络。
要实践本书的示例,读者需要 Docker 及其工具。第 1 章“欢迎来到 Docker Swarm”介绍了它们的安装方式。
另外,要想完全学习到示例里的知识,读者还需要能够访问一种公有云(比如 AWS,Azure 或者 DigitalOcean)或者私有云(比如 OpenStack)来初始化出虚拟机。
本书写给 Docker 的用户——开发人员和系统管理员,那些想要利用现有的 Swarm 和Swarmkit 的功能,借助容器大幅扩展应用程序的人们。
第一章25页有一个问题,我修改主机里面的TLS后,也重启了节点。使用ps aux也看到了修改,但是docker-machine ls还是无法获取2375,docker-machine env无法获取了。这是什么原因