OpenStack作为开源云计算技术首当其冲,有着广泛的受众、活跃的社区和良好的传播,尊为云计算技术的领导者。本书由浅入深,从设计理论到实际操作,逐渐深入,带领读者认识OpenStack云计算的全貌,轻松步入OpenStack云计算的世界。其内容涵盖了OpenStack云计算设计理论、虚拟化技术KVM和Xen原理和应用、四种OpenStack网络架构(flat、local、GRE和VXLAN)模式和网络OSI七层模型介绍、Ceph分布式存储、OpenStack安装配置(nova、cinder、neutron、horizon、swift和keystone等服务组件)、应用场景和OpenStack实际操作(卷管理、创建网络和实例、实例热迁移和冷迁移)等多个方面,使读者阅读后如沐春风,真正喜欢云计算这项技术。本书适合于刚刚或者计划进入云计算领域的初级读者学习,也适合已经进入云计算领域并且有一定相关知识或认识的中级读者阅读。对于一些从事售前工作的读者,本书也非常适用。
1理论知识丰富,知道所以然。
2实际操作具体,需求和实现一一对应,能够快速上手OpenStack。
3知识点全面,涵盖OpenStack的全部服务组件,系统全面地掌握OpenStack。
序一
第一次接到学生的作序邀请,有些许惊讶,惊讶之余,多有感慨!感慨有三:一是当初混沌懵懂的大学生已经在社会上茁壮成长,已不复当年记忆;二是自己的学生有如此进步,实为其感到高兴;三是自己的学生还在从事本专业工作,坚持不懈,为自己多年的教学生涯感到慰藉。遥记当年和学生第一次通过邮件讨论Java问题,后期做毕业设计,研究项目和语言架构,学生均付之于全力。以观如今,也属自然,望之继续努力。
当今,云计算已开始浸入和影响我们的生活。社会大众所使用的微博、微信、支付宝等手机APP多半在云端运行,大多数人的日常生活都已离不开它们,云计算俨然成为我们生活和学习的必需品。正如工业革命时期的水、电和交通一样,云计算正在让信息技术和信息服务实现社会化、集约化和专业化,让信息服务成为社会的公共基础设施。作为一种新型的服务提供模型,云计算让用户可随时、随地、按需地通过网络访问计算、存储等各种共享资源。
短短十余载,云计算从概念实现了落地,从星星之火演变成燎原烈火。在云计算的IaaS领域,OpenStack风头正盛,社区活跃、灵活性、创新性、不被厂家锁定和良好的生态环境等一系列优点促使它成为云计算的“宠儿”。在云计算的发展进程中,涌现出众多OpenStack的产品、方案和服务。各大、中、小型公司竞相趋之,希望能够借助OpenStack这个风口而起飞。
苏格拉底有千年一问,研究哲学讲究三要素,问和研都集中在这三个问题上:我是谁?我从哪里来?我要到哪里去?本书作者抱着回答这三个问题的态度,并在此落笔,从理论出发,结合实际,综合实操,全面讲解OpenStack,阐述了OpenStack的前世今生,详述了OpenStack的何去何从。希望广大读者能够和本书作者一起,带着这三个问题阅读此书,理解云计算和学习OpenStack,重温快乐学习的过程。谢谢!
谢斌红
太原科技大学计算机科学与技术学院副教授
序二
与本书作者的初次相识,是在一次云计算技术交流大会上,我俩一见如故,相谈甚欢。本书作者对技术的追求和痴迷,给我留下了深刻的印象,也一下子拉近了我们的距离。同为技术研究人员的我们,此后一直保持联系,对技术的钻研、实践中问题的探讨、对行业发展的思考……最近一次见面,本书作者拿着自己的书稿,让我帮忙写一段话。我在浏览此书后,觉得此书对于云计算的初级学者和中级读者来讲,在系统、全面地学习OpenStack方面是非常有帮助的。
OpenStack作为一款云计算软件,成功地利用软件定义了传统的一切,包括软件定义存储、软件定义网络等。它将传统所见的黑盒子全部利用软件定义成白盒子。原来的计算或存储设备很神秘,像“变形金刚”一样屹立在我们的机房中,默默地提供服务,而数据在这些设备中如何进行计算、存储,以及数据的安全性、持久性,只能依赖厂商的产品说明书,而我们被拒之门外。然而OpenStack解决了这一切,只要你懂得代码,你就通晓一切。OpenStack对计算、存储、网络等多个功能进行了融合,成为一个完整的个体,解决了我们的各种IT需求。在原来的世界中,计算是计算、存储是存储、网络是网络,彼此之间分离,安装、配置、部署和运维极其复杂,并且还要考虑不同设备之间的兼容性。OpenStack将这些功能设计成不同的服务组件,彼此之间松耦合,组合在一起,并且提供了一套完整的管理方法和工具,完成了我们想要实现的所有功能,承载它们的物理硬件也由“变形金刚”变成了普通的“铁盒子”——X86服务器。开源是OpenStack最大的优势,避免了被IT厂商锁定,我们可以将核心技术掌握在自己手中,再也不用因为某个技术不熟悉而弃用或另行招聘人才,或者因为不兼容而不得不购买固定品牌的昂贵设备,避免由此造成企业成本的增加。
回想自己初入云计算领域,当时亦是十分茫然,在市面上找了很多相关书籍,如饥似渴地阅读。本书作为一本系统化讲述OpenStack的书籍,阐述了OpenStack的前世今生,详述了OpenStack的何去何从,深入浅出,理论结合实践,具有很强的实操性。相信初入云计算领域的技术人员在详细阅读此书后,会有一种打通任督二脉、茅塞顿开的收获;对于中级读者来说也能融会贯通,有新的收获。祝愿读者在此书中有一个愉快的阅读旅程!
张志飞
WatchGuard加拿大区首席架构师
前言
记得初识云计算时,根本不知道云计算为何物,同时出现的还有物联网概念,它们满满地冲击着我这个刚刚适应工作岗位的菜鸟。随着各IT厂商对云计算概念的热炒,慢慢地我知道了什么是云计算、云计算能够做什么。不知道是我抽离现象看到了本质,还是目光浅薄,竟然逐渐看轻云计算,认为其不过是IT厂商忽悠甲方的一个概念,要落地并产生效益很难。
后来,中国整个IT市场掀起了去IOE的飓风,尤其是在“棱镜门”爆出后,呈愈演愈烈之势,传统的高性能、高稳定性和高安全性设备与架构失去了其继续存在的依靠,让传统IT建设在整个IT大环境中显得那么格格不入。同时,也让我这个传统IT从业者变得惴惴不安,让我多年视若瑰宝的UNIX和存储技术一下子变成了过去时。在我情绪低落时,无所适从的感觉油然而生,这种感觉既迷茫又无奈。
这也印证了一句名言:世界上唯一不变的就是变化。人们大抵只会在互相调笑的时候才会祭出“三观不正确”的观点来反击他人,但是在某段比较盲从的时间里,可能也只有一个人具备的先天与后天共同作用而产生的“三观”能帮助你、解救你,至少自己可以这么认为。正确的“三观”告诉我们,人要顺应潮流,要顺势而为,要迎合变化,要拥抱改变。因此,我放弃了学习多年的UNIX和存储技术,投身于Linux和各种开源技术,也正在此时,OpenStack进入了我的世界。我重拾荒废多年的Linux,开始学习Hadoop和OpenStack。
接触OpenStack三年多来,我一直在碎片化地学习,走了不少弯路,也错误地理解了很多概念。人多半都是在困惑的道路上一直前行,走走看看,看看走走。某天下午,我无意中看到一句话——最好的学习就是写作,如梦初醒,于是萌生了写作此书的想法。希望阅读此书的读者能够在学习OpenStack的道路上少走一些弯路,能够系统、全面地学习和掌握OpenStack。
本书内容
本书共分为3篇28章。第1篇是原理篇,包括9个章节,详细讲述了OpenStack项目中各服务组件的原理知识,对计算虚拟化技术、网络知识模型和分布式存储进行了重点讲解,对读者学习、理解OpenStack很有帮助,同时为下一篇的学习做好铺垫。
第2篇是安装配置篇,包括11个章节,详细讲述了如何安装配置OpenStack项目中的各服务组件。该篇承上启下,既是对原理篇所述原理知识的落地,又是对管理篇操作由来的一个剖析。
第3篇是管理篇,包括8个章节,详细讲述了如何管理OpenStack环境,既包括管理主机类型、虚拟机实例这样的基础操作,又包括虚拟机实例热迁移、冷迁移、转移及OpenStack版本升级这样的高级操作,相信对读者完全理解和掌握OpenStack会有一个极大的促进。
读者对象
本书适合刚刚或者计划进入云计算领域的初级读者学习,也适合已经进入云计算领域并且有一定相关知识或认识的中级读者阅读。对于一些从事售前工作的读者,本书也非常适用。同时,非常欢迎一些云计算资深人士或行业专家阅读本书以提出宝贵意见。
感谢
感谢张鹏程,鹏程在工作方式方法、为人处世方面给了我很多影响,对我未来的职业生涯有极大的帮助。
感谢马筵峰,老马给予了我极大的鼓励和支持,使我始终存有对技术的兴趣,坚持前行。
感谢瑞飞的领导和兄弟们,包括杨剑锋书记、陆春阳副总经理、罗革新副总经理、刘哲生总监、丁闫总监、丁建新、张骁、曾国强、张树海、杨友红、侯明扬、金鹏飞、王志刚,还有一些没有提到的兄弟姐妹,你们在工作和生活上的帮助和指导让我受益良多,非常感谢!
感谢孙学瑛老师,孙老师认真的工作态度、专业的出版知识和热心的帮助,使得此书最终可以出版。
感谢周琦老师,周老师热心的帮助和专业的项目管理知识,对本书的写作和出版给予了巨大帮助。
声明
1.本书部分图片来自互联网,版权归原作者所有,引用的目的是使读者更好地理解此书内容,感谢原作者贡献。
2.作者水平有限,开源技术无限,如有错误,敬请广大读者斧正。
感悟
1.IT技术变化之快,摧枯拉朽。技术人得闲时,还是要多看看、多想想、多听听。
2.许上等愿,结中等缘,享下等福。与诸君共勉。
收起全部↑
卢万龙,现就职于联想集团,近十年来一直专注于虚拟化、云计算和基础设施架构方面,参与建设企业众多重要项目的可行性研究、设计、实施和运维等工作,学习和积累了丰富的技术和项目管理经验,对KVM虚拟化、OpenStack云计算、分布式文件系统和IBM PowerVM有深入研究。
周萌,2007年加入中油瑞飞,现任部门经理、技术架构师。拥有10多年行业从业经验,作为技术负责人参与了中石油多个统建项目的实施,对云计算有深入的理解,发表了多篇文章,研究领域包括分布式计算、项目管理和系统架构,积累了深厚的技术专业知识和丰富的管理经验。
第1篇 原理篇
第1章 云计算之OpenStack 2
1.1 什么是云 2
1.2 OpenStack发展历程 4
1.3 OpenStack概念设计 4
1.4 OpenStack服务组件 6
第2章 计算(Nova)服务介绍 8
2.1 架构设计 10
2.2 虚拟化技术介绍 10
2.2.1 KVM虚拟化技术 12
2.2.2 Xen虚拟化技术 22
2.3 Libvirt技术介绍 31
2.3.1 Libvirt API介绍 32
2.3.2 Libvirt网络架构 34
2.3.3 Libvirt存储架构 36
第3章 网络(Neutron)服务介绍 37
3.1 网络OSI 7层模型 38
3.2 网络介绍 43
3.3 网络架构 44
3.4 网络API简介 45
3.5 LBaaS和FWaaS 46
3.6 网络类型介绍 48
第4章 存储服务介绍 51
4.1 块存储(Cinder)服务介绍 53
4.2 对象存储(Swift)服务介绍 54
4.2.1 对象存储特点 55
4.2.2 对象存储组成 57
4.3 文件系统存储 62
4.4 Ceph简介 62
4.4.1 存储数据过程 64
4.4.2 可扩展性和高可用性 65
4.4.3 集群管理 68
第5章 计量(Ceilometer)服务介绍 72
5.1 计量服务组件组成 72
5.2 计量服务组件支持列表 73
第6章 身份认证(Keystone)服务介绍 75
第7章 镜像(Glance)服务介绍 78
第8章 仪表板(Horizon)服务介绍 80
第9章 编排(Heat)服务介绍 87
第2篇 安装配置篇
第10章 OpenStack安装配置准备 90
10.1 架构设计 90
10.2 基础环境准备 93
10.2.1 安全设置规则 95
10.2.2 主机节点网络设置 96
10.2.3 节点时钟同步 102
10.2.4 配置OpenStack安装源和运行环境 104
10.2.5 安装和配置SQL数据库 104
10.2.6 安装和配置NoSQL数据库 105
10.2.7 安装和配置消息队列 106
第11章 身份认证(Keystone)服务安装配置 108
11.1 安装和配置 108
11.2 创建service entity和API endpoint 112
11.2.1 准备 113
11.2.2 创建过程 113
11.3 创建项目、用户和角色 115
11.4 检查配置 118
11.5 定义OpenStack客户端环境变量脚本 119
11.5.1 创建环境变量脚本 120
11.5.2 验证 120
第12章 镜像(Glance)服务安装配置 122
12.1 安装和配置 122
12.1.1 准备 122
12.1.2 安装和配置Glance镜像服务组件 125
12.1.3 安装完成 127
12.2 验证 128
第13章 计算(Nova)服务安装配置 130
13.1 安装和配置(控制节点) 130
13.1.1 准备 130
13.1.2 安装和配置Nova计算服务组件 133
13.1.3 安装完成 136
13.2 安装和配置(计算节点) 136
13.2.1 安装和配置Nova计算服务组件 136
13.2.2 安装完成 139
13.3 验证 139
第14章 网络(Neutron)服务安装配置 141
14.1 安装和配置(控制节点) 141
14.1.1 准备 142
14.1.2 配置Neutron网络服务组件 144
14.1.3 配置metadata agent 156
14.1.4 配置计算服务组件 157
14.1.5 安装完成 157
14.2 安装和配置(计算节点) 158
14.2.1 网络服务组件安装和配置通用组件 158
14.2.2 配置网络核心组件 160
14.2.3 配置计算服务组件 162
14.2.4 安装完成 163
14.3 验证 163
第15章 仪表板(Horizon)服务安装配置 165
15.1 安装和配置 165
15.1.1 安装和配置Horizon仪表板服务组件 166
15.1.2 安装完成 168
15.2 验证 168
第16章 块存储(Cinder)服务安装配置 169
16.1 安装和配置(控制节点) 169
16.1.1 准备 170
16.1.2 安装和配置Cinder块存储服务组件 173
16.1.3 安装完成 175
16.2 安装和配置(存储节点) 176
16.2.1 准备 176
16.2.2 安装和配置Cinder块存储服务组件 177
16.2.3 安装完成 180
16.3 验证 180
第17章 对象存储(Swift)服务安装配置 181
17.1 安装和配置(控制节点) 181
17.1.1 准备 182
17.1.2 安装和配置Swift对象存储服务组件 184
17.2 安装和配置(存储节点) 186
17.2.1 准备 186
17.2.2 安装和配置Swift对象存储服务组件 188
17.3 创建和分发Ring 190
17.3.1 创建用户Ring 190
17.3.2 创建Container Ring 192
17.3.3 创建Object Ring 193
17.3.4 分发Ring配置文件 195
17.4 安装完成 195
17.5 验证 197
第18章 编排(Heat)服务安装配置 199
18.1 安装和配置 199
18.1.1 准备 199
18.1.2 安装和配置Heat编排服务组件 205
18.1.3 安装完成 208
18.2 验证 208
第19章 计量(Ceilometer)服务安装配置 209
19.1 安装和配置 209
19.1.1 准备 209
19.1.2 安装和配置Ceilometer计量服务组件 213
19.1.3 安装完成 215
19.2 启用Glance镜像服务计量 215
19.3 启用Nova计算服务计量 216
19.3.1 安装和配置agent 216
19.3.2 配置Nova计算服务使用Ceilometer计量服务 218
19.4 启用Cinder块存储服务计量 218
19.5 启用Swift对象存储服务计量 219
19.5.1 准备 219
19.5.2 配置Swift对象存储服务使用Ceilometer计量服务 220
19.6 验证 220
第20章 建立虚拟机实例测试 222
20.1 创建虚拟网络 222
20.1.1 架构一网络(Public Provider Network) 222
20.1.2 架构二网络(Private Project Network) 225
20.2 创建Key Pair 231
20.3 创建Security Group规则 232
20.4 创建虚拟机实例 232
20.4.1 创建虚拟机实例(Public Provider Network) 232
20.4.2 创建虚拟机实例(Private Project Network) 238
20.5 创建块存储 243
第3篇 管理篇
第21章 OpenStack项目管理 250
21.1 管理租户、用户和角色 250
21.1.1 命令行方式 251
21.1.2 图形界面方式 255
21.2 管理主机类型 257
21.2.1 命令行方式 257
21.2.2 图形界面方式 259
21.3 管理安全组 263
21.4 管理主机集合 265
21.5 资源使用率统计 267
21.5.1 命令行方式 267
21.5.2 图形界面方式 269
21.6 查看系统服务信息 270
第22章 仪表板使用 273
22.1 Logo和图形界面定制化 273
22.2 HTML标题、Logo链接和帮助定制化 275
第23章 管理镜像 276
23.1 命令行方式 276
23.2 图形界面方式 279
第24章 管理网络 282
24.1 命令行方式 282
24.2 图形界面方式 285
第25章 管理卷设备 287
25.1 命令行方式 287
25.2 图形界面方式 295
第26章 管理虚拟机实例 298
26.1 创建虚拟机实例 298
26.1.1 命令行方式 298
26.1.2 图形界面方式 302
26.2 操作虚拟机实例 303
26.2.1 命令行方式 303
26.2.2 图形界面方式 306
26.3 选择主机节点运行实例 307
26.4 计算节点配置SSH互信 308
26.5 实例热迁移 310
26.5.1 KVM 310
26.5.2 XenServer 317
26.6 实例冷迁移 318
26.7 实例转移 319
第27章 OpenStack版本升级 322
27.1 升级准备 322
27.2 版本升级 325
27.3 版本回退 329
第28章 故障排查 333
28.1 计算服务组件故障排查 333
28.2 块存储服务组件故障排查 335