发表于2024-11-23
本地测试环境→大型分布式基础设施→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正在死亡,现在都在用k8s
评分一边看视频,一边学习书
评分正版书,工具书,学习docker技术。
评分书的内容你错,比较实用
评分送货速度快,价格合适,值得购买!
Swarm容器编排与Docker原生集群 mobi epub pdf txt 电子书 格式下载 2024