欢迎光临
免费的PDF电子书下载网站

开源云计算平台CloudStack实战 PDF下载

编辑推荐

CloudStack是Apache旗下开源的云计算基础设施即服务(IaaS)框架,具有高可用性和扩展性等特点。CloudStack支持管理大部分主流的hypervisors,如KVM、XenServer、VMware、Oracle VM、Xen等。除此以外,CloudStack还是一个开源的云计算解决方案,可以加速高伸缩性的公有云和私有云基础设施层的部署、管理和配置,支持管理者快速方便地通过现存基础架构创建云服务。

在众多的开源的云计算IaaS框架中,CloudStack的成熟度相对较高,拥有许多成功的商业部署案例。但是,CloudStack相关的中文资料严重欠缺,目前市面上介绍CloudStack的书籍只有三本,一本中文、一本英文、一本日文。基于这一现状,市场上迫切需要CloudStack分析、应用和案例讲解方面的实用图书,本书就是为对CloudStack入门、应用与实践应用感兴趣的读者准备的,适合于以前没有接触过CloudStack,或者没有了解过CloudStack并希望能够深入掌握的读者,适合CloudStack应用开发人员和系统管理人员学习使用。 ;

内容简介

CloudStack是 Apache旗下开源的云计算基础设施即服务(IaaS)框架,具有高可用性和扩展性等特点。CloudStack支持管理大部分主流的 hypervisors,如 KVM、XenServer、VMware、 Oracle VM、Xen等。除此以外,CloudStack还是一个开源的云计算解决方案,可以加速高伸缩性的公有云和私有云基础设施层的部署、管理和配置,支持管理者快速方便地通过现存基础架构创建云服务。
在众多的开源的云计算 IaaS框架中,CloudStack的成熟度相对较高,拥有许多成功的商业部署案例。但是,CloudStack相关的中文资料严重欠缺,目前市面上介绍 CloudStack的书籍只有三本,一本中文、一本英文、一本日文。基于这一现状,市场上迫切需要 CloudStack分析、应用和案例讲解方面的实用图书,本书就是为对 CloudStack入门、应用与实践应用感兴趣的读者准备的,适合于以前没有接触过 CloudStack,或者没有了解过 CloudStack并希望能够深入掌握的读者,适合 CloudStack应用开发人员和系统管理人员学习使用。

作者简介

暂无

开源云计算平台CloudStack实战 PDF下载

目录


 
目 ; 录


第一篇 ; CloudStack基础篇
第1章 ; CloudStack简介 3
1.1 ; 云计算定义 3
1.2 ; 云服务基本概念 5
1.2.1 ; 云服务的基本分类 5
1.2.2 ; 云服务的服务模型 6
1.3 ; IaaS 的基本架构 8
1.3.1 ; 基础设施层 8
1.3.2 ; 管理层 9
1.4 ; CloudStack简介 10
1.4.1 ; CloudStack的发展历史 10
1.4.2 ; CloudStack整体架构 11
1.5 ; 主流开源云平台介绍 15
1.5.1 ; OpenStack 15
1.5.2 ; Eucalyptus 16
1.5.3 ; OpenNebula 17
1.5.4 ; 各个开源云平台的综合比较 18
1.6 ; 本章小结 19
第2章 ; CloudStack的基本概念 20
2.1 ; CloudStack基础设施概念 20
2.1.1 ; 地区(Region) 20
2.1.2 ; 区域(Zone) 21
2.1.3 ; 提供点(Pod) 22
2.1.4 ; 集群(Cluster) 23
2.1.5 ; 主机(Host) 23
2.1.6 ; 主存储(Primary Storage) 24
2.1.7 ; 二级存储(Secondary Storage) 24
2.1.8 ; 物理网络 25
2.2 ; 账户 25
2.2.1 ; 账户、用户和域 25
2.2.2 ; 使用LDAP服务器进行用户身份验证 26
2.3 ; 用户服务概述 26
2.4 ; 本章小结 27
第3章 ; CloudStack的安装与配置 28
3.1 ; CloudStack安装环境 28
3.2 ; 配置操作系统源 29
3.3 ; 配置CloudStack源 31
3.4 ; 安装管理节点 32
3.4.1 ; 设置主机名称 32
3.4.2 ; 安装管理节点 32
3.4.3 ; 安装配置数据库 33
3.4.4 ; 修改Linux安全设置 33
3.4.5 ; 初始化CloudStack数据库 34
3.4.6 ; 安装网络存储 34
3.4.7 ; 导入系统虚拟机模板 36
3.4.8 ; 启动CloudStack服务 36
3.5 ; 安装Agent节点 37
3.5.1 ; 设置主机名称 37
3.5.2 ; 安装Agent节点 37
3.5.3 ; 配置并启动libvirt 38
3.5.4 ; 修改Linux安全设置 38
3.5.5 ; 初始化Agent 39
3.6 ; 云平台配置 39
3.6.1 ; 访问CloudStack用户界面 39
3.6.2 ; 添加区域 40
3.6.3 ; 添加提供点 41
3.6.4 ; 添加来宾网络 41
3.6.5 ; 添加集群 41
3.6.6 ; 添加主机 42
3.6.7 ; 添加主存储 42
3.6.8 ; 添加二级存储 43
3.6.9 ; 启动区域 43
3.7 ; 上传镜像 44
3.7.1 ; 修改全局配置项 44
3.7.2 ; 注册ISO 44
3.8 ; 添加实例 46
3.8.1 ; 添加实例设置 46
3.8.2 ; 启动VM 47
3.8.3 ; 安装VM操作系统 47
3.8.4 ; 查看虚拟机 48
3.9 ; 本章小结 48

第二篇 ; CloudStack分析篇
第4章 ; CloudStack架构分析 51
4.1 ; CloudStack的功能及特点 51
4.2 ; CloudStack的主要组成部分 54
4.3 ; CloudStack网络通信架构分析 61
4.4 ; CloudStack软件架构分析 64
4.5 ; 本章小结 66
第5章 ; CloudStack网络功能分析 67
5.1 ; 区域类型 67
5.2 ; 物理网络 69
5.2.1 ; 网络流量分类 69
5.2.2 ; 网络标签 70
5.2.3 ; 基础区域 70
5.2.4 ; 高级区域 73
5.3 ; 安全组 76
5.4 ; 虚拟路由器 79
5.5 ; 虚拟专用网络 81
5.6 ; 总结 83
第6章 ; CloudStack存储功能分析 84
6.1 ; 主存储 84
6.1.1 ; 系统需求和配置 84
6.1.2 ; 添加一个主存储 85
6.1.3 ; 存储标签 87
6.2 ; 二级存储 87
6.2.1 ; 添加二级存储 88
6.2.2 ; 改变二级存储IP地址 89
6.2.3 ; 更改二级存储 90
6.3  磁盘卷 90
6.3.1  创建一个新的磁盘卷 90
6.3.2  将一个磁盘卷关联到一个来宾虚拟机上 91
6.3.3  从虚拟机实例中解除磁盘卷关联 92
6.3.4  删除磁盘卷 93
6.4  快照 94
6.4.1  创建快照 94
6.4.2  自动创建快照 95
6.4.3  通过快照创建磁盘卷 96
6.4.4  通过快照创建模板 97
6.4.5  虚拟机存储迁移 98
6.5  二级存储虚拟机 99
6.5.1  二级存储虚拟机的创建 99
6.5.2  启动和配置二级存储虚拟机 100
6.5.3  二级存储与CloudStack通信 100
6.5.4  二级存储虚拟机管理二级存储 100
6.6  总结 101
第7章  CloudStack虚拟机管理功能分析 102
7.1  虚拟机简介 102
7.1.1  关于使用虚拟机 102
7.1.2  虚拟机的最佳实践 103
7.1.3  虚拟机的生命周期 104
7.1.4  创建虚拟机 104
7.1.5  访问虚拟机 105
7.1.6  停止和启动虚拟机 106
7.1.7  分配虚拟机到主机上 106
7.1.8  虚拟机快照 108
7.1.9  改变虚拟机的名称、操作系统和小组 109
7.1.10  给来宾虚拟机的内部名称附加一个显示名称 110
7.1.11  更改虚拟机的服务方案 111
7.1.12  重启时重置虚拟机root卷 112
7.1.13  主机之间的虚拟机迁移(手动实时迁移) 113
7.1.14  删除虚拟机 113
7.1.15  与ISO工作 113
7.2  虚拟机服务方案介绍 116
7.2.1  计算提供 116
7.2.2  磁盘提供 118
7.2.3  系统服务提供 119
7.3  CloudStack不同的虚拟机管理程序 120
7.3.1  Citrix XenServer 120
7.3.2  Oracle虚拟机 121
7.3.3  红帽企业Linux(KVM)虚拟机 121
7.3.4  VMware vSphere 122
7.4  系统虚拟机 123
7.4.1  系统虚拟机模板 123
7.4.2  VMware虚拟机支持多个系统 124
7.4.3  控制台代理 124
7.4.4   虚拟路由 124
7.4.5  二级存储虚拟机 125
7.5  本章小结 125
第8章  CloudStack编程接口功能分析 126
8.1  CloudStack编程环境搭建 126
8.1.1  CloudStack安装所需要的软件 126
8.1.2  CloudStack源代码下载 132
8.1.3  CloudStack的编译、部署、运行 133
8.2  CloudStack框架组件简介 134
8.2.1  CloudStack组件 134
8.2.2  如何声明一个CloudStack组件 135
8.2.3  Auto-wiring 135
8.2.4  CloudStack Spring组件的编码约定 136
8.2.5  组件生命周期 143
8.3  CloudStack API 144
8.3.1  准备工作 144
8.3.2  CloudStack API 角色 145
8.3.3  CloudStack API的构造形式 145
8.3.4  CloudStack API请求签名 146
8.3.5  CloudStack API响应 147
8.3.6  CloudStack API 异步命令 149
8.3.7  制作API请求 151
8.3.8  CloudStack API测试 158
8.4  本章小结 166
第9章  CloudStack UI主页面分析 167
9.1  CloudStack前端源码文件结构分析 167
9.1.1  源码文件结构 167
9.1.2  UI界面结构分析 168
9.1.3  数据获取分析 178
9.2  CloudStack的API与UI的调用 178
9.2.1  API调用 178
9.2.2  修改session的时限 180
9.2.3  单点登录集成 180
9.2.4  跨域请求伪造 181
9.3  CloudStack页面的自定义 182
9.3.1  header自定义 182
9.3.2  左侧边栏自定义 182
9.3.3  右侧展示区域自定义 183
9.4  本章小结 186
第10章  CloudStack高可用分析 187
10.1  关于高可用的介绍 187
10.2  部署高可用性的环境 187
10.2.1  CloudStack管理服务器高可用性 187
10.2.2  CloudStack冗余虚拟路由 189
10.2.3  CloudStack存储高可用 190
10.2.4  数据库的高可用 191
10.3  CloudStack高可用的过程分析 192
10.3.1  监测阶段 192
10.3.2  重启阶段 194
10.3.3  人为干预 198
10.4  结合代码分析 198
10.4.1  HighAvailabilityDaoImpl类 198
10.4.2  HighAvailabilityManagerExtImpl类 198
10.5  总结 202

第三篇  CloudStack 应用篇
第11章  CloudStack的一键安装 205
11.1  一键安装CloudStack的需求分析 205
11.1.1  一键安装CloudStack的功能性需求分析 205
11.1.2  一键安装CloudStack的非功能性需求分析 214
11.1.3  对CloudStack改进云桌面的需求分析 215
11.2  一键安装CloudStack的设计与实现 215
11.2.1  一键安装CloudStack的服务器部署要求 215
11.2.2  一键安装CloudStack的软件部署架构 216
11.2.3  一键安装CloudStack的脚本版 217
11.2.4  一键安装CloudStack的Web版 225
11.3  对CloudStack远程桌面的改进和实现 227
11.4  一键安装CloudStack脚本版的测试 228
11.5  一键安装CloudStack的Web版测试结果 229
11.6  本章小结 230

第12章  基于CloudStack的上机管理系统 231
12.1  上机管理系统功能 231
12.1.1  管理员 231
12.1.2  教师 235
12.1.3  学生 235
12.2  系统总体设计 236
12.3  上机管理系统详细设计与实现 238
12.3.1  系统的流程设计 238
12.3.2  管理资源模块的设计与实现 239
12.3.3  软件管理的设计与实现 242
12.3.4  预约资源模块的设计与实现 244
12.3.5  定时开关机模块的设计与实现 247
12.4  上机管理系统的运行 251
12.5  上机管理系统测试 255
12.5.1  系统的功能性测试 255
12.5.2  系统的非功能性测试 258
12.5.3  系统的评价 258
12.6  本章小结 258
第13章  CloudStack手机端管理App 259
13.1  应用背景介绍 259
13.2  需求分析与总体设计 260
13.2.1  系统功能分析 260
13.2.2  系统整体功能分析 260
13.2.3  系统边界分析 261
13.2.4  详细用例需求分析 262
13.3  Android技术介绍 267
13.4  详细设计与实现 267
13.4.1  类图 267
13.4.2  序列图 269
13.4.3  CloudStack环境 270
13.4.4  API测试 270
13.4.5  虚拟机状态图 271
13.4.6  系统功能测试 272
13.5  本章小结 279
第14章  基于CloudStack的运维管理协作平台 280
14.1  应用背景 280
14.2  需求分析 281
14.2.1  功能需求 281
14.2.2  非功能需求 283
14.3  核心业务处理流程 284
14.3.1  应用软件的安装 284
14.3.2  应用软件的更新 285
14.3.3  虚拟机脚本执行 286
14.4  总体设计 287
14.4.1  注册中心模块 288
14.4.2  数据加密/解密模块 291
14.4.3  RESTful服务模块 291
14.4.4  代理软件模块 292
14.4.5  软件传输模块 292
14.4.6  相关技术介绍 293
14.5  系统的实现 295
14.5.1  RESTful服务模块的实现 295
14.5.2  代理软件模块的实现 298
14.5.3  系统程序流程的实现 300
14.5.4  界面安装的实现 300
14.6  本章小结 302

媒体评论

评论

前沿

前  言

 

CloudStack是Apache旗下开源的云计算基础设施即服务(IaaS)框架,具有高可用性和扩展性等特点。CloudStack支持管理大部分主流的hypervisors,如KVM、XenServer、VMware、Oracle VM、Xen等。除此以外,CloudStack还是一个开源的云计算解决方案,可以加速高伸缩性的公有云和私有云基础设施层的部署、管理和配置,支持管理者快速方便地通过现存基础架构创建云服务。

在众多的开源的云计算IaaS框架中,CloudStack的成熟度相对较高,拥有许多成功的商业部署案例。但是,CloudStack相关的中文资料严重欠缺,目前市面上介绍CloudStack的书籍只有三本,一本中文、一本英文、一本日文 。基于这一现状,市场上迫切需要CloudStack分析、应用和案例讲解方面的实用图书,本书就是为对CloudStack入门、应用与实践应用感兴趣的读者准备的,适合于以前没有接触过CloudStack,或者没有了解过CloudStack并希望能够深入掌握的读者,适合CloudStack应用开发人员和系统管理人员学习使用。

本书内容安排

全书分为三篇,第一篇引导读者快速了解CloudStack并动手初步安装、配置与部署,并逐一说明CloudStack的主要功能,让读者对CloudStack有一个感性认识。第二篇讲解CloudStack的工作机制、代码结构和高级特性,并分析CloudStack整体架构与核心源代码,让读者从本质上明白CloudStack内部原理,掌握CloudStack的设计思想和高级应用。第三篇从应用的角度,结合4个案例介绍了CloudStack的配置、优化与二次开发,每个案例均从需求分析、系统规划、架构设计、系统设计、系统实现、系统运维等方面全方位介绍如何基于CloudStack构建一个完整的IaaS应用。通过本书的学习,读者可全面掌握CloudStack的安装、部署、应用、性能调优和二次开发,并可从CloudStack的代码中获取软件开发与架构设计的经验与灵感。 

本书特点

本书以符合初学者思维的方式,系统介绍了CloudStack的安装部署、主要功能、源码分析、架构设计、性能优化与二次开发,并结合作者实际参与过的项目,详细介绍了如何基于CloudStack构建云计算IaaS应用。

 

        快速上手:以最直接、最细致的方式指导读者快速掌握CloudStack的安装、部署与使用。

        深入学习:详细分析CloudStack的高级特性,掌握CloudStack的高级配置方法、性能调优策略和二次开发技巧。

       理解架构:从内部原理和架构分析入手,以代码情景分析为手段,使得读者深入理解CloudStack的架构和运行机理。

       实战引导:以实际项目为背景,介绍云计算IaaS项目的实施过程和注意事项,真正做到对CloudStack精通。

本书读者对象

本书适合CloudStack的初学者,欲深入了解CloudStack配置、部署、优化和二次开发的软件工程师,欲深入理解CloudStack源码架构、掌握采用CloudStack构建云计算IaaS应用的系统架构师和软件工程师,以及任何对云计算IaaS相关技术感兴趣的读者。

本书作者与致谢

参与本书编写的作者除了封面署名人员,还有王志泳、温艳琪、衣凡、王焱楠、张韶涵等人,在此表示感谢。此外,本书的编写得到了国家自然科学基金资助项目《公有云计算服务组合系统收益优化研究》(61202040)的支持,在这里表示感谢。最后,感谢清华大学出版社图格事业部的编辑们,他们的辛勤工作使本书尽早与读者见面。

 

 

 

 

 

 

编  者

2016年1月

 

 

免费在线读

第 4 章

? CloudStack架构分析 ?

 

 

 

 

 

本章将在第一篇的基础上,结合云计算技术本身的特点,从架构设计的角度上,对CloudStack进行详细分析介绍。主要包括以下内容:ClouStack功能及特点、CloudStack系统的主要组成部分、CloudStack网络通信架构分析,以及CloudStack软件架构分析。

4.1  CloudStack的功能及特点

作为一种云计算解决方案,如果想要提供服务,通常具有以下5个方面特点。

l        支持多租户。

l        能够按需提供自服务。

l        宽带网络的接入。

l        将所有物理资源池化。

l        能够进行弹性增减,自适用服务。

为满足以上目标,CloudStack能够提供基础架构及服务(IaaS)的服务模型,建成一个硬件设备及虚拟化管理的统一平台,将计算资源、存储设备、网络资源进行整合,形成一个资源池,通过管理平台进行管理,弹性增减硬件设备。为满足多租户的要求,CloudStack进行了功能上的设计和优化,设计了用户的分级权限管理机制,通过各种技术保证用户数据的安全,保护用户的隐私。用户可以直接以浏览器的形式登录系统,自由管理系统授权下的资源,从而实现自服务模式。在多租户模式下,需要提供各个用户的资源使用情况,便于计费,CloudStack通过多种手段记录用户使用的资源,并将其保存下来。整个CloudStack中用户及权限如图4.1所示。

 

图4.1  CloudStack平台基本概念

首先来看一下用户管理方面。多租户是云计算框架的一个基本特点,支持多租户是一个IaaS云管理平台应该具备的基本条件之一。从上图中可以看出,在整个系统中用户可分为三类:普通用户、用户组和DEV。

l        普通用户是指以个体形式使用系统服务的用户,如一般的个人开发者租用服务等。

l        用户组是指以公司或者组织的名义使用系统资源与服务的多个用户。

l        DEV则是一个开发模块,用于开发计费、监控和统计报表,定制图形界面的工作流等。

对于多租户同时存在的复杂情况,CloudStack需要通过一定的手段保证了资源使用的限制和通畅。限制是指对于用户,只能访问授权范围内的合法资源,不能访问其他的未授权的资源;而对于通畅,是指通过一些规则支持和兼容更多的用户需求和使用场景。

对于限制。因为云平台上的多租户可以开放给任意用户访问和使用,所以需要解决的问题就是如何保证用户数据的安全;其次要考虑某一用户申请的资源怎样才不会被其他用户占用,即保证资源使用的有序性。对于这两个需求,从技术角度考虑,就是指对网络访问方式的限制,以及对虚拟化资源和物理资源使用的隔离与限制。而对于网络访问的限制,可以通过网络架构的设计及虚拟防火墙和安全组来实现。这也是CloudStack的一大特色。如果需求更进一步,某一个用户需要独占物理资源,比如某几台配置不同的服务器和存储空间,甚至是一个或几个集群,这些对于CloudStack来说,也可以做到。通过采用标签的形式,在管理界面上将资源直接指定给某些用户或者用户组,就可以将用户和应用场景的需求分割开来。

那么对于同一个用户组内的多个用户的使用应该如何做到使用通畅呢?图4.2给出对应的解决方案示意。

 

图4.2  用户组内管理及组间共享

在CloudStack的设计中,用户组中可以设置管理员,进行一定权限的自治管理,这也是自服务的另一种体现。用户组可以平级创建扩展,也可以在用户组下建立子用户组。而资源在指定给用户组之后,用户组内的用户都可以共享这些资源。除此之外,CloudStack还有一种“项目”功能,通过创建一个项目,不同用户组之间可以共享一个资源集合。

再看资源管理方面。CloudStack的管理比较全面,而且兼容性非常强,可以管理多种Hypervisor虚拟化程序,包括XenServer、VSphere、KVM、OracleVM,甚至裸设备,如图4.3所示。凡是这些虚拟化程序支持的计算服务器,CloudStack也都可以正常支持。

 

图4.3  CloudStack支持的设备类型

CloudStack可以使用的存储类型也非常广泛。虚拟机所使用的主存储可以使用计算服务器的本地磁盘,也可以挂载iSCI、光纤、NFS。存放ISO镜像及模板文件的二级存储可以使用NFS,也可以使用OpenStack的Swift组件,如图4.4所示。

 

图4.4  CloudStack支持的存储类型

CloudStack在网络方面也拥有出色的设计。除了连接外界的各种网络连接方式之外,其自身也提供了多种网络服务,即使在不使用硬件的情况下,系统内部就可实现网络隔离、防火墙、负载均衡、VPN等功能,如图4.5所示。

 

图4.5  CloudStack支持的网络功能

CloudStack通过将包括计算资源、存储资源和网络资源在内的硬件设备统一管理、统一池化,最终抽象出了供上层平台使用的、硬件透明的服务。因此,最终用户只要在CloudStack的平台上直接申请和使用虚拟机就可以了,无须关注底层硬件设备是如何被设计和使用的,也不用关心自己使用的虚拟机到底在哪个计算服务器或哪个存储设备上。

4.2  CloudStack的主要组成部分

一个大型的云计算服务平台,必然包含许多重要的组成部分,了解这些部分之间的层次关系及协作模式,对于理解该云计算平台的架构具有极其重要的意义。为加深对系统的认识,本节将从部署架构的角度出发,详细介绍CloudStack系统中的主要组成部分。

从物理设备互相连接的角度看,CloudStack的结构其实并不复杂,可以简单地理解为:在管理方面,一个CloudStack管理节点或集群,管理多个可以提供虚拟化计算能力的服务器;在存储方面,服务器即可以使用内置磁盘或外接存储,如图4.6所示。

 

图4.6  CludStack基本抽象结构

在虚拟化领域,尤其是在计算服务器和存储方面,这样一个抽象的架构是非常常用的,也是非常易于理解的。

然而,图4.5虽然简单明了,但是对于一个极为复杂,需求多样的云计算平台来说显然是不够的。在云环境中,由于应用场景和需求的复杂性,一个云平台必须保证其结构设计具有很好的适应性、通用性、异构的兼容性和灵活的可扩展性。

图4.7所示为CloudStack的部署图,主要展示了系统中不同的部件及其之间的关系。

 

图4.7 CloudStack架构部署图

通过架构的部署图,可以很好地理解CloudStack各个部件之间的关联,其中的区域(Zone)、提供点(Pod)、集群(Cluster)等属于逻辑结构,既可以对照实际环境进行理解,也可以按照需求灵活配置。下面将对这些概念按照逐层递进的顺序进行详细的介绍。

1. 管理服务节点

管理服务节点(ManagementServer)是CloudStack云管理平台的核心部分,对应于抽象结构中的管理节点,整个IaaS平台的工作将统一汇总在服务管理节点中进行处理。管理节点的主要作用可以划分为两部分。

l        第一,响应操作命令:接收来自用户和管理员的命令,包括对硬件、虚拟机和网络的全面管理操作指令。然后,管理节点会将操作命令发送给相应的计算节点或系统虚拟机去执行。

l        第二,管理与监控系统:管理服务节点还会在MySQL数据库中记录整个CloudStack的所有信息,并监控计算节点、存储及虚拟机的状态,以及网络资源的使用情况,从而实时地管理整个系统各个部分的运行情况。

至于用户如何查看系统状态以及如何与管理节点进行交互,CloudStack采用的是浏览器管理界面。CloudStack采用Java实现,前端界面使用JavaScript编写,做成Web App的形式,然后通过Tomcat容器进行发布。在安装CloudStack管理程序时,会自动配置Tomcat的相关参数,这样就省去了读者手动配置和发布Web页面的相关操作了。在正确安装CloudStack之后,可以打开浏览器,访问CloudStack管理程序的页面,在Web图形化页面上进行单击和输入等管理操作。后台程序的逻辑和数据也通过Web界面展示给用户,使整个命令操作和信息获取过程简单友好。

根据之前的抽象结构和部署结构可以看出,CloudStack采用的是集中式管理结构,所有模块都被封装在管理节点的程序中,便于安装和管理,安装的时候只需要简单的几条命令即可完成,所以在节点上只需要分别安装管理服务程序、MySQL数据库和Usage服务程序(可选)即可。

在一个小规模的使用环境中,可以将以上所有的组件集中安装在一台物理服务器或虚拟机上。然而,在一个计划上线的生产环境中,如果将所有的组件安装在一台服务器上,将会有很大的负载压力。而我们知道,管理服务节点作为整个系统的管理中心,将会接收到不同种类的多种请求,包括用户门户请求、管理员门户请求以及各种API请求等。因此,可以设计在管理服务器模块前加入一个负载均衡模块,将不同的请求转发定位到不同的服务器上。这样就可以将管理模块分到不同的服务器上,从而达到降低压力的目的,如图4.8所示。

 

图4.8 部署多台管理服务器

在图4.8中,除了使用负载均衡器将各种请求负载到多台服务器之外,还要注意两点:第一,将MySQL数据库按照抽象结构中的分布,安装在独立的服务器中,并搭建主从方式的MySQL数据库,使得系统中存在多份数据的副本,保证数据的安全性;第二,如果需要安装计费模块Usage,则将其安装在独立的服务器上,其原因除了计费模块本身在逻辑上相对独立之外,还可以用来分担管理服务器的压力。

CloudStack在设计上还有一个优点,就是管理服务器本身并不记录系统本身数据信息,而是全部保存在MySQL数据库中。这样做的好处在于,当管理服务程序停止或所在的节点宕机,所有的计算节点、存储及网络功能会在维持现状的情况下正常运行,只是可能无法再接收新的请求,用户所使用的虚拟机仍然可以在计算服务器上保持正常的通信和运行。

然而,这仅仅是对于管理程序来说,如果宕机对象换成数据库,情况就另当别论了。MySQL数据库作为整个系统的存储中心,记录了整个云平台的全部数据,包括整个云平台的规划、物理设备、虚拟机、存储文件、IP使用信息等。对于可能的数据库崩溃,目前的解决方案是为此数据库搭建一个实时同步的从属数据库,使得系统的数据副本数量始终大于或等于2。在主数据库无法工作后,切换到从属数据库即可重新获取系统之前的数据信息。

2. 区域

区域(Zone)是CloudStack中最大的组织单元。一个区域通常代表一个独立的数据中心,虽然在一个数据中心也允许有多个区域。一个区域内的组件如图4.9所示。

 

图4.9  区域内部件结构

由图4.9可以看出,一个区域由提供点(Pod)、二级存储(Secondary Storage)、网络架构组成。在完成管理服务器的安装后,登录到CloudStack界面,第一步就是创建区域,从而完成在IaaS平台上的初步规划。在创建区域时,需要对区域内部件进行一系列的选择和配置,包括网络架构的选择、网络的各种规划与配置、添加计算服务与存储等步骤。从管理员的角度来说,在进行区域配置时,必须尽可能详尽地考虑整个区域内的计算、网络以及存储需求,提前进行一个很好的规划,使得区域内的配置不仅可以满足现阶段的使用需求,还能够适应未来的扩展需求。当然,区域内的配置还可以在以后的实际运行过程中继续添加提供点、集群、计算服务器以及存储等主要部件。值得一提的是,区域内设置的提供点的数量并没有限制,可以根据实际需要进行自由配置。

区域作为整个CloudStack中的最大的基本单位,但并不是唯一的,也就是说,一个CloudStack系统可以划分多个区域。区域之间可以完全实现物理隔离,硬件资源、网络配置、虚拟机等设备或资源也是相互独立的。在建立一个区域,选择网络配置时,有两种选择:基本网络(Basic Zone)或是高级网络(Advanced Zone)。因此,如果系统中同时存在多个区域,那么根据网络资源独立的条件,各个区域可以配置不同的网络,互相之间也不会产生影响。根据区域的这一特点,可以将不同的物理机房划分为不同的区域,从而实现CloudStack对于多个物理机房的统一管理。再者,还可以从实际业务需求的角度进行考虑,当需要两个甚至多个相互独立的区域,而只有一个物理机房时,可以将该机房划分为两个独立的区域,供两个独立系统使用。那么,如果区域之间需要进行通信,采用什么样的方式?因为区域之间是相互独立的,因此,区域之间的网络通信只能通过外界配置的公共网络来提供。而区域之间支持的操作也只有复制ISO和模板文件,虚拟机无法在区域之间实现迁移。如果实在需要实现虚拟机之间的迁移,那么只能将虚拟机转换为模板文件,然后复制到另一个区域中。

另外,在用户可见性方面,管理员在创建区域时,可以配置该区域为对所有用户可见的公共区域,或者只是对某些用户组可见的私有区域。如果一个区域对某个用户可见,那么该用户就可以选择在该区域中创建虚拟机或者某些已授权操作。

3. 提供点

提供点(Pod)是CloudStack区域内的第二级逻辑组织单元,可以理解为一个物理机架,其中包含了交换机、服务器和存储设备。因此,参照物理机架的概念,在CloudStack的提供点中也有网络边界的概念,即可以认为所有在一个提供点中的计算服务器、虚拟机都在同一个子网中,这些设备之间可以进行通信互联,如图4.10所示。

 

图4.10  提供点内组件关系

从图4.10可以看出,提供点内部组件连接在同一个或者一组二层(Layer2)交换机上,所以在很多实际部署中基本也都是以一个物理机架进行规划的。同时,在提供点内部,由多个集群构成,一个提供点内部的集群数量也没有限制。而区域内,提供点与提供点之间、提供点与二级存储之间是通过一个三层(Layer3)交换机进行连接与通信的。为实现网络的灵活扩展,提供点是CloudStack中不可或缺的一个层级,另外,机架对于最终用户而言是不可见的。

4. 集群

集群(Cluster)是CloudStack系统中最小的逻辑组织单元,是由一组计算服务器及一个或多个主存储组成。和集群内的计算服务器有关的一个概念是Hypervisor。Hypervisor可以理解为一种运行在物理服务器与操作系统之间的中间软件层,可允许多个操作系统和应用共享同一套基础物理硬件。而CloudStack中同一个集群中的计算服务器恰恰需要Hypervisor的管理和协调:同一集群中的计算服务器必须使用相同的Hypervisor虚拟化管理程序,硬件型号也必须相同(如果是带有高级功能的XenServer和vSphere,则可以兼容异构的CPU)。而在提供点内,不同集群间则可以使用任意的计算服务器、任意的Hypervisor管理程序,而不会相互影响,所以一个提供点内可以包含使用不同的Hypervisor的集群。再回到集群内部,集群内的虚拟机可以在集群中的不同主机之间实现动态迁移(Live Migrate)。虽然CloudStack不限制集群的数量,但由于提供点所划分的子网范围有限,所以提供点内集群和主机的数量实际上不会是完全无限制的。对于存储问题,集群内部可以添加多个作为共享存储所使用的主存储(Primary Storage),主存储的类型并没有特别的限定,只要能够与计算服务器进行正常的通信即可。

5. 主机

主机,又称为计算节点,计算服务器,是CloudStack中的最基本的硬件模块之一。它用于提供虚拟化计算能力和计算资源,运行用户创建的虚拟机,同时根据不同的运算需求与压力,可以进行弹性的增减。主机上需要安装Hypervisor程序用以实现虚拟化管理。以CloudStack
4.0.2
版本为例,主要支持CitrixXenServer、VMware ESXi、KVM(包括RHEL和Ubuntu)、Oracle VM等Hypervisor,具体支持的Hypervisor程序及其版本可以在图形界面上找到,如图4.11所示。

 

图4.11  Hypervisor程序与版本

作为为系统提供计算能力和计算资源的最基本的硬件单位,计算服务器应具有以下特点。

l        提供虚拟机所需的CPU、内存、存储和网络资源,形成一个完备的计算单位。

l        互相之间使用高速网络实现互通互联,并与Internet连接。

l        不一定是集中式的,可以分散在不同地理位置的不同数据中心。

l        可以具有不同的规格,如不同的CPU速度、内存大小等。

l        高性能通用x86兼容服务器,自身相对可靠,但规模较大时允许出现个别服务器故障的情况。

在之前已经简要介绍了Hypervisor程序,CloudStack可以兼容绝大多数硬件设备,其实就是指绝大多数的硬件能够被Hypervisor程序兼容。因此,在安装Hypervisor程序之前,必须确定该服务器的CPU所能够支持的虚拟化技术,并在BIOS中打开CPU对虚拟化技术的支持功能。同时,如果想知道服务器上的所有硬件是否与Hypervisor程序兼容,可以查阅Citrix、VMware的官方文档。

6. 主存储

主存储(Primary Storage)一般作为每个集群中多台计算服务器共同使用的共享存储存在。在一个集群中,可以有一个或多个不同类型的存储,主存储用于存放虚拟机内部数据的镜像文件和数据卷文件。当然,作为存储设备,主存储的位置距离宿主机越近效果越好。主存储分为两种,分别是共享存储和本地存储。 

共享存储一般是指将存储设备集中、独立存放,对所属集群中的所有计算节点开放,集中存储该集群中的所有虚拟机的数据。使用共享存储可以实现虚拟机的在线迁移(Live Migrate)和高可用(High Available),通过专业的存储设备或技术可以保证较高的数据安全性,但相应地在读写性能方面会有所牺牲。 

本地存储是指使用计算节点服务器内置的磁盘来存储虚拟机的运行数据文件,可以使虚拟机拥有很高的读写性能,但无法解决因主机或磁盘故障导致的虚拟机无法启动或者数据丢失等严重问题。 

7. 二级存储

二级存储(SecondaryStorage)是CloudStack根据IaaS平台的架构和使用特点专门划分出来的一种存储。二级存储是和区域相关联的,并且一个区域中只有一个二级存储。在二级存储中主要存储以下内容。

l        模板:可以用来启动虚拟机和包括附加配置信息的操作系统镜像。

l        ISO镜像:包含数据或引导操作系统媒介的磁盘镜像。

l        磁盘卷快照:可用来进行数据恢复或创建模板的虚拟机数据副本。

二级存储可以支持两种存储方式:NFS和OpenStack的Swift组件。对于以上的三种文件形式,同样可以存储在主存中,为什么要单独设计这样一种存储呢?这与以上三种类型的文件的特点有关系。这三种类型的文件具有如下特点。

(1)占用很大的空间。安装用的操作系统的ISO一般来说都在GB字节,而除了操作系统文件之外,还包含一些应用程序与数据,加起来大概在10GB以上。

(2)读写频率很低。细心的读者可能会发现,二级存储中的三种文件基本是一次性写入后只有读取操作,使用也不会非常频繁,与最终用户使用虚拟机数据卷文件的频率相比,读写频率几乎可以忽略不计。

(3)文件单独存放在二级存储,而不存放在主存中。当文件损坏或丢失既不会影响现有系统的运行,也不会影响用户所使用的虚拟机。

类似这种占用空间大、读写频率低的数据文件,我们称之为冷数据。这些数据对整个系统而言并不是关键数据,所以使用配置不高、最简单的NFS来存储就足够了,只需要很低的成本就能满足系统使用的需求。

4.3  CloudStack网络通信架构分析

在上一节介绍了CloudStack中的主要部件,按照层级关系进行了详细说明,为了让读者加深了解整个系统的运行,下面将从系统动态运行的角度对架构进行分析。

从网络通信和数据交换的角度进一步分析CloudStack的架构,如图4.12所示。

 

图4.12  CloudStack网络通信架构

从图4.12 可以看出,在左边,用户按照不同角色通过界面登录,然后向后端发送操作命令。前端界面与后端管理程序之间的交互采用的是目前最流行、最通用的做法:完全调用RESTful风格的API来实现。用户所使用的Web界面上的任意功能,都由Web转移为API命令发送至相应的API服务,API服务接收请求后交由管理服务进行处理,然后根据不同的功能将命令发送给计算节点或系统虚拟机去执行,并在数据库中进行记录,完成后将结果返回给前端界面。而使用RESTful API接口也是出于对兼容性的考虑,既可以使用CloudStack本身进行统一管理,也支持用户根据需求开发全新的界面或者通过其他平台调用CloudStack的API来管理,通用性强,在对编程语言的支持上也没有任何的障碍。除此之外,如果有计费的需要,则通过API调用CloudStackUsage程序所统计的监控数据即可。

下面分析一下CloudStack管理服务是如何管理物理基础设施的。最简单、最直接的办法就是调用设备开放的API命令,比如XenServer的XAPI、vCenter的API。而对于有些不方便直接调用API的设备(如KVM),会采用安装代理程序(Agent)的方式协助进行管理,如图4.13所示。

 

图4.13  CloudStack与KVM的部署架构

从图4.13可以看出,对于使用KVM设备,管理程序无法直接通过API的方式进行调用,而是在每一台KVM虚拟机上安装代理程序Agent,然后管理服务器将命令发送给代理,由代理完成调用任务并将结果返回给管理服务器,最终实现协助管理。

在CloudStack中有极其丰富的网络功能,这些网络功能是由系统虚拟机完成的。但是系统虚拟机毕竟只是一个虚拟机器,不管再如何提高其资源配置,对其性能的提升也是有限的,一旦实际需求中对网络有极高的需求,就会出现瓶颈。从CloudStack4.0开始,支持使用其他物理设备扩展网络功能来代替虚拟路由器的对应功能,既保持了CloudStack的原有架构,又提升了性能,满足了应用需求。

除了以上介绍的设备之外,在图4.12中还存在防火墙(目前使用JuniperSRX)、NetScaler和负载均衡模块(F5)。这些设备的使用极大地提升了CloudStack的实际应用能力。而对于这些设备的管理也都是采用API的方式来进行控制和调用的。

在存储方面。图4.13中并未画出管理节点到存储设备的连接线,也没有说明管理节点是使用何种方式调用存储设备的。其实,CloudStack并不是直接对存储设备进行管理。在4.2节曾介绍过,存储作为系统的主要硬件设备和资源,按照分类的不同,扮演了不同的角色,提供了不同的功能。

主存储通过调用计算节点所使用的Hypervisor程序进行管理,如在存储上创建磁盘或执行快照功能等,其实都是通过调用Hypervisor程序的API进行的。也就是说,管理程序并不直接管理主存储,而是通过Hypervisor程序进行管理。这样做的优点是,这些Hypervisor程序能支持什么样类型的存储,CloudStack就能直接配置和使用而不需要进行更多的兼容性开发;其缺点是,最新的存储技术(如分布式存储或对象存储等)就没有办法在XenServer和vSphere这样的商业产品上支持了。虽然使用KVM在理论上可以使用新的分布存储,但使用效果是否能够满足虚拟化生产的需要,还没有定论。二级存储是一个独立的存在,它不在某一个计算节点或集群的管理下,而是属于整个区域。二级存储的管理目前在CloudStack中是使用二级存储虚拟机挂载此存储并进行管理。

下面介绍系统虚拟机。系统虚拟机是整个CloudStack架构中很有特色且非常重要的组成部分,在系统的管理中承担了很多重要的功能。在CloudStack中,系统虚拟机有三种类型,分别是二级存储虚拟机(Secondary Storage VM)、控制台代理虚拟机(Console Proxy VM)、虚拟路由器(Virtual Router VM)。

系统虚拟机有特别制作的模板,使用的操作系统为Debian6.0,只安装必备的程序用以减小系统虚拟机所消耗的资源,安装较新的补丁以防止可能存在的漏洞,针对不同的Hypervisor有不同格式的模板文件,并安装支持此Hypervisor的驱动和支持工具来提高运行性能。CloudStack使用同一个模板来创建系统虚拟机,它会根据不同角色的系统虚拟机进行特殊配置,当系统虚拟机创建完成后,每种系统虚拟机会安装不同的程序,使用不同的配置信息。

在保证数据安全性方面。为保证系统的正常运行,所有的系统虚拟机都是无状态的,不会独立保存系统中的数据,所有相关信息都保存在数据库中,系统虚拟机内存储的临时数据也都是从数据库中读取的,方便系统虚拟机的运行及任务的执行。系统虚拟机作为系统管理和运行的重要基本单位,必须保证其高可用性(HA)。CloudStack自身有一定的自检测和恢复功能。当管理节点检测到系统虚拟机出现问题时,将自动重启或重建系统虚拟机(系统会通过数据库中的记录的配置信息进行重建)。管理员也可以随时手动删除系统虚拟机,然后由系统自动重建(除虚拟路由器外),无须担心删除系统虚拟机会造成数据的丢失或功能错误。系统虚拟机对于普通用户而言是透明的、不可直接管理的,只有系统管理员可以检查及访问系统虚拟机。下面对三种系统虚拟机进行详细的介绍。

1. 二级存储虚拟机(Secondary Storage VM)

二级存储虚拟机用于管理二级存储,每个区域(Zone)内有一个二级存储虚拟机。二级存储虚拟机通过存储网络连接和挂载二级存储,直接对其进行读写操作,如果不配置存储网络,则使用管理网络进行连接。在数据存储方面,二级存储虚拟机使用公共网络实现ISO和模板文件的上传和下载、用户虚拟机的卷下载、将用户虚拟机的快照存放在二级存储上、多区域之间ISO和模板文件的复制等重要功能。在数据安全性方面,可以通过配置SSL加密访问,从而达到保护用户数据的目的。

2. 控制台代理虚拟机(Console Proxy VM)

控制台代理虚拟机用于支持用户使用浏览器在CloudStack的Web界面上打开虚拟机的图形界面。初始化时,每个区域默认生成一个控制台代理虚拟机。当CloudStack平台上有较多用户打开虚拟机的Web界面时,系统会自动建立多个控制台代理虚拟机,用于分担大量用户访问带来的压力,其对应配置可以在全局变量中找到。在用户界面访问控制台上,默认使用域名realhostip.com进行访问,DNS会自动将该域名解析为控制台代理虚拟机的公共网络地址。同时,控制台代理虚拟机同样可以通过配置SSL加密的方式保护用户。用户虚拟机的图像通过管理网络从所在的主机获取,而不必关心用户虚拟机的网络架构,这样便实现了代理的目的。

3. 虚拟路由器(Virtual Router)

虚拟路由器可以为用户提供虚拟机所使用的多种功能,它在用户第一次创建虚拟机时自动创建。虚拟路由器作为网络结构与通信的重要部分,将在第5章网络功能分析的相关章节中详细介绍,现在先给出虚拟路由器的网络结构,如图4.14所示,便于读者提前了解。

 

图4.14  虚拟路由器网络结构

如图4.14所示,虚拟路由器一共有7种作用,根据网络配置的不同,虚拟路由器所发挥的作用也不相同。在进行网络配置时,有基本网络和高级网络两种供用户选择。在基本网络里只有DHCP和DNS转发的功能。而在高级网络中,其作用则相当丰富,除了基本的DHCP和DNS功能之外,还可以实现类似防火墙的功能,包括网络地址转换(Network Address Translation,NAT)、端口转发(PortForwarding)、虚拟专用网路(VirtualPrivate Network,VPN)、负载均衡(Load Balance)、网络流量监控等,以保证用户虚拟机在隔离网络中与外界通信的顺畅及安全。

4.4  CloudStack软件架构分析

4.3节给出了CloudStack的网络通信架构,分析了在CloudStack中的网络通信的基本过程,详细说明了在网络通信过程中使用的重要组件。本节将从软件架构的角度,全面给出系统中的各个模块的功能分析。CloudStack软件架构图如图4.15所示。

 

图4.15  CloudStack软件架构图

图4.15展示的模块数量较多,结构也较为复杂,但仔细分析,可以看出系统的模块划分是十分明朗的。整个软件架构主要分为六个模块。

1. 用户模块

用户模块包括UI界面、CloudPortal、CTL和其他客户端。主要用于完成与用户的交互操作,将后台信息展示给用户。该层通过API的形式将用户操作发送至管理服务器,管理服务器完成相关指令之后,返回结果给用户。同时,使用API调用的形式,其他客户端也可以以模块的形式接入整个系统,从而与系统进行交互与通信。

2. 管理服务器模块

管理服务器模块也是整个CloudStack的核心功能,主要包括任务执行、服务调用、资源调度、硬件设备管理等。管理服务器接收来自客户端的指令,通过解析指令,调用相应服务的API来完成任务。在执行任务过程中,会涉及资源的调度,如计算服务器的调度,还会涉及硬件设备的使用,如存储空间的使用、数据库的访问等。这些过程都可以通过调用相应模块的相关服务来完成,从而最终完成用户指定的任务。

3. 通信总线模块

可以将整个CloudStack的通信与事件响应抽象成两条通信总线:Event Bus和Message Bus。这两条总线用于完成CloudStack系统内发生的事件和通信信息的传输,将相关信息发送到指定模块。例如,如果系统中包含计费服务,则将相关的资源使用情况的统计信息发送到Usage计费模块,完成计费统计的功能。再者,对于事件响应,如果需要调用底层资源,Event Bus将会通过Resource API调用底层资源来使用。

4. 资源调用模块

资源调用模块用于管理CloudStack系统中所有的硬件资源。其提供服务的方式是这样的:首先将系统的物理资源池化,转变成虚拟的资源池,然后,在资源池的上层封装出一层Resource API,以API的形式向外界提供硬件资源的访问。

5. Usage模块

Usage模块用于统计用户使用系统资源的情况,从而实现计费功能。每当用户使用过某些资源之后,管理模块会将使用情况通过通信总线发送到计费统计模块,而后计费统计模块会以统计报表的形式把使用情况信息呈现出来,供管理员和授权用户查看。

6. 数据库存储模块

从图4.15可以看出,该模块相对独立于其他模块之外,主要用于存储系统信息。被存储的信息按照类别不同可以分为两类:永久性信息和临时信息。永久性信息并非指不会改变的信息,而是指修改频率较少的信息,比如用户或用户组信息等。临时信息是指在系统运行期间产生的临时性信息,比如系统虚拟机运行期间产生的临时性信息,这些信息在运行停止之后可能会被清除。在安全性方面,数据库被配置为主从模式(Master-Slave),主数据库中的数据在从数据库中都有备份。一旦主数据库中发送问题或者宕机,则直接将数据库服务切换到从数据库即可,原来使用的数据也不会发生丢失的情况。

4.5  本章小结

CloudStack作为当前开源的云计算服务平台,提供了IaaS级的服务。然而,仅仅会安装配置是无法深入了解整个CloudStack的结构的。因此,本章在4.1节分析了整个CloudStack的特点及功能定位;在4.2节分析了CloudStack的概念架构,从一些基本概念上理解了系统的结构。再者,按照部署架构逐级递进地详细介绍了系统中的主要部件,包括区域、提供点、集群、计算服务器、主存、二级存储等概念。在4.3节从网络通信的角度,动态地分析了整个系统在运行时其网络请求是如何运转的,系统在接收到命令之后是如何执行的。4.4节则是按照模块划分的思想,将整个系统的软件架构呈现出来,并划分为不同的模块,对于每个模块的功能进行了详细介绍,使得读者最终对整个系统有一个全面的结构化的印象。

开源云计算平台CloudStack实战 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:开源云计算平台CloudStack实战