本书深入浅出地介绍了YY游戏云平台团队在云计算领域的心路历程和实践经验,不仅总结了多年来在OpenStack驱动的Cloud 1.0上开发和使用的经验教训,而且花大幅笔墨深入讲解了自主研发的私有云平台Cloud 2.0的设计和实现。本书内容全面而详尽,依次讲解了Cloud 2.0的选型思路、基于VXLAN技术的VPC网络架构设计和实现、业务层架构设计和实现、基于libvirt的虚拟计算实践、基于Ceph的虚拟存储实践、云数据源等产品的架构选型及实现、容量管理的详细思路,以及云平台方方面面的测试,是云计算领域实践类书籍中不可多得的一本好书。本书干货众多,不仅适合初入云计算领域的读者阅读,更适合开发人员参考学习和实践。本书各章均可独立成册,读者可以根据自己的需要来阅读。
数年前既率先搭建私有云平台,多款上亿知名游戏运行其上
系统设计理念、核心技术方案,献给开发|运维|架构|选型……
容量管理|云数据源|Ceph虚拟存储|libvirt的虚拟计算|VXLAN技术
如何上云|如何用云,超高复杂度下量体裁衣定制自有云平台
前言
本书由YY游戏云平台团队编写。YY游戏在平台技术上保持开放的心态,勇于采用新兴的技术来促进业务发展、降低成本。从2013年起,YY大部分游戏都运行在私有云平台上。这个私有云平台也经历了两代的发展,从第一代基于OpenStack的私有云,到第二代完全自主实现的SDN和私有云,历经磨难,实现了质的改进。
在OpenStack如日中天时期,我们也选择它来部署第一代私有云。但是很快发现OpenStack在实际运行中存在诸多问题,这些问题表明OpenStack在没有足够的开发、运维力量的情况下,不适合大规模的生产应用。当然,正是在使用OpenStack的过程中,我们学习了它的一些设计思想,例如虚拟计算的调度、虚拟网络的实现等,这些经验为我们研发第二代云平台做了有效铺垫。
从2015年8月起到2016年6月止,历经将近一年的时间,我们自主研发和上线了第二代私有云平台。第二代私有云平台完全抛弃了OpenStack,它的体系架构、业务组件、功能模块全部由我们自己实现,其中涉及对虚拟计算、虚拟存储、虚拟网络的深入分析和调研。尤其是虚拟网络,我们跟华为、华三、云杉等公司进行了大量交流,最终确定了适合自己的SDN产品和方案。
在第一代云平台向第二代云平台转型过程中,以及在第二代云平台的研发、运维中,团队进行了大量实践,并积累了许多宝贵经验。团队成员深入理解云计算本质,取其精华为己所用,构建了一个稳固的私有云平台,并成功服务于页游、端游、手游的运营。
今天,我们把建设私有云平台的实战经验以写书的方式分享出来。阅读完本书后,你会发现私有云并没有那么复杂,也并非高不可攀。只要搞懂了它的体系架构,以及每个子系统(计算、存储、网络)的实现方式,再结合企业自身的业务特点,自主构建一个私有云平台不是很难的事。
本书对于对云计算感兴趣、有计划建设私有云的用户,格外具有参考、借鉴意义。
本书内容由YY游戏云平台组的开发、运维、QA工程师共同完成,包括:
?风河,编写了第1、2章背景介绍部分;
?张春,编写了第3章虚拟网络部分;
?何招武、张兴平,编写了第4章云平台业务部分;
?朱辉,编写了第5章虚拟计算部分;
?戚昱,编写了第6章虚拟存储部分;
?张博,编写了第7章云数据库部分;
?刘亚丹,编写了第8章云平台容量管理部分;
?黄书明、廖志委、任方超,编写了第9章测试与安全部分。
上述同学在各自领域都是资深工程师,感谢他们在工作之外的辛勤付出,才有了本书。同时感谢QA组的马飞同学在本书编写过程中的项目管理工作。也感谢电子工业出版社的编辑们对本书的排版、校对工作。
如果读者对书中内容有疑问或建议,请发邮件反馈给我们:g-yygame-booking@yy.com。
YY游戏是欢聚时代旗下的游戏运营品牌,YY游戏云平台组致力于构建高性能、高可用的私有云平台,以服务游戏业务。云平台组由一支高效的开发、运维、QA团队组成,在虚拟计算、SDN、分布式存储方面,有丰富的经验和独到的理解,成功地支撑起多款月流水过亿的游戏运营。
目录
第1章 绪论1
1.1 云计算发展趋势1
1.2 YY游戏使用云平台的经验3
1.3 云计算随想5
第2章 选型思路8
2.1 为什么放弃OpenStack8
2.2 Cloud 2.0研发思路9
2.3 发展规划:基于云的VDC实现14
第3章 Cloud 2.0虚拟网络实现17
3.1 Cloud 1.0的实践经验17
3.1.1 Neutron与企业私有云18
3.1.2 问题与不足19
3.1.3 拥抱SDN22
3.2 虚拟网络架构26
3.2.1 Overlay网络模型26
3.2.2 虚拟网络架构33
3.2.3 网络设备技术要点37
3.3 虚拟网络实现41
3.3.1 Underlay网络41
3.3.2 Overlay网络VXLAN VPC44
3.3.3 SDN的核心控制器实现49
3.3.4 服务如臂使指北向接口API54
3.3.5 网络触手可及南向控制协议57
3.3.6 SDN与NFV61
3.4 虚拟网络业务62
3.4.1 Underlay网络配置流程62
3.4.2 云主机创建流程65
3.4.3 云主机迁移流程66
第4章 云平台业务67
4.1 业务组件67
4.2 业务架构69
4.3 安全子系统70
4.3.1 用户安全70
4.3.2 组件安全72
4.3.3 技术实现75
4.4 调度子系统90
4.4.1 流程引擎设计90
4.4.2 统一实现审计94
4.4.3 乐观锁加记录锁的并发控制94
4.4.4 异步线程池管理96
4.4.5 基于Redis实现的分布式锁97
4.4.6 基于Hibernate与Spring JDBC的灵活持久层100
4.5 云控制台101
4.5.1 为什么选择AngularJS102
4.5.2 开发心得总结105
第 5章 虚拟计算116
5.1 虚拟化概述116
5.2 KVM/QEMU/libvirt浅析117
5.2.1 KVM简介117
5.2.2 KVM与QEMU118
5.2.3 libvirt介绍119
5.3 KVM虚拟化环境安装120
5.3.1 APT源安装120
5.3.2 源码编译安装120
5.4 使用qemu-img管理虚拟机磁盘镜像121
5.4.1 qemu-img基本命令122
5.4.2 在宿主机上如何挂载镜像文件124
5.5 使用libvirt管理KVM虚拟机124
5.5.1 libvirt Java API的使用124
5.5.2 虚拟机XML配置文件详解133
5.5.3 virsh常用命令141
5.6 实战系列142
5.6.1 使用Cloudinit实现虚拟机启动初始化142
5.6.2 在线更改虚拟机内存大小146
5.6.3 热添加虚拟机CPU147
5.6.4 如何限制虚拟机磁盘I/O148
5.6.5 在虚拟机内部如何正确自动挂载磁盘148
5.6.6 虚拟机如何使用Ceph块设备149
5.6.7 libvirt hook机制151
5.6.8 如何支持使用virsh控制台登录虚拟机152
5.6.9 虚拟机如何通过OpenvSwitch接入网络153
5.6.10 宿主机如何通过qemu-guest-agent与虚拟机通信154
5.6.11 虚拟机的迁移156
第6章 虚拟存储161
6.1 概念和术语162
6.2 硬件配置162
6.2.1 Ceph网络配置163
6.2.2 服务器配置165
6.3 软件配置166
6.4 部署168
6.4.1 设置副本分布到不同的机架上168
6.4.2 创建Pool172
6.4.3 测试PG副本的机架分布性173
6.5 监控173
6.5.1 监控层次173
6.5.2 与Zabbix监控系统集成174
6.5.3 告警条件174
6.5.4 监控面板174
6.6 性能测试和调优176
6.6.1 块设备性能测试176
6.6.2 调优177
6.7 维护操作183
6.7.1 使用systemctl管理Ceph进程183
6.7.2 OSD机器重启184
6.7.3 扩容184
6.7.4 升级Ceph软件版本184
6.8 故障定位和处理185
6.8.1 查看集群状态185
6.8.2 日志186
6.8.3 MON187
6.8.4 OSD188
6.8.5 PG192
6.8.6 实际运维中的问题196
第7章 云数据库199
7.1 云数据库服务功能介绍199
7.2 1.0版本三层架构199
7.2.1 Manager开放API的认证方式201
7.2.2 Manager节点的调度策略202
7.2.3 Manager节点的配额管理203
7.2.4 Backend节点的资源203
7.3 云数据库2.0版本架构演化及改进214
7.3.1 云数据库1.0版本的问题与不足215
7.3.2 云数据库2.0版本的改进215
7.3.3 CloudMySQL 2.0 Agent的设计模型217
7.3.4 CloudMySQL 2.0 KVM配置221
7.4 小结225
第8章 云平台容量管理226
8.1 容量管理概述226
8.2 容量管理真实案例227
8.3 容量管理特点和成熟度229
8.3.1 ITIL容量管理特点229
8.3.2 云平台容量管理特点229
8.3.3 云平台容量管理成熟度模型230
8.4 容量管理组件231
8.5 容量管理总体模型231
8.5.1 容量与其他系统的关系233
8.5.2 网络模型234
8.5.3 计算模型236
8.5.4 存储模型237
8.5.5 云MySQL模型239
8.6 容量预测241
8.7 容量管理可视化242
8.8 容量管理之资源采购243
8.9 小结243
第9章 云平台测试244
9.1 云平台测试策略244
9.1.1 云平台项目测试特性244
9.1.2 测试方法与策略245
9.1.3 测试环境248
9.2 云计算测试249
9.2.1 功能测试249
9.2.2 自动化测试252
9.3 云数据库测试257
9.3.1 云MySQL测试257
9.3.2 云Redis测试260
9.4 云网络测试262
9.4.1 虚拟网络测试262
9.4.2 云平台业务的网络功能测试273
9.4.3 迁移后的网络测试277
9.5 云平台安全测试280
9.5.1 API安全测试280
9.5.2 云Redis安全测试283
附录A 缩略词表286