发表于2024-11-09
本地测试环境→大型分布式基础设施→Swarm内部运作|SwarmKit新特性→大规模部署自动化→公有私有云配置运营Swarm集群→大型生产级应用|大规模容器部署→卷|调度|Libnetwork、安全|平台伸缩性→与Docker生态无缝整合→无需重构容器应用便可适配其他平台。具体内容包括:
? 创建并管理任意大小的Swarm Mode集群
? 深入了解迄今为止创建的至大的Swarm集群的幕后,即Swarm 2k和Swarm 3k,分别有2300和4700个节点
? 理解发现机制和Raft
? 在Swarm上部署容器化应用
? 管理AWS、Azure和DigitalOcean上的Swarm集群
? 在Swarm中整合Flocker卷
? 在Openstack Magnum上创建并管理Swarm
Docker Swarm作为Docker集群原生的容器编排解决方案,是Docker生态系统中的关键组件之一。《Swarm容器编排与Docker原生集群》涵盖了Swarm中的发现、调度、高可用、安全和平台伸缩性等重要主题,能帮助你了解Swarm如何组建包含4700个节点的集群,并掌握Swarm的使用与管理,以及如何使用实现大规模应用的可伸缩。
《Swarm容器编排与Docker原生集群》适合企业架构、开发、运维等各岗位从业者阅读,同样适合广大想了解当前主流CaaS架构内在运行原理与真实场景实践的普通学习者。
Fabrizio Soppelsa是一家OpenStack公司——Mirantis的高级工程师。从Docker 0.3版本开始,他就是Docker的积极使用者和倡导者,他用三个国家的语言发表了Docker工具相关的多篇文章。他也是一些项目,特别是Machine项目的实际贡献者。他目前生活在俄罗斯的莫斯科,他和他的蜘蛛Mosha是那里Docker见面会的组织者。
我要感谢ClusterHQ的工作人员对Flocker的帮助,特别感谢Ryan Wallner。也要感谢Yandex团队和Denis Kutin提供了免费的OpenStack实验室,让我能够很容易地使用。感谢Mirantis创建了(我认为是)极好的OpenStack发行版本。感谢Docker团队和Docker社区带给我的所有快乐。
Chanwit Kaewkasi是泰国苏兰拉里理工大学计算机学院的助理教授。Chanwit从0.1版本就开始参与Docker Swarm项目的贡献,他协同设计并且实现了策略过滤器、ZooKeeper发现,以及其他特性。他目前是Docker Swarm的维护者以及Docker Captain(社区给Docker专家的称号)。
我还要感谢我的妻子——Pitchaya,感谢她的鼓励以及对我的工作,包括这本书的大力支持。
要送给Docker Engineering团队特别的感谢,感谢他们开发出的伟大的软件。感谢苏兰拉里理工大学为我提供了很棒的工作场所。感谢我的父母对我的支持。最后还要感谢Fabrizio邀请我合作撰写本书。
审阅者介绍
Baohua Yang是IBM的资深研究员。他的兴趣包括云计算、Fintech、分布式系统和分析的核心领域。他对那些新兴技术特别感兴趣,比如,SDN/NFV、容器、大数据、区块链和认知计算。
作为首席架构师,他领导企业产品的架构设计和系统实现,并且帮助解决了行业解决方案的关键技术难题。
作为开源社区的贡献者,他向数个项目提交代码、方案和演讲,包括OpenStack、Hyperledger、OpenvSwitch、Docker、OpenDaylight和Kubernetes,并且领导了一些项目,包括easyOVS、Hyperledger Fabric-SDK-py和 Cello。他现在是中国Hyperledger技术工作组的主席。
他在前列的互联网会议和期刊(包括IEEE INFOCOM,IEEE Trans on Computers)上发表了十多篇文章,并且参与撰写了一些技术书籍和专利。他现在是数个学术会议和期刊的TPC成员。
他的主页:https://yeasy.github.com。
译者介绍
崔婧雯,具有近10年软件测试开发经验。现就职于IBM,高级软件工程师,负责IBM WebSphere业务流程管理软件的系统测试和自动化CI测试平台的开发工作。曾就职于VMware从事桌面虚拟化产品的质量保证工作。对Dokcer,虚拟化,业务流程管理等技术有浓厚的兴趣。译有《Mesos 大数据资源调度与大规模容器运行 佳实践》《持续轻量级Java EE开发:编写可测试的代码》《用Mesos框架构建分布式应用》等技术著作。
第1章 欢迎来到Docker Swarm1
集群工具和容器管理器3
Swarm的目标3
为什么使用Swarm4
真实的示例5
-- 宠物模型vs牛群模型5
Swarm特性6
类似项目7
-- Kubernetes7
-- CoreOS Fleet8
-- Apache Mesos9
-- Kubernetes vs Fleet vs Mesos10
-- Swarm vs所有10
Swarm v1架构10
-- 术语12
开始使用Swarm13
-- Mac系统上的Docker14
-- Windows系统上的Docker16
-- 使用Linux18
-- 检查Docker Machine是否可用——所有系统19
以前的Swarm19
-- Boot2Docker21
-- 使用Docker Machine创建4个集群节点21
-- 配置Docker主机24
-- 启动Docker Swarm25
-- 测试Swarm集群29
-- 如今的Swarm31
本章小结35
第2章 探索发现服务36
发现服务37
Token38
-- 使用token重新架构第1章示例38
-- Token的限制43
Raft43
-- Raft理论43
-- 实际的Raft45
Etcd47
-- 使用Etcd重新架构第1章示例47
ZooKeeper50
Consul50
-- 使用Consul重新架构第1章示例50
实现去中心化的发现服务52
本章小结52
第3章 遇见Docker Swarm Mode53
SwarmKit53
-- 版本和支持54
-- SwarmKit架构54
-- SwarmKit的核心:swarmd56
-- SwarmKit的控制器:swarmctl57
-- 使用Ansible预配SwarmKit集群58
-- 在SwarmKit上创建服务62
Swarm Mode63
-- Swarm v1 vs Swarm Mode vs SwarmKit64
-- 深入了解Swarm Mode部署65
本章小结72
第4章 创建生产级别Swarm73
工具73
Swarm2k的HA拓扑74
-- 管理器配置75
-- Raft恢复场景75
-- Raft文件76
-- 运行任务76
-- 管理器拓扑76
使用belt预配基础架构79
使用Docker Machine保护管理器安全81
理解Swarm内部机制83
-- 加入worker84
-- 升级管理器85
监控Swarm2k87
-- InfluxDB时间序列数据库87
Swarm3k90
-- Swarm3k的搭建和工作负载90
-- 大规模Swarm的性能92
总结Swarm2k和Swarm3k的经验教训95
本章小结96
第5章 管理Swarm集群97
Docker Swarm standalone97
Docker Swarm Mode98
-- 手动添加节点99
-- 管理器99
-- Worker数量100
-- 添加脚本化节点100
-- belt102
-- 使用Ansible103
集群管理105
-- 操作节点106
降级和升级107
-- 标记节点108
-- 移除节点110
Swarm健康111
备份集群配置111
灾难恢复112
Swarm的图形化界面112
-- Shipyard112
-- Portainer114
本章小结115
第6章 Swarm上真实应用的部署116
微服务116
部署一个复制的Nginx117
-- 一个极简的Swarm118
-- Docker Service120
overlay网络124
集成的负载均衡124
服务的连接:用WordPress例子展示124
-- Swarm的调度策略127
-- 现在,WordPress127
Docker Compose和Swarm Mode130
Docker stacks介绍130
-- 分布式应用包131
-- Docker deploy132
另外一个应用:Apache Spark133
-- 为什么要在Docker上运行Spark134
-- 没有Swarm的Spark单机134
-- 在Swarm上的Spark单机137
-- 在Swarm上启动Spark138
本章小结140
第7章 平台的向上伸缩141
再次登场的Spark例子142
Docker插件142
实验室环境143
-- 一个独一无二的秘钥143
-- Docker Machine144
-- 安全组145
-- 网络配置146
-- 存储配置和架构146
安装Flocker148
-- 生成Flocker证书149
-- 安装软件151
-- 安装控制节点153
-- 安装集群节点153
-- 测试一切是否正常154
安装并配置Swarm156
-- 为Spark添加一个卷157
再次部署Spark157
-- 测试Spark159
-- 使用Flocker存储161
伸缩Spark164
监控Swarm托管的应用165
-- Prometheus165
-- 安装一个监控系统166
-- 在Grafana中导入Prometheus167
本章小结169
第8章 Swarm附加特性的探索171
Libnetwork171
-- Networking插件172
-- 容器网络模型173
加密和路由矩阵174
MacVLAN174
-- overlay网络175
网络控制面板177
Libkv179
-- 如何使用libkv180
本章小结181
第9章 Swarm集群和Docker软件供应链的安全加固182
软件供应链182
Swarm集群的安全加固183
安全加固Swarm:最佳实践184
-- 证书颁发机构185
-- 证书和相互TLS185
-- 集群加入令牌185
-- 在Docker Machine中添加TLS186
Docker Notary187
Docker Secret介绍190
本章小结192
第10章 Swarm和云193
Docker for AWS和Docker for Azure193
-- Docker for AWS194
-- Docker for Azure198
Docker Datacenter201
OpenStack上的Swarm202
-- OpenStack Nova204
-- 当下现实:OpenStack友好的方式205
-- OpenStack Heat205
-- OpenStack Magnum206
本章小结215
第11章 Swarm的未来展望216
Provisioning的挑战216
软件定义基础设施216
-- Infrakit217
-- TUF—— The Update Framework219
Docker Stacks和Compose220
Caas ——容器即服务220
Unikernel220
为Docker做贡献222
-- Github222
-- 提交issue222
-- 代码223
-- belt和其他项目223
本章小结223
欢迎来到《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章“探索发现服务”是描述性语言最多、最抽象的一章。这一章介绍发现机制和共识算法是什么,以及它们为什么对于分布式系统来说至关重要。本章会详细介绍Swarm Mode包含的共识机制Raft及其实现Etcd。还会介绍第1章“欢迎来到Docker Swarm”里所使用的发现机制的局限性,并且使用Consul扩展上一章的本地示例,之后重新将其部署。
第3章“遇见Docker Swarm Mode”介绍全新的Docker kit,它能够帮助用户创建任何规模的任务集群。本章会介绍Docker Swarm Mode的基础——SwarmKit,介绍它在Docker 1.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编排的趋势,比如软件定义的基础架构、Infrakit、unikernel以及Caas。伟大的征途尚未结束!
阅读本书的要求
本书假定读者有在命令行里使用Docker的经验:本书通篇会持续地拉取镜像、运行容器、定义服务、暴露端口以及创建网络。
另外,读者最好对网络协议有一些基本了解,并且熟悉公有云和私有云的概念,比如虚拟机和tenant网络。
要实践本书的示例,读者需要Docker及其工具。第1章“欢迎来到Docker Swarm”介 Swarm容器编排与Docker原生集群 下载 mobi epub pdf txt 电子书 格式
Swarm容器编排与Docker原生集群 下载 mobi pdf epub txt 电子书 格式 2024
Swarm容器编排与Docker原生集群 下载 mobi epub pdf 电子书书不错!
评分书挺好的,特别有用,快递也非常快
评分不错的书
评分好评~
评分没事看看,学习学习。
评分很好很好很好很好。。。
评分不错不错,内容很实
评分送货速度快,价格合适,值得购买!
评分IT民工的生命在于学习。。。
Swarm容器编排与Docker原生集群 mobi epub pdf txt 电子书 格式下载 2024