具体描述
OpenStack基金会成员合力著成了这本运维指南,全面讲解如何使用开源的OpenStack平台设计、部署、维护私有或者公有的IaaS云服务。在这份实践指南中,你将在经验丰富的开发者与OpenStack贡献者手把手的指导下学习构建基于参考架构的云,了解如何执行日常管理任务。
OpenStack专为横向扩展而设计,它让你可以整合多种技术来构建云服务,但也在提供很高灵活性的同时让你面临选择的难题,而本书正是要告诉你组织计算、存储和网络资源时应该厘清哪些问题。
如果你已经会管理多台Ubuntu机器和维护MySQL,那么就应该学习:
• 设置自动化的部署和配置;
• 设计单节点的云控制器;
• 使用多种指标提升扩展能力;
• 探索计算节点、网络设计以及存储;
• 安装OpenStack软件包;
• 使用一个示例架构帮助简化决策的制定;
• 构建一个工作环境来探索IaaS云;
• 管理用户、项目和配额;
• 进行维护、调试以及网络故障排查;
• 执行监控、日志管理、备份和恢复。
本书由OpenStack基金会成员全力打造,他们包括:Tom Fifield、Diane Fleming、Anne Gentle、Lorin Hochstein、Jonathan Proulx、Everett Toews和Joe Topjian。
作者简介
作者简介:
Tom Fifield
OpenStack社区经理、墨尔本大学物理学院荣誉院士,曾任澳洲国家级研究计划的云端架构顾问与云端团队领导人。他是OpenStack程序代码贡献度排名中名列前茅的开发者,在OpenStack的整体发展中具有举足轻重的作用。
Diane Fleming
思科高级技术作家(项目经理),具有20余年技术写作经验,曾从事一线编程工作多年。
Anne Gentle
首席工程师、OpenStack技术委员会成员、OpenStack文档编制技术主管、服务型领导。她负责文档开发,并与开发人员紧密合作来确保文档能够满足他们的具体需求。
Lorin Hochstein
Netflix高级软件工程师、OpenStack文档团队成员,曾任Nimbis Services公司云服务首席架构师。他不仅负责云服务部署、运维,而且编写云上运行的软件。
Jonathan Proulx
麻省理工学院高级技术架构师、OpenStack云的践行者、OpenStack文档贡献者和审校者,同时学习和分享OpenStack技术。
Everett Toews
全球领先的托管服务器及云计算提供商Rackspace公司开发大使,Apache软件基金会、开源Java类库jclouds的提交者和项目管理委员会成员。他亦是专业的软件开发人员、软件架构师,具有团队领导经验。
Joe Topjian Cybera
公司系统管理员、系统架构师,负责设计、部署、运维公有云和私有云。他曾创办Terrarum IT Services公司,为客户提供各种远程系统管理服务。
译者简介:
钱永超
携程云系统架构师,负责携程生产环境的Cloud架构、部署与维护工作,此前先后供职于Sun Microsystems(成都)、eBay中国运维中心(上海)。从小型机时代的厂商工程师、互联网公司的系统运维,再到今天的云系统架构,一路走来,不变的是他对技术的热爱。最大的愿望是有生之年可以见证技术奇点(singularity)的到来。
目录信息
第一部分 架构
第1章 架构示例 3
1.1 架构示例:传统网络模型(nova) 3
1.1.1 概述 4
1.1.2 详细描述 6
1.1.3 可选的扩展 8
1.2 架构示例:OpenStack网络服务 8
1.2.1 概述 8
1.2.2 详细描述 10
1.2.3 组件配置示例 16
1.3 关于架构的最后几句话 19
第2章 准备及部署 20
2.1 自动化部署 20
2.1.1 磁盘分区及RAID 21
2.1.2 网络配置 23
2.2 自动化配置 23
2.3 远程管理 23
2.4 关于准备和部署OpenStack的最后几句话 24
2.5 总结 24
第3章 云控制器设计和云系统管理 25
3.1 硬件注意事项 26
3.2 服务的分隔 27
3.3 数据库 28
3.4 消息队列 28
3.5 向导服务 28
3.6 应用程序接口(API) 29
3.7 扩展 29
3.8 调度 29
3.9 镜像 30
3.10 控制面板 30
3.11 认证及授权 31
3.12 网络相关注意事项 31
第4章 计算节点 32
4.1 选择CPU 32
4.2 选择超级管理程序 33
4.3 实例存储解决方案 33
4.3.1 非计算节点存储:共享文件系统 34
4.3.2 计算节点存储:共享文件系统 35
4.3.3 计算节点存储:非共享文件系统 35
4.3.4 动态迁移的问题 35
4.3.5 文件系统的选择 36
4.4 过量分配 36
4.5 日志记录 37
4.6 网络连接 37
4.7 总结 37
第5章 扩展 38
5.1 起点 38
5.2 添加云控制器节点 40
5.3 隔离云系统 40
5.3.1 nova单元和区域 41
5.3.2 可用域和主机集合 41
5.4 可扩展的硬件 43
5.4.1 硬件采购 43
5.4.2 容量规划 44
5.4.3 老化测试 44
第6章 存储决策 45
6.1 临时性存储 45
6.2 持久性存储 45
6.2.1 对象存储 45
6.2.2 块存储 47
6.3 OpenStack存储概念 47
6.4 选择存储后端 48
6.5 结论 51
第7章 网络设计 52
7.1 管理网络 52
7.2 公共地址选项 53
7.3 IP地址规划 53
7.4 网络拓扑 54
7.4.1 OpenStack虚拟机内部的VLAN配置 55
7.4.2 多网卡分配 56
7.4.3 多主机和单主机网络 56
7.5 网络服务 56
7.5.1 NTP 56
7.5.2 DNS 56
7.6 总结 57
第二部分 运维
第8章 了解全局 61
8.1 使用OpenStack控制面板进行管理 61
8.2 命令行工具 61
8.2.1 安装工具软件 62
8.2.2 管理的命令行工具 62
8.2.3 获得凭据 63
8.2.4 检查API调用 64
8.2.5 服务器和服务 66
8.2.6 计算节点诊断 67
8.3 网络检查 68
8.4 用户和项目 69
8.5 正在运行的实例 70
8.6 总结 71
第9章 管理项目和用户 72
9.1 项目还是租户 72
9.2 管理项目 73
9.3 配额 74
9.3.1 设置镜像配额 74
9.3.2 设置计算服务配额 75
9.3.3 设置对象存储配额 77
9.3.4 设置块存储配额 79
9.4 用户管理 80
9.5 创建新用户 80
9.6 将用户与项目关联 81
9.6.1 授权定制化 83
9.6.2 用户间的干扰 84
9.7 总结 85
第10章 面向用户的运维 86
10.1 镜像 86
10.1.1 添加镜像 86
10.1.2 在项目间共享镜像 87
10.1.3 删除镜像 87
10.1.4 其他命令行界面选项 88
10.1.5 镜像服务和数据库 88
10.1.6 镜像服务数据库查询示例 88
10.2 flavor 88
10.2.1 私有flavor 89
10.2.2 如何修改现存的flavor 90
10.3 安全组 90
10.3.1 通用的安全组配置 90
10.3.2 终端用户的安全组配置 91
10.4 块存储 93
10.5 实例 94
10.5.1 启动实例 94
10.5.2 实例启动失败 95
10.5.3 使用实例特有的数据 96
10.6 关联安全组 98
10.7 浮动IP 98
10.8 添加块存储 99
10.9 制作快照 100
10.10 数据库中的实例 102
10.11 祝你好运! 103
第11章 维护、故障和调试 104
11.1 云控制器和存储代理的故障及维护 104
11.1.1 计划中的维护 104
11.1.2 重启云控制器或存储代理 104
11.1.3 重启云控制器或存储代理之后 105
11.1.4 云控制器彻底故障 105
11.2 计算节点的故障和维护 106
11.2.1 计划中的维护 106
11.2.2 计算节点重启之后 106
11.2.3 虚拟机实例 107
11.2.4 检测并从故障实例中恢复数据 107
11.2.5 卷 110
11.2.6 计算节点彻底故障 110
11.2.7 /var/lib/nova/instances 111
11.3 存储节点故障和维护 112
11.3.1 重启存储节点 112
11.3.2 关闭存储节点 112
11.3.3 更换一块Swift 磁盘 112
11.4 处理彻底故障 113
11.5 配置管理 114
11.6 使用硬件 114
11.6.1 添加计算节点 114
11.6.2 添加对象存储节点 115
11.6.3 替换组件 115
11.7 数据库 115
11.7.1 数据库连接 115
11.7.2 性能与优化 116
11.8 HDWMY 116
11.8.1 每小时 116
11.8.2 每天 116
11.8.3 每星期 116
11.8.4 每个月 117
11.8.5 每季度 117
11.8.6 每半年 117
11.9 确定哪个组件已被破坏 117
11.9.1 跟踪日志 117
11.9.2 CLI上运行的守护进程 118
11.10 卸载 119
第12章 网络排障 120
12.1 使用“ip a”检查网络接口状态 120
12.2 云中的nova-network流量虚拟化 121
12.3 云中的OpenStack网络服务流量虚拟化 122
12.4 找出网络路径中的故障 128
12.4.1 tcpdump 128
12.4.2 iptables 129
12.5 nova-network在数据库中的网络配置 130
12.6 用nova-network排查DHCP故障 131
12.7 DNS故障排查 134
12.8 Open vSwitch故障排查 135
12.9 处理网络命名空间 136
12.10 总结 137
第13章 日志和监控 138
13.1 日志在哪里 138
13.2 阅读日志 139
13.3 跟踪实例的请求 140
13.4 添加自定义日志语句 141
13.5 RabbitMQ Web管理界面或rabbitmqctl 141
13.6 集中化日志管理 142
13.6.1 rsyslog客户端配置 142
13.6.2 rsyslog服务器端配置 143
13.7 StackTach 144
13.8 监控 144
13.8.1 进程监控 144
13.8.2 资源告警 145
13.8.3 用Ceilometer来测量和遥测 146
13.8.4 OpenStack特有的资源 146
13.8.5 智能告警 148
13.8.6 趋势分析 149
13.9 总结 150
第14章 备份和恢复 151
14.1 备份什么 151
14.2 数据库备份 152
14.3 文件系统备份 152
14.3.1 计算服务 152
14.3.2 镜像目录和发送 153
14.3.3 身份服务 153
14.3.4 块存储 153
14.3.5 对象存储 153
14.4 恢复备份 153
14.5 总结 154
第15章 定制化 155
15.1 创建OpenStack开发环境 156
15.2 定制对象存储(swfit)中间件 158
15.3 定制OpenStack计算服务(nova)调度器 164
15.4 定制控制面板(Horizon) 169
15.5 总结 169
第16章 OpenStack上游 170
16.1 获得帮助 170
16.2 报告bug 171
16.2.1 确认和划分优先级 172
16.2.2 修复bug 173
16.2.3 修复被接受后 173
16.3 加入OpenStack社区 173
16.4 如何为文档作贡献 174
16.5 安全信息 174
16.6 查找额外的信息 175
第17章 高级配置 176
17.1 不同驱动间的区别 176
17.2 执行周期性任务 177
17.3 谈谈具体的配置 178
17.3.1 计算服务、组网和存储的安全配置 178
17.3.2 高可用性 178
17.3.3 启用IPv6支持 178
17.3.4 计算服务的周期性任务频率 178
17.3.5 对象存储的地理注意事项 178
第18章 升级 180
18.1 升级之前的测试环境 180
18.2 准备回滚 181
18.3 升级 181
18.4 如何从Grizzly升级到Havana:Ubuntu 182
18.4.1 对用户的影响 182
18.4.2 升级的注意事项 182
18.4.3 做备份 183
18.4.4 管理仓库 183
18.4.5 升级配置文件 183
18.4.6 在控制器节点上升级软件包 185
18.4.7 在控制器节点上停止服务、升级数据库模式,并重启服务 186
18.4.8 在计算节点上升级软件包和重启服务 187
18.4.9 在块存储节点上升级软件包和重启服务 187
18.5 如何从Grizzly升级到Havana:Red Hat Enterprise Linux和其衍生版 188
18.5.1 对用户的影响 188
18.5.2 升级的注意事项 188
18.5.3 做备份 188
18.5.4 管理仓库 189
18.5.5 升级配置文件 189
18.5.6 在控制器节点上升级软件包 191
18.5.7 在控制器节点上停止服务,升级数据库模式,并重启服务 192
18.5.8 在计算节点上升级软件包和重启服务 193
18.5.9 在块存储节点上升级软件包和重启服务 193
18.6 清理和最终的配置文件升级 194
18.7 回滚一次失败的升级 194
附录A 用例 198
附录B 云中秘事 202
附录C 使用路线图 212
附录D Icehouse预览 218
附录E 参考资源 227
术语表 229
· · · · · · (收起)
读后感
此书的出版年份虽然是2015年,看起来比较新,但其中实例讲到的OpenStack的内容却是G版本,关于网络部分的结束竟然还是nova-network,neutron一字未提。此书与书名极为不配,叫运维概略还差不多,内容空泛。不推荐阅读
此书的出版年份虽然是2015年,看起来比较新,但其中实例讲到的OpenStack的内容却是G版本,关于网络部分的结束竟然还是nova-network,neutron一字未提。此书与书名极为不配,叫运维概略还差不多,内容空泛。不推荐阅读
此书的出版年份虽然是2015年,看起来比较新,但其中实例讲到的OpenStack的内容却是G版本,关于网络部分的结束竟然还是nova-network,neutron一字未提。此书与书名极为不配,叫运维概略还差不多,内容空泛。不推荐阅读
此书的出版年份虽然是2015年,看起来比较新,但其中实例讲到的OpenStack的内容却是G版本,关于网络部分的结束竟然还是nova-network,neutron一字未提。此书与书名极为不配,叫运维概略还差不多,内容空泛。不推荐阅读
关于网络方面确实是个败笔,技术方面适合刚入门的新手,对于在OS上摸爬滚打几年的人来说,确实没多大作用。另外书中提到一个OS的运维工具stachtach,挺有意思的,国内用的人应该不多,不了解的人可以关注下。
用户评价
这本书的装帧设计简直是一场灾难,封面那种廉价的塑料光泽和模糊不清的排版,让人第一眼就觉得这不是一本正经的技术书籍,更像是某个作坊里赶工出来的印刷品。我特意翻阅了目录,内容上似乎试图覆盖云平台部署的方方面面,但从章节的命名来看,深度和广度似乎都未能达到令人信服的程度。比如,关于网络组件Neutron的章节标题写得非常笼统,完全没有透露出作者是否深入探讨了VXLAN、SDN集成或者故障排除的高级技巧,这对于一个寻求“指南”的运维人员来说,是非常关键的信息缺失。更不用说,我对那些仅仅罗列命令和配置文件的手册已经感到极度厌倦,我期待的是对OpenStack核心架构设计理念的深刻剖析,以及在面对大规模生产环境压力时,如何进行性能调优和弹性扩展的实战经验分享。如果这本书只是停留在“如何安装”的表面,那它的价值就大打折扣了,市面上类似的免费文档比比皆是,我需要的不是重复劳动,而是超越文档的智慧结晶。
这本书的图表质量和代码示例的规范性,简直是一场视觉和技术的双重折磨。很多流程图看起来像是用最基础的绘图软件制作的,线条交叉、文字拥挤,根本无法清晰地展示复杂组件间的交互关系,这对于理解OpenStack这种微服务架构的通信流程来说,是致命的缺陷。至于代码块,我发现几个关键的API调用示例中,变量命名极不规范,而且缺少必要的错误处理结构,直接复制粘贴到生产环境中去,风险极高。一本面向运维的书籍,代码的健壮性和清晰度是生命线。我特别希望看到书中能提供一些经过实战检验的Ansible Playbook或者Terraform模板,用现代化的基础设施即代码(IaC)理念来指导部署,而不是依赖那些可能早已过时的Shell脚本。如果作者连代码的排版和规范都无法保证,我又如何能相信他所描述的那些复杂架构的可靠性呢?这让我对全书内容的严谨性产生了根本性的怀疑。
阅读这本书的章节结构,给我的感觉是东拼西凑、缺乏整体规划。它似乎是把过去几年间零散的技术文档和博客文章强行缝合在了一起,导致整体逻辑线索非常混乱。例如,在讲完Nova计算调度之后,紧接着跳到了Swift对象存储的备份策略,两者之间缺乏平滑的过渡和必要的上下文关联,这使得读者在试图构建一个完整认知图谱时,不得不花费大量的精力去自行弥补这些逻辑断层。此外,全书的案例研究部分显得尤为单薄,几乎看不到任何关于高可用性架构(HA)的深度讨论。搭建一个单点故障的云平台谁都会,但如何保证控制节点集群的健壮性、如何设计跨数据中心的灾备方案,这些才是衡量一个运维指南是否合格的试金石。这本书似乎完全避开了这些最令人头疼的实际挑战,更像是一份“入门入门”的介绍性材料,而不是给专业人士提供参考的“指南”。
这本书的行文风格,读起来就像是在听一个精力有些分散的演讲者在介绍他刚学到的几个技术点,语句之间缺乏逻辑的连贯性和强有力的论证支撑。我尝试阅读了其中关于Keystone认证模块的部分,感觉作者似乎跳过了最核心的身份管理流程和令牌验证机制的底层细节,直接抛出了一些抽象的概念,没有提供清晰的流程图或者代码级别的解释来支撑这些概念。这种叙述方式,对于初学者来说,可能会因为信息密度过高而感到困惑,而对于有经验的工程师而言,又会因为缺乏深度而感到不屑一顾。我尤其关注其中关于存储后端Glance和Cinder的集成部分,期望能看到关于Ceph RBD或者Swift在OpenStack环境下的具体性能瓶颈分析和优化方案,但翻阅后发现,这部分内容处理得非常表面化,更像是一个简单的功能介绍,而不是一个严肃的运维参考手册。一本好的运维指南,应该像一把精密的瑞士军刀,刀刀见骨,能解决实际问题,而不是一把花里胡哨却中看不中用的玩具。
我不得不指出,这本书在对OpenStack不同版本迭代的兼容性处理上,表现得非常不专业。我在目录中看到了对几个较新特性的提及,但却没有明确指出这些特性是在哪个主要版本(如Queens, Rocky, Train等)中引入和成熟的。对于快速迭代的OpenStack生态来说,时间戳是至关重要的。如果作者混用不同版本的配置参数或API调用方式,那么这本书的参考价值将迅速归零,甚至可能误导读者在生产环境中进行危险的操作。更令人担忧的是,关于故障排除(Troubleshooting)这块关键内容,我没有看到任何关于如何利用OpenStack自身的监控工具(如Ceilometer或Prometheus的集成)进行系统级诊断的详细步骤。运维工作的核心就在于解决突发问题,如果这本书仅仅提供了部署脚本,而没有提供“当系统崩溃时如何抢救”的实战经验,那么它就失去了作为“指南”的根本意义。我希望看到的是作者在血与火的生产环境中摸爬滚打出来的教训,而不是教科书式的理论复述。
作为研发看没有讲代码结构,作为运维看没有讲系统架构。入门看来太深,参考看来又太浅。
大概看了看,大概还行
作为研发看没有讲代码结构,作为运维看没有讲系统架构。入门看来太深,参考看来又太浅。
作为研发看没有讲代码结构,作为运维看没有讲系统架构。入门看来太深,参考看来又太浅。
作为研发看没有讲代码结构,作为运维看没有讲系统架构。入门看来太深,参考看来又太浅。