我的第二本译作《精通OpenStack》上架啦:前言、目录和样章
1. 前言
今天,随着新功能和子项目的增加,OpenStack已成为一个不断扩展的大型开源项目。随着数以百计大型企业采用并不断为OpenStack生态系统做出贡献,OpenStack必将成为下一代私有云解决方案。随着新项目的不断集成,OpenStack提供的服务范围也在不断增加。新项目的不断集成,要归功于OpenStack模块化架构和其核心组件出色的稳定性。事实证明,OpenStack是一个成熟的私有云平台,可提供基础架构即服务(IaaS)功能。随着新项目的不断出现,OpenStack生态系统正朝着平台即服务(PaaS)的方向发展。
为何要考虑采用OpenStack呢?目前,已有诸多用例和实践表明,基于OpenStack的基础架构可以满足企业各种业务需求和开发需要。此外,还要考虑的是,如何在私有云构建过程中统一、标准化企业基础架构设施,OpenStack将是最合适的选择。模块化云平台最基本的设计目标就是为底层基础架构的管理提供更大的灵活性。将传统数据中心转向私有云架构,可充分利用自动化运维的强大功能,并提高服务交付的响应能力。在OpenStack私有云的配置部署中,你会发现启用新功能组件是一件非常容易的事情。作为由插拔式组件构成的云计算软件,OpenStack的模块化架构展现了其强大的云管理平台功能。此外,OpenStack的另一个优势是其每个服务都提供了REST API。OpenStack的这些特征体现了其对自动化思维的完全拥抱,并且OpenStack极易与系统中的已有功能进行集成。此外,OpenStack为企业解决传统IT架构面临的问题和供应商锁定窘境提供了可选的最佳途径。在最新版本中,OpenStack提供了更多的模块和插件来支持第三方软件服务,包括计算、存储和网络组件。
在第2版中,我们将重新组织本书的内容结构和学习方式,并涵盖OpenStack最新版本中的新特性。为了便于理解,我们将重新回顾OpenStack的组件和设计模式,并继续探索、研究和学习OpenStack。另外,我们的新版本也在不断更新OpenStack核心服务架构的新功能,这些新功能涵盖了计算隔离、容器化、新的网络服务模型,包括软件定义网络(SDN)以及新孵化出来的OpenStack存储项目。在本书中,我们始终以开篇部署的OpenStack私有云为主线,并以最佳实践形式分享部署运维经验。与第1版不同,在新版本中,我们通过以容器方式运行的系统管理工具自动化部署OpenStack,从而构建一个模拟真实生产环境的实验环境。这一切都将让你更深入地了解OpenStack生态系统中的新特性,以及如何采用OpenStack来满足业务需求。
本书的最后部分还提供了对OpenStack生产就绪环境的补充,包括运维管理、故障排除、监控和基准测试工具集。
主要内容
第1章回顾了OpenStack核心服务架构,并重点介绍了每个架构设计的更新功能。本章以OpenStack初始逻辑设计开始,以物理模型设计结束,并在物理模型设计中介绍了存储、计算和网络服务的评估方法。本章内容将帮助你进行合理的硬件选型,以便部署、构建基于生产环境的OpenStack私有云。
第2章介绍了DevOps的发展趋势以及如何利用DevOps工具来部署和管理OpenStack私有云。本章主要介绍了DevOps工具Ansible,并使用Ansible作为系统管理工具对OpenStack进行自动化部署和管理。为了增强OpenStack基础架构管理和运维,本章还简要介绍了基础架构即代码(IaC)的概念。为了更好地隔离OpenStack服务,本章采用基于容器的方式部署OpenStack,最终模拟出一个真实的OpenStack生产环境。
第3章主要对运行在云控制器节点中的各种服务更新功能进行介绍,并对OpenStack服务的高可用和容错设计做初步讨论,这些讨论主要涉及OpenStack的核心组件、数据库以及消息队列系统。本章还针对不同的OpenStack核心组件和基础服务进行了Ansible角色和playbook分解。
第4章涵盖了OpenStack中的计算服务,并介绍了Nova最新支持的各种Hypervisor。Docker作为快速发展的容器技术,OpenStack对其提供了很多支持,因此本章对OpenStack的Docker支持项目Magnum进行了详细介绍。此外,本章还介绍了针对大规模OpenStack集群而引入的各种新概念,包括计算和主机隔离、可用区、区域以及Nova中的Cell。同时,本章花了较大篇幅对与实例生命周期相关的OpenStack调度器进行了介绍。最后,本章详细介绍了计算服务的Ansible playbook,以及如何通过playbook在现有OpenStack环境中新增计算节点。OpenStack集群中的几种备份方案也在本章中进行了讨论。
第5章扩大了对OpenStack支持的不同存储类型和备选方案的介绍,同时介绍了OpenStack最新版本中有关对象和块存储的更新功能。Manilla是OpenStack最新支持的一个文件系统共享存储项目,本章对其在OpenStack生态系统中的架构层次进行了详细介绍。最后,本章还介绍了与块和对象存储(也包括Ceph)相关的角色和Ansible playbook。
第6章重点介绍OpenStack当前网络服务的实现原理,包括网络新功能、更新后的Neutron插件,以及OpenStack最新版本中不同的隧道网络实现方式。本章描述了基于Neutron的不同网络实现方案,详细介绍了各种网络组件和术语,从而简化了OpenStack中虚拟网络的管理。此外,本章还重点介绍了如何简化虚拟网络和路由器的复杂配置。最后,在本章的结尾部分介绍了防火墙即服务(FWaaS)和VPN即服务(VPNaaS)。
第7章介绍了OpenStack中网络相关的高级话题。本章以专项形式重点介绍软件定义网络(SDN)和网络功能虚拟化(NFV)的概念,并讨论它们在OpenStack中的集成应用。在本章的结尾部分还探讨了OpenStack中负载均衡即服务的新实现方法。
第8章重点介绍OpenStack云平台的操作管理和使用方法。本章是对运维管理人员如何管理用户、项目以及定义底层资源使用方式的指导。另外,本章还介绍了如何使用OpenStack编排服务Heat来帮助用户自动化编排所需资源。同时,还介绍了基础架构即代码的概念,以及其对现代基础架构需求的实现。Heat已作为OpenStack定义模板资源的内置工具,本章除对它进行介绍外,为了扩展各种工具的使用,还对支持多云环境编排的新型工具Terraform进行了介绍。
第9章重点介绍了OpenStack中每个组件的各种高可用设计模式,包括如何设置OpenStack高可用集群中Active和Passive服务。本章不仅利用外部强大工具实现了消息队列、数据库和其他服务的高可用性,还介绍了包括网络服务在内的OpenStack原生服务的高可用设计。
第10章探讨了OpenStack中计量数据收集服务的新特性。本章详细介绍了OpenStack最新版本中计量数据收集服务的构成,包括警报、事件和指标。此外,本章还介绍了如何使用Nagios等外部流行工具来对云平台进行监控。在本章的后半部分,我们介绍了如何使用不同的故障排除工具和方法来诊断OpenStack集群中的常见问题。
第11章重点介绍了OpenStack中的日志文件,以及在解决OpenStack故障时如何使用日志进行深入排查。通过本章的内容,读者将学会如何使用当前流行的管道日志工具,如ELK(ElasticSearch、LogStash和Kibana)堆栈,高效地解析OpenStack服务中的日志文件。另外,本章还介绍了ELK堆栈架构中最新的稳定版本。同时,本章还对如何使用有效的ELK查询来定位、分析问题的根本原因做出了详细说明。
第12章重点介绍了OpenStack学习使用过程中相对高级的主题,即OpenStack基准测试和性能调优。通过本章介绍的专为OpenStack测试而开发的性能测试工具Rally,你将能够更深入地理解OpenStack云平台的内部运行机理,而这对于云平台容量及其架构的调优非常关键。此外,本章还介绍了对OpenStack数据平面进行测试评估的工具Shaker,并介绍了如何使用Shaker工具对网络带宽进行基准测试。
需要的背景知识
本书假定读者有基本的Linux操作系统和云计算概念。新版本基于OpenStack中的最近更新功能丰富了大量内容,另外,熟悉OpenStack生态系统也非常重要。同时,读者需要具备对网络术语、系统管理工具和架构设计模式等基本知识的掌握和理解。与第1版不同,在第2版中,我们使用Ansible作为OpenStack基础架构管理的主要工具。本书使用的是OpenStack的Ansible官方项目,项目地址为:https://github.com/openstack/openstack-ansible。鉴于Ansible的使用,如果能够很好地理解YAML语法,对于阅读本书将有很大帮助。
你可以使用任何工具来搭建测试环境,例如Oracle的VirtualBox、Vagrant或VMware工作站版本。读者可以使用github中OpenStack-Ansible项目的All-In-One(OSA,一体化)方式来构建实验环境。本书建议在物理硬件上安装OpenStack以搭建生产就绪的环境。因此,在你的环境中,需要物理网络基础架构。另外,如果正确地配置了虚拟网络环境,也可以在虚拟环境中运行OpenStack以进行测试。
本书用到的软件列表如下:
操作系统:CentOS 7或者Ubuntu 14.04。
OpenStack:Mitaka或者更新的发行版。
VirtualBox:4.5版或者更新的版本。
Vagrant:1.7版或者更新的版本。
Ansible服务器:2.2版或者更新的版本。
如果准备运行OpenStack开发环境,下面是最低的硬件需求:
一台支持CPU硬件虚拟化的物理机。
8核CPU。
12GB内存。
60GB空余磁盘空间。
两张网卡。
下载OpenStack和其他工具所需的软件包需要访问Internet。另外,有关安装最新版OpenStack或更新旧版本软件包的详细说明,请参阅http://docs.openstack.org中给出的指南。
面向的读者
本书主要面向希望部署基于OpenStack私有云的云计算工程师、架构师和DevOps工程师。本书也适用于那些热衷于OpenStack新特性、新功能,以及希望扩展自身知识,并将OpenStack生态系统中的新功能和新项目追加至现有生产环境中的云计算从业人士。本书并未提供有关安装、部署和运行OpenStack服务的详细步骤,因此,读者可专注于OpenStack各种高级特性和方法的理解。在这一版本中,我们提供了部署和运行OpenStack环境的更多选择,因此读者可以按照本书每章中的示例进行实际操作。
下载示例代码
本书的示例代码可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
2. 目录
Contents 目 录
译者序
前言
关于作者和审校者
第1章 OpenStack参考架构设计 1
1.1 OpenStack引领新一代数据中心 2
1.2 OpenStack逻辑架构介绍 2
1.2.1 认证管理服务Keystone 3
1.2.2 对象存储服务Swift 3
1.2.3 块存储服务Cinder 4
1.2.4 文件共享存储服务Manila 5
1.2.5 镜像注册服务Glance 5
1.2.6 计算服务Nova 6
1.2.7 网络服务Neutron 7
1.2.8 计量服务Telemetry 9
1.2.9 编排服务Heat 9
1.2.10 仪表盘服务Horizon 10
1.2.11 消息队列 10
1.2.12 数据库 10
1.3 资源准备与虚拟机创建 10
1.3.1 准备虚拟机资源 10
1.3.2 虚拟机创建流程 11
1.4 OpenStack逻辑概念设计 13
1.4.1 概念模型设计 13
1.4.2 逻辑模型设计 15
1.4.3 存储选型考虑 16
1.4.4 逻辑网络设计 17
1.5 OpenStack物理模型设计 19
1.5.1 估算硬件容量 19
1.5.2 CPU评估 20
1.5.3 内存评估 21
1.5.4 网络评估 21
1.5.5 存储评估 22
1.6 OpenStack设计最佳实践 23
1.7 总结 24
第2章 基于DevOps的OpenStack部署 25
2.1 DevOps与CI/CD 25
2.1.1 一切皆代码 26
2.1.2 DevOps与OpenStack 27
2.1.3 基础架构部署代码 28
2.1.4 OpenStack中的CI/CD 29
2.2 DevOps工具与OpenStack自动化部署 30
2.2.1 Ansible介绍 31
2.2.2 Ansible与OpenStack自动化 33
2.2.3 开发和生产环境架构 34
2.2.4 硬件与软件需求规划 35
2.2.5 网络需求规划 36
2.2.6 开发环境构建 37
2.2.7 基础架构代码环境准备 39
2.2.8 代码变更追踪 43
2.3 总结 43
第3章 OpenStack集群——云控制器和公共服务 44
3.1 集群核心概念 45
3.1.1 非对称集群 45
3.1.2 对称集群 45
3.1.3 集群分而治之 45
3.2 云控制器及其服务 46
3.2.1 Keystone服务 47
3.2.2 nova-conductor服务 50
3.2.3 nova-scheduler服务 50
3.2.4 API服务 51
3.2.5 镜像管理 51
3.2.6 网络服务 52
3.2.7 Horizon仪表板服务 52
3.2.8 计量服务 52
3.2.9 基础架构服务 53
3.3 云控制器集群部署准备 54
3.3.1 OpenStack Ansible安装部署 55
3.3.2 控制节点环境准备 57
3.4 使用OpenStack playbook部署集群 58
3.4.1 配置OpenStack Ansible 58
3.4.2 网络配置 59
3.4.3 配置主机组 59
3.4.4 用于集群部署的playbook 61
3.5 总结 63
第4章 OpenStack计算——Hypervisor选择与节点隔离 64
4.1 计算服务组件 65
4.2 Hypervisor决策 65
4.3 Docker容器与Hypervisor 66
4.4 OpenStack容器服务项目Magnum 67
4.5 计算云中的分区与隔离 69
4.5.1 可用区 69
4.5.2 主机聚合 69
4.5.3 Nova单元 70
4.5.4 区域 71
4.5.5 工作负载隔离 71
4.5.6 使用多种Hypervisor 72
4.6 资源超分 75
4.6.1 CPU分配比率 75
4.6.2 内存分配比率 76
4.7 实例临时存储规划 77
4.7.1 外部共享文件存储 77
4.7.2 内部非共享文件存储 77
4.8 理解实例启动过程 77
4.8.1 理解Nova调度流程 78
4.8.2 从镜像启动实例 78
4.8.3 获取实例元数据 78
4.8.4 添加计算节点 80
4.9 备份恢复规划 81
4.9.1 使用backup-manager进行备份 82
4.9.2 简要恢复步骤 83
4.9.3 数据保护即服务 84
4.9.4 OpenStack社区数据备份项目 84
4.10 总结 84
第5章 OpenStack块、对象存储与文件共享 85
5.1 OpenStack存储类型 86
5.1.1 临时存储 86
5.1.2 持久存储 86
5.2 Swift对象存储 87
5.2.1 Swift架构 87
5.2.2 Swift在物理设计上的规划 88
5.2.3 Swift环 89
5.2.4 Swift存储策略和纠删码 91
5.2.5 Swift硬件考虑 92
5.2.6 Swift节点资源配置考虑 93
5.2.7 Swift网络配置考虑 94
5.2.8 Swift服务部署 94
5.3 块存储服务Cinder 97
5.3.1 Cinder后端驱动和调度 99
5.3.2 Cinder服务部署 101
5.4 共享存储服务Manila 101
5.4.1 Manila共享存储项目介绍 101
5.4.2 Manila共享存储配置与使用 103
5.5 存储类型选择 104
5.6 Ceph分布式存储集群 105
5.6.1 Ceph在OpenStack中的应用 108
5.6.2 使用Ansible部署Ceph集群 108
5.6.3 将Glance镜像存储至Ceph 111
5.7 总结 112
第6章 OpenStack网络类型与安全 113
6.1 Neutron架构 114
6.1.1 Neutron插件 115
6.1.2 Neutron服务插件 115
6.1.3 Neutron代理 115
6.1.4 Neutron API扩展 115
6.2 虚拟网络实现 116
6.2.1 VLAN网络 116
6.2.2 隧道网络 116
6.2.3 虚拟交换机 118
6.2.4 ML2插件 118
6.2.5 网络类型 119
6.2.6 Neutron子网 119
6.2.7 创建虚拟网络和子网 119
6.3 Neutron网络端口连接 119
6.3.1 基于Linux Bridge的网络连接 119
6.3.2 基于OpenVSwitch的网络连接 121
6.4 Neutron虚拟网络与路由 123
6.4.1 Neutron虚拟配置路由服务 123
6.4.2 基于路由的网络连接实现 124
6.4.3 实例访问外网 125
6.4.4 外网访问实例 125
6.4.5 关联虚拟机浮动IP 126
6.5 Neutron安全组 126
6.5.1 安全组 127
6.5.2 创建安全组策略 127
6.6 Firewall as a Service 128
6.6.1 防火墙配置 128
6.6.2 创建防火墙策略和规则 129
6.7 VPN as a Service 130
6.7.1 VPN插件配置 131
6.7.2 创建VPN服务 132
6.8 总结 137
第7章 OpenStack SDN网络与NFV 138
7.1 基于SDN的网络 138
7.1.1 SDN介绍 138
7.1.2 OVS架构 139
7.2 OVN架构 140
7.2.1 OVN组件 141
7.2.2 OVN与OpenStack集成 141
7.2.3 基于OVN的虚拟网络实现 142
7.3 网络功能虚拟化 144
7.3.1 管理与编排规范 144
7.3.2 云应用拓扑编排规范模版 144
7.3.3 OpenStack Tacker项目介绍 145
7.4 基于Octavia的LBaaS实现 147
7.4.1 配置Octavia 148
7.4.2 创建负载均衡器 148
7.5 总结 150
第8章 OpenStack集群操作与管理 151
8.1 OpenStack租户操作 152
8.1.1 项目与用户管理 152
8.1.2 用户权限管理 153
8.1.3 资源配额管理 155
8.2 OpenStack编排服务 160
8.2.1 OpenStack Heat项目介绍 160
8.2.2 OpenStack模板栈及其介绍 161
8.2.3 OpenStack模板栈组织架构 162
8.2.4 栈模块化编排应用 162
8.2.5 资源编排利器Terraform 170
8.3 本章小结 178
第9章 OpenStack高可用与容错机制 179
9.1 集群高可用 179
9.1.1 不能混淆的HA概念 181
9.1.2 Open Stack中的HA级别 181
9.1.3 严格制定SLA 182
9.1.4 量化与度量SLA 183
9.1.5 HA字典 183
9.2 负载均衡器HAProxy 184
9.2.1 OpenStack服务高可用 186
9.2.2 负载均衡高可用 186
9.3 OpenStack HA实现方法 187
9.3.1 数据库高可用 188
9.3.2 消息队列高可用 191
9.4 HA规划与实现 192
9.4.1 MySQL高可用实现 192
9.4.2 RabbitMQ高可用实现 197
9.4.3 OpenStack控制节点高可用实现 200
9.4.4 网络节点高可用实现 204
9.5 Ansible实现HA 210
9.6 总结 212
第10章 OpenStack集群监控与故障排查 213
10.1 OpenStack中的Telemetry服务 214
10.1.1 Ceilometer介绍及架构 214
10.1.2 时序数据库Gnocchi 218
10.1.3 监控告警项目Aodh 219
10.2 在OpenStack中安装Telemetry 220
10.2.1 Ceilometer安装部署 221
10.2.2 Aodh告警服务配置部署 224
10.3 OpenStack监控增强 226
10.3.1 运行Nagios 227
10.3.2 Nagios监控配置 228
10.3.3 Nagios监控OpenStack 228
10.4 基于监控的OpenStack故障排除 231
10.4.1 服务的启动与运行 231
10.4.2 服务监听 233
10.4.3 拯救故障实例 234
10.4.4 网络故障排除 236
10.5 总结 239
第11章 OpenStack ELK日志处理系统 240
11.1 OpenStack日志处理 241
11.1.1 OpenStack日志解密 241
11.1.2 OpenStack外部监控系统 244
11.1.3 ELK核心概念与组件 244
11.2 ELK安装部署 246
11.2.1 ELK服务器准备 247
11.2.2 ElasticSearch安装 247
11.2.3 ElasticSearch配置 248
11.2.4 ElasticSearch功能扩展 249
11.2.5 Kibana安装 251
11.2.6 Kibana配置 251
11.2.7 LogStash安装 253
11.2.8 LogStash配置 254
11.2.9 LogStash操作 254
11.2.10 LogStash客户端准备 257
11.2.11 OpenStack日志过滤 258
11.3 OpenStack ELK功能扩展 262
11.3.1 OpenStack日志可视化 264
11.3.2 基于Kibana的故障分析 267
11.4 总结 270
第12章 OpenStack基准测试与性能调优 271
12.1 OpenStack数据库瓶颈调优 272
12.1.1 数据库瓶颈根因 273
12.1.2 OpenStack中的缓存系统 273
12.1.3 Memcached在OpenStack中的应用 274
12.1.4 Memcached安装与部署 275
12.2 OpenStack基准测试 279
12.2.1 基于Rally的OpenStack API测试 280
12.2.2 实现OpenStack SLA 280
12.2.3 Rally安装与部署 281
12.2.4 Rally配置应用 282
12.2.5 测试示例—Keystone性能调优 284
12.3 基于Shaker的OpenStack网络测试 291
12.3.1 Shaker架构 292
12.3.2 Shaker安装部署 293
12.3.3 Shaker配置应用 294
12.3.4 测试示例—OpenStack L2网络调优 296
12.4 总结 302
3. 样章下载
在『世民谈云计算』微信公众号后台回复 精通样章,即可获得第1、3、9 三章样章的下载链接。
感谢您的阅读,欢迎关注我的微信公众号,欢迎有需要的朋友们购买书籍: