说到了cloudstack的主要特点,那么这篇会分析一下为了实现这些特点,在架构上的设计特点与思想。(配图稍后补上)从物理设备的角度来看,其实很简单。可以理解成为,一个Cloudstack管理节点或集群,管理很多的可以提供虚拟化计算能力的服务器和存储。如果接触过虚拟化的朋友就很好理解这样一个抽象的架构,尤其是计算服务器和存储,这是传统虚拟化必然使用的结构。 
cloudstack架构详解(二)                               &n_服务器
 图2.1但这样肯定是不够的。首先,作为管理节点不可能这么简单的对所有服务器的管理都一把抓,这样的架构太过单一,除了一些应用场景外,并不能适应大部分灵活复杂多变的云环境。在云环境里,网络的设计方式千变万化,一个云管理平台必须要有很好的适用性和通用性,异构的兼容性,灵活的可扩展能力。 cloudstack架构详解(二)                               &n_management_02
  图2.2以上这幅图通过浏览器登陆Cloudstack的web UI后就可以看到的一个架构图,  其中资源域(Zone)、提供点(Pod)、集群(Cluster)属于逻辑概念,既可以对照实际进行理解,也可以根据需求灵活配置使用。那么我们就把上边提到的几个概念做一个详细的梳理。 1. 管理服务器(management server)
就是CloudStack这个IaaS云管理平台的核心:主要将整个IaaS平台的工作统一汇总在这个核心来处理,接受用户和管理员的操作,包括对硬件、虚拟机和网络的全面管理操作,管理节点会对发过来的操作请求进行处理,并发送给对应的计算节点或系统虚拟机去执行;管理 节点还会在MySQL数据库中记录整个CloudStack系统的所有信息,并监控计算节点,存储及虚拟机的状态,网络资源的使用情况,帮助用户和管理员 了解目前整个系统各个部分的运行情况。在安装管理节点时,分别需要安装管理服务程序,MySQL数据库和Usage服务程序(可选)3个大的组件。

  • 管理服务程序——基于JAVA语言编写,包含tomcat服务,API服务,管理各类Hypervisor的core服务,管理整个系统工作流程的server服务,等几个核心组件。

  • MySQL数据库——记录CloudStack系统中的所有信息。

  • Usage服务程序——主要用于记录用户VM使用各种资源的统计和事件,为计费提供数据,所以当不需要计费功能时,可以不必安装此程序。

在简单环境下可以将以上所有管理节点的组件都集中安装在一台物理服务器或虚拟机上。但在一个计划上线的生产环境下,根据设计需求,可以部署多台管理服务器分担不同的功能,如:

  • 安装多个管理服务程序作为一个集群,再使用负载均衡设备放在此集群前,可以负载大量的WEB访问或API请求。

  • 将MySQL数据库安装在独立的服务器中,并搭建主从方式(master-slave)的MySQL数据库作为一种备份方案。

  • 将Usage服务程序安装在独立服务器,用于分担管理服务器上的压力。

 
cloudstack架构详解(二)                               &n_兼容性_03
 图2.3管理服务器本身并不记录CloudStack的系统信息,全部都储存在数据库中。所以当管理服务程序被删除或所在节点宕机,并不会影响CloudStack系统正常运行,只是可能无法接受新的请求,用户所使用的虚拟机仍可以在计算服务器上保持正常通讯和运行。在做好MySQL数据库中数据备份的情况下,恢复整个系统的正常运行是比较容易做到。 2. 资源域(Zone)资源域(Zone)可以理解为一个数据中心或机房,是Cloudstack系统中逻辑上最大范围的组织单元,由一组提供点(Pod),二级存储(Secondary Storage)以及网络架构配置构成。在完成管理服务器的安装后,登陆cloudstack的管理界面,第一步就是创建资源域,完成整套IaaS平台的初步整合。在创建资源域的一系列步骤中,会包括网络架构的选择,网络的各种规划和配置,添加计算服务器和存储。对于管理员来讲,创建资源域的时候会决定该资源域的所有重要参数,必须要对整个资源域有一个很好的规划,使得资源域的架构可以满足需求,并适应未来的扩展。在完成创建资源域的步骤后,随着需求的变化,还可以继续添加提供点,集群,计算服务器和存储,一个资源域内的提供点的数量是没有限制的。 一套CloudStack系统中可以添加多个资源域,资源域之间可以实现完全物理隔离的,硬件资源,网络配置,虚拟机也都是独立。一个资源域在建立的时候只能选择一种网络架构基本网络(Basic Zone)或高级网络(Advanced Zone),但如果整套系统又多个资源域,每个资源域可以选择不同的网络架构。根据这一特点,也就可以实现cloudstack对于多个物理机房的统一管理。从业务的需求上来说,也可以在一个机房内划分出两个独立的资源域,提供给需要完全隔离开的两套系统使用。由于资源域之间是相互独立的,如果需要有通讯,只可以是在网络设备上配置打通资源域的公共网络,关于网络的介绍我们会在第三章详细介绍。资源域之间只可以复制ISO和模板文件,虚拟机不可以进行资源域之间的迁移操作,所以如果有需要,解决的办法就是将虚拟机转为模板然后复制到另一个资源域中使用。另外,资源域对用户是可见的,在管理员创建资源域的时候可以选择该资源域是对所有用户可见的公共属性,还是只对某组用户可见的私有属性。当一个用户可以看到多个资源域时,创建虚拟机的步骤里可以选择在哪个资源域中创建虚拟机。 3.提供点(Pod)

提供点(Pod)是Cloudstack的资源域内第二级的逻辑组织单元,可以理解为一个物理的机架,包含交换机,服务器,存储的整合。所以参照物理机架的概念,在cloudstack的提供点中,也有网络的概念,即所有提供点内的计算服务器、系统虚拟机、客户虚拟机都在同一个子网中。一般来说,提供点上的服务器连接至同一个或一组Layer2交换机上,所以很多实际部署中基本也都是以一个物理机架来进行规划。一个资源域内可以有多个独立的提供点,数量没有上限。一个提供点可以由一个或多个集群构成,一个提供点中的集群数量没有上限。出于对网络灵活扩展的目的,提供点是不可或缺的一个层级。

 

另外,机架对最终用户不可见。

 

4.集群(Cluster)

 

集群是Cloudstack的系统中最小的逻辑组织单元,由一组计算服务器和一个或多个主存储所组成。同一个集群的计算服务器必须使用相同的Hypervisor类型,硬件型号也必须相同(带有高级功能的XenServer和vSphere可以兼容异构的CPU)。虚拟机可以在集群内的不同主机之间实现动态迁移(live migrate)一个提供点可以包含多个集群,可以包含使用不同hypervisor程序的集群。虽然cloudstack并不限制集群的数量,但由于提供点所划分的子网范围,提供点内的集群和主机数量不会是完全无限制的。而集群内主机的数量,虽然也没有限制,但根据最佳实践,一个集群内的计算服务器的数量建议不超过16台。

 

需要注意的是,vSphere集群由vCenter服务器进行管理。管理员必须将vCenter服务器。每个vCenter服务器可以管理多个vSphere集群。

 

集群内可以添加多个作为共享存储所使用的主存储(primary storage),主存储的类型没有限制,只要可以和计算服务器正常通讯即可。在新版本中,Cloudstack可以实现虚拟机的所使用的镜像文件在多个主存储之前进行迁移,但肯定需要关闭虚拟机电源进行迁移。

 

5.计算服务器(Host)

计算服务器是CloudStack中最基本的硬件模块之一,用于提供虚拟化能力和计算资源,并运行客户创建的虚拟机,根据系统压力可以进行弹性增减。计算服务器上需要安装Hypervisor程序,目前CloudStack支持Citrix XenServer、VMware ESXi、KVM(包括RHEL或Ubuntu类型)、Oracle VM的Hypervisor。具体支持的hypervisor程序及版本可以在Cloudstack的图形界面上找到:


cloudstack架构详解(二)                               &n_浏览器_04
 图2.4


计算服务器具有以下特点:

  • 提供虚拟机需要的所有CPU,内存,存储和网络资源

  • 互相通过高速网络互联互通,并具备Internet连接

  • 可以位于不同地理位置的不同数据中心

  • 可以具有不同的规格(如不同的CPU速度,不同的内存大小等等)

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

Cloudstack可以兼容绝大部分硬件设备,其实就是所使用的硬件是否能够被hypervisor程序兼容。在安装hypervisor程序之前,需要先确定该服务器所使用的CPU能支持虚拟化技术,并在BIOS中打开CPU对虚拟化技术的支持。而服务器上的所有硬件是否与Hypervisor程序兼容,建议在Citrix,VMware等官方网站上进行检查。

 

6.主存储(Primary Storage)

主存储一般作为每个集群中多台计算服务器共同使用的共享存储存在,一个集群中可以有一个或者多个不同类型的存储。也可以通过参数配置,使用计算节点的本地磁盘作为本地存储使用。主存储用于存储所有虚拟机的镜像文件和数据卷文件。集群中的所有计算节点都可以访问共享存储,用以实现虚拟机的在线迁移(live migrate)和高可用(High Available)的功能。如果设为本地磁盘为主存储,虚拟机的磁盘读写有很好的性能,但无法解决主机故障导致虚拟机无法启动而出现的单点故障。


CloudStack的主存储支持的设备依赖于计算节点所使用的Hypervisor程序,如XenServer和vSphere可以全面的支持NFS,iSCSI,FC-SAN等传统存储设备。对于KVM,支持NFS较容易,但需要使用Sheard MountPoint功能来间接支持iSCSI、FC-SAN、CLVM,并可以间接支持较新的分布式存储技术架构。

 

7. 二级存储(secondary Storage)

二级存储是cloudstack根据IaaS平台的特点,专门设计出来的存储。每个资源域只需一个二级存储,用于存放创建虚拟机用的ISO镜像文件,模版文件,以及对虚拟机做的快照文件。二级存储可以支持NFS存储和openstack的组件swift存储。为什么会单独设计一个存储出来呢?其实大家可以看一下存放的几种类型的文件,第一是占用很大的空间,第二是基本在一次性写入后只有读取操作,使用也不会非常频繁,属于冷数据。相比较经常使用的虚拟机数据卷文件