本書(shū)深入淺出地介紹了YY游戲云平臺(tái)團(tuán)隊(duì)在云計(jì)算領(lǐng)域的心路歷程和實(shí)踐經(jīng)驗(yàn),不僅總結(jié)了多年來(lái)在OpenStack驅(qū)動(dòng)的Cloud 1.0上開(kāi)發(fā)和使用的經(jīng)驗(yàn)教訓(xùn),而且花大幅筆墨深入講解了自主研發(fā)的私有云平臺(tái)Cloud 2.0的設(shè)計(jì)和實(shí)現(xiàn)。本書(shū)內(nèi)容全面而詳盡,依次講解了Cloud 2.0的選型思路、基于VXLAN技術(shù)的VPC網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)和實(shí)現(xiàn)、業(yè)務(wù)層架構(gòu)設(shè)計(jì)和實(shí)現(xiàn)、基于libvirt的虛擬計(jì)算實(shí)踐、基于Ceph的虛擬存儲(chǔ)實(shí)踐、云數(shù)據(jù)源等產(chǎn)品的架構(gòu)選型及實(shí)現(xiàn)、容量管理的詳細(xì)思路,以及云平臺(tái)方方面面的測(cè)試,是云計(jì)算領(lǐng)域?qū)嵺`類(lèi)書(shū)籍中不可多得的一本好書(shū)。本書(shū)干貨眾多,不僅適合初入云計(jì)算領(lǐng)域的讀者閱讀,更適合開(kāi)發(fā)人員參考學(xué)習(xí)和實(shí)踐。本書(shū)各章均可獨(dú)立成冊(cè),讀者可以根據(jù)自己的需要來(lái)閱讀。
數(shù)年前既率先搭建私有云平臺(tái),多款上億知名游戲運(yùn)行其上
系統(tǒng)設(shè)計(jì)理念、核心技術(shù)方案,獻(xiàn)給開(kāi)發(fā)|運(yùn)維|架構(gòu)|選型……
容量管理|云數(shù)據(jù)源|Ceph虛擬存儲(chǔ)|libvirt的虛擬計(jì)算|VXLAN技術(shù)
如何上云|如何用云,超高復(fù)雜度下量體裁衣定制自有云平臺(tái)
前言
本書(shū)由YY游戲云平臺(tái)團(tuán)隊(duì)編寫(xiě)。YY游戲在平臺(tái)技術(shù)上保持開(kāi)放的心態(tài),勇于采用新興的技術(shù)來(lái)促進(jìn)業(yè)務(wù)發(fā)展、降低成本。從2013年起,YY大部分游戲都運(yùn)行在私有云平臺(tái)上。這個(gè)私有云平臺(tái)也經(jīng)歷了兩代的發(fā)展,從第一代基于OpenStack的私有云,到第二代完全自主實(shí)現(xiàn)的SDN和私有云,歷經(jīng)磨難,實(shí)現(xiàn)了質(zhì)的改進(jìn)。
在OpenStack如日中天時(shí)期,我們也選擇它來(lái)部署第一代私有云。但是很快發(fā)現(xiàn)OpenStack在實(shí)際運(yùn)行中存在諸多問(wèn)題,這些問(wèn)題表明OpenStack在沒(méi)有足夠的開(kāi)發(fā)、運(yùn)維力量的情況下,不適合大規(guī)模的生產(chǎn)應(yīng)用。當(dāng)然,正是在使用OpenStack的過(guò)程中,我們學(xué)習(xí)了它的一些設(shè)計(jì)思想,例如虛擬計(jì)算的調(diào)度、虛擬網(wǎng)絡(luò)的實(shí)現(xiàn)等,這些經(jīng)驗(yàn)為我們研發(fā)第二代云平臺(tái)做了有效鋪墊。
從2015年8月起到2016年6月止,歷經(jīng)將近一年的時(shí)間,我們自主研發(fā)和上線了第二代私有云平臺(tái)。第二代私有云平臺(tái)完全拋棄了OpenStack,它的體系架構(gòu)、業(yè)務(wù)組件、功能模塊全部由我們自己實(shí)現(xiàn),其中涉及對(duì)虛擬計(jì)算、虛擬存儲(chǔ)、虛擬網(wǎng)絡(luò)的深入分析和調(diào)研。尤其是虛擬網(wǎng)絡(luò),我們跟華為、華三、云杉等公司進(jìn)行了大量交流,最終確定了適合自己的SDN產(chǎn)品和方案。
在第一代云平臺(tái)向第二代云平臺(tái)轉(zhuǎn)型過(guò)程中,以及在第二代云平臺(tái)的研發(fā)、運(yùn)維中,團(tuán)隊(duì)進(jìn)行了大量實(shí)踐,并積累了許多寶貴經(jīng)驗(yàn)。團(tuán)隊(duì)成員深入理解云計(jì)算本質(zhì),取其精華為己所用,構(gòu)建了一個(gè)穩(wěn)固的私有云平臺(tái),并成功服務(wù)于頁(yè)游、端游、手游的運(yùn)營(yíng)。
今天,我們把建設(shè)私有云平臺(tái)的實(shí)戰(zhàn)經(jīng)驗(yàn)以寫(xiě)書(shū)的方式分享出來(lái)。閱讀完本書(shū)后,你會(huì)發(fā)現(xiàn)私有云并沒(méi)有那么復(fù)雜,也并非高不可攀。只要搞懂了它的體系架構(gòu),以及每個(gè)子系統(tǒng)(計(jì)算、存儲(chǔ)、網(wǎng)絡(luò))的實(shí)現(xiàn)方式,再結(jié)合企業(yè)自身的業(yè)務(wù)特點(diǎn),自主構(gòu)建一個(gè)私有云平臺(tái)不是很難的事。
本書(shū)對(duì)于對(duì)云計(jì)算感興趣、有計(jì)劃建設(shè)私有云的用戶,格外具有參考、借鑒意義。
本書(shū)內(nèi)容由YY游戲云平臺(tái)組的開(kāi)發(fā)、運(yùn)維、QA工程師共同完成,包括:
?風(fēng)河,編寫(xiě)了第1、2章背景介紹部分;
?張春,編寫(xiě)了第3章虛擬網(wǎng)絡(luò)部分;
?何招武、張興平,編寫(xiě)了第4章云平臺(tái)業(yè)務(wù)部分;
?朱輝,編寫(xiě)了第5章虛擬計(jì)算部分;
?戚昱,編寫(xiě)了第6章虛擬存儲(chǔ)部分;
?張博,編寫(xiě)了第7章云數(shù)據(jù)庫(kù)部分;
?劉亞丹,編寫(xiě)了第8章云平臺(tái)容量管理部分;
?黃書(shū)明、廖志委、任方超,編寫(xiě)了第9章測(cè)試與安全部分。
上述同學(xué)在各自領(lǐng)域都是資深工程師,感謝他們?cè)诠ぷ髦獾男燎诟冻觯庞辛吮緯?shū)。同時(shí)感謝QA組的馬飛同學(xué)在本書(shū)編寫(xiě)過(guò)程中的項(xiàng)目管理工作。也感謝電子工業(yè)出版社的編輯們對(duì)本書(shū)的排版、校對(duì)工作。
如果讀者對(duì)書(shū)中內(nèi)容有疑問(wèn)或建議,請(qǐng)發(fā)郵件反饋給我們:g-yygame-booking@yy.com。
YY游戲是歡聚時(shí)代旗下的游戲運(yùn)營(yíng)品牌,YY游戲云平臺(tái)組致力于構(gòu)建高性能、高可用的私有云平臺(tái),以服務(wù)游戲業(yè)務(wù)。云平臺(tái)組由一支高效的開(kāi)發(fā)、運(yùn)維、QA團(tuán)隊(duì)組成,在虛擬計(jì)算、SDN、分布式存儲(chǔ)方面,有豐富的經(jīng)驗(yàn)和獨(dú)到的理解,成功地支撐起多款月流水過(guò)億的游戲運(yùn)營(yíng)。
目錄
第1章 緒論1
1.1 云計(jì)算發(fā)展趨勢(shì)1
1.2 YY游戲使用云平臺(tái)的經(jīng)驗(yàn)3
1.3 云計(jì)算隨想5
第2章 選型思路8
2.1 為什么放棄OpenStack8
2.2 Cloud 2.0研發(fā)思路9
2.3 發(fā)展規(guī)劃:基于云的VDC實(shí)現(xiàn)14
第3章 Cloud 2.0虛擬網(wǎng)絡(luò)實(shí)現(xiàn)17
3.1 Cloud 1.0的實(shí)踐經(jīng)驗(yàn)17
3.1.1 Neutron與企業(yè)私有云18
3.1.2 問(wèn)題與不足19
3.1.3 擁抱SDN22
3.2 虛擬網(wǎng)絡(luò)架構(gòu)26
3.2.1 Overlay網(wǎng)絡(luò)模型26
3.2.2 虛擬網(wǎng)絡(luò)架構(gòu)33
3.2.3 網(wǎng)絡(luò)設(shè)備技術(shù)要點(diǎn)37
3.3 虛擬網(wǎng)絡(luò)實(shí)現(xiàn)41
3.3.1 Underlay網(wǎng)絡(luò)41
3.3.2 Overlay網(wǎng)絡(luò)VXLAN VPC44
3.3.3 SDN的核心控制器實(shí)現(xiàn)49
3.3.4 服務(wù)如臂使指北向接口API54
3.3.5 網(wǎng)絡(luò)觸手可及南向控制協(xié)議57
3.3.6 SDN與NFV61
3.4 虛擬網(wǎng)絡(luò)業(yè)務(wù)62
3.4.1 Underlay網(wǎng)絡(luò)配置流程62
3.4.2 云主機(jī)創(chuàng)建流程65
3.4.3 云主機(jī)遷移流程66
第4章 云平臺(tái)業(yè)務(wù)67
4.1 業(yè)務(wù)組件67
4.2 業(yè)務(wù)架構(gòu)69
4.3 安全子系統(tǒng)70
4.3.1 用戶安全70
4.3.2 組件安全72
4.3.3 技術(shù)實(shí)現(xiàn)75
4.4 調(diào)度子系統(tǒng)90
4.4.1 流程引擎設(shè)計(jì)90
4.4.2 統(tǒng)一實(shí)現(xiàn)審計(jì)94
4.4.3 樂(lè)觀鎖加記錄鎖的并發(fā)控制94
4.4.4 異步線程池管理96
4.4.5 基于Redis實(shí)現(xiàn)的分布式鎖97
4.4.6 基于Hibernate與Spring JDBC的靈活持久層100
4.5 云控制臺(tái)101
4.5.1 為什么選擇AngularJS102
4.5.2 開(kāi)發(fā)心得總結(jié)105
第 5章 虛擬計(jì)算116
5.1 虛擬化概述116
5.2 KVM/QEMU/libvirt淺析117
5.2.1 KVM簡(jiǎn)介117
5.2.2 KVM與QEMU118
5.2.3 libvirt介紹119
5.3 KVM虛擬化環(huán)境安裝120
5.3.1 APT源安裝120
5.3.2 源碼編譯安裝120
5.4 使用qemu-img管理虛擬機(jī)磁盤(pán)鏡像121
5.4.1 qemu-img基本命令122
5.4.2 在宿主機(jī)上如何掛載鏡像文件124
5.5 使用libvirt管理KVM虛擬機(jī)124
5.5.1 libvirt Java API的使用124
5.5.2 虛擬機(jī)XML配置文件詳解133
5.5.3 virsh常用命令141
5.6 實(shí)戰(zhàn)系列142
5.6.1 使用Cloudinit實(shí)現(xiàn)虛擬機(jī)啟動(dòng)初始化142
5.6.2 在線更改虛擬機(jī)內(nèi)存大小146
5.6.3 熱添加虛擬機(jī)CPU147
5.6.4 如何限制虛擬機(jī)磁盤(pán)I/O148
5.6.5 在虛擬機(jī)內(nèi)部如何正確自動(dòng)掛載磁盤(pán)148
5.6.6 虛擬機(jī)如何使用Ceph塊設(shè)備149
5.6.7 libvirt hook機(jī)制151
5.6.8 如何支持使用virsh控制臺(tái)登錄虛擬機(jī)152
5.6.9 虛擬機(jī)如何通過(guò)OpenvSwitch接入網(wǎng)絡(luò)153
5.6.10 宿主機(jī)如何通過(guò)qemu-guest-agent與虛擬機(jī)通信154
5.6.11 虛擬機(jī)的遷移156
第6章 虛擬存儲(chǔ)161
6.1 概念和術(shù)語(yǔ)162
6.2 硬件配置162
6.2.1 Ceph網(wǎng)絡(luò)配置163
6.2.2 服務(wù)器配置165
6.3 軟件配置166
6.4 部署168
6.4.1 設(shè)置副本分布到不同的機(jī)架上168
6.4.2 創(chuàng)建Pool172
6.4.3 測(cè)試PG副本的機(jī)架分布性173
6.5 監(jiān)控173
6.5.1 監(jiān)控層次173
6.5.2 與Zabbix監(jiān)控系統(tǒng)集成174
6.5.3 告警條件174
6.5.4 監(jiān)控面板174
6.6 性能測(cè)試和調(diào)優(yōu)176
6.6.1 塊設(shè)備性能測(cè)試176
6.6.2 調(diào)優(yōu)177
6.7 維護(hù)操作183
6.7.1 使用systemctl管理Ceph進(jìn)程183
6.7.2 OSD機(jī)器重啟184
6.7.3 擴(kuò)容184
6.7.4 升級(jí)Ceph軟件版本184
6.8 故障定位和處理185
6.8.1 查看集群狀態(tài)185
6.8.2 日志186
6.8.3 MON187
6.8.4 OSD188
6.8.5 PG192
6.8.6 實(shí)際運(yùn)維中的問(wèn)題196
第7章 云數(shù)據(jù)庫(kù)199
7.1 云數(shù)據(jù)庫(kù)服務(wù)功能介紹199
7.2 1.0版本三層架構(gòu)199
7.2.1 Manager開(kāi)放API的認(rèn)證方式201
7.2.2 Manager節(jié)點(diǎn)的調(diào)度策略202
7.2.3 Manager節(jié)點(diǎn)的配額管理203
7.2.4 Backend節(jié)點(diǎn)的資源203
7.3 云數(shù)據(jù)庫(kù)2.0版本架構(gòu)演化及改進(jìn)214
7.3.1 云數(shù)據(jù)庫(kù)1.0版本的問(wèn)題與不足215
7.3.2 云數(shù)據(jù)庫(kù)2.0版本的改進(jìn)215
7.3.3 CloudMySQL 2.0 Agent的設(shè)計(jì)模型217
7.3.4 CloudMySQL 2.0 KVM配置221
7.4 小結(jié)225
第8章 云平臺(tái)容量管理226
8.1 容量管理概述226
8.2 容量管理真實(shí)案例227
8.3 容量管理特點(diǎn)和成熟度229
8.3.1 ITIL容量管理特點(diǎn)229
8.3.2 云平臺(tái)容量管理特點(diǎn)229
8.3.3 云平臺(tái)容量管理成熟度模型230
8.4 容量管理組件231
8.5 容量管理總體模型231
8.5.1 容量與其他系統(tǒng)的關(guān)系233
8.5.2 網(wǎng)絡(luò)模型234
8.5.3 計(jì)算模型236
8.5.4 存儲(chǔ)模型237
8.5.5 云MySQL模型239
8.6 容量預(yù)測(cè)241
8.7 容量管理可視化242
8.8 容量管理之資源采購(gòu)243
8.9 小結(jié)243
第9章 云平臺(tái)測(cè)試244
9.1 云平臺(tái)測(cè)試策略244
9.1.1 云平臺(tái)項(xiàng)目測(cè)試特性244
9.1.2 測(cè)試方法與策略245
9.1.3 測(cè)試環(huán)境248
9.2 云計(jì)算測(cè)試249
9.2.1 功能測(cè)試249
9.2.2 自動(dòng)化測(cè)試252
9.3 云數(shù)據(jù)庫(kù)測(cè)試257
9.3.1 云MySQL測(cè)試257
9.3.2 云Redis測(cè)試260
9.4 云網(wǎng)絡(luò)測(cè)試262
9.4.1 虛擬網(wǎng)絡(luò)測(cè)試262
9.4.2 云平臺(tái)業(yè)務(wù)的網(wǎng)絡(luò)功能測(cè)試273
9.4.3 遷移后的網(wǎng)絡(luò)測(cè)試277
9.5 云平臺(tái)安全測(cè)試280
9.5.1 API安全測(cè)試280
9.5.2 云Redis安全測(cè)試283
附錄A 縮略詞表286