3.2 IaaS
计算、网络、存储等资源常被称为“基础设施(Infrastructure)”,管理这些资源的云平台往往被称为“基础设施服务平台”,也就是IaaS(Infrastructure as a Service,基础设施即服务)平台。IaaS是虚拟化技术的一种延伸,以自动化的方式解决虚拟化技术遗留的三大灵活性的问题。IaaS实现了时间灵活性、空间灵活性和操作灵活性,通过调度器动态地管理计算、网络、存储等资源。
3.2.1 云的部署模式
常见的云的部署模式主要有4种,分别是私有云、社区云、公有云和混合云。各种模式的说明如表3-1所示。
表 3-1
1.私有云
将虚拟化软件和云控制平台等部署在用户的数据中心,这种模式被称为“私有云”。使用私有云的用户往往需要自己提供场地、购买服务器,然后云厂商部署、实施整套云平台。
2.社区云
将虚拟化软件和云控制平台等部署在有共同愿景的组织内部或外部,社区云通常支持特定的社群,由特定的社群独占使用,社群内部成员通常有着共同关切的事项(如使命、安全要求、政策等),这种模式被称为“社区云”。
3.公有云
将虚拟化软件和云控制平台等部署在云厂商的数据中心,用户不需要很大的投入,只要注册一个账号,就能通过Web服务访问、管理云资源,这种模式被称为“公有云”。目前亚马逊的AWS以及腾讯云、阿里云等都提供了公有云服务。
公有云最先是由亚马逊开创的,那么亚马逊为什么要做公有云呢?亚马逊的主业是电商,其经常会遇到资源使用的波峰,例如,在“黑色星期五”促销期间有大量用户访问,这时就特别需要一个能力强大的平台来弥补虚拟化灵活性的不足,以支撑瞬间爆发的流量。因为不能时刻都准备好所有的资源,否则会造成资源的浪费;但也不能不准备,否则会造成电商平台的崩溃。亚马逊提出的方案是创建一大批虚拟机来临时支撑电商,等过了波峰再释放这些资源。因此亚马逊实现了一个云平台。然而,商用的虚拟化软件实在是太贵了,于是亚马逊基于开源的虚拟化技术 Xen,自己开发了一套云控制平台软件。亚马逊后期在自己使用云平台之余,还把平台上的资源开放出来供其他用户使用,从而形成了公有云模式。
4.混合云
公有云因其大规模、集约化,在弹性、敏捷性以及不需要硬件投资、按需申请、按量计费方面有着巨大的优势。然而,安全性一直是公有云的一大问题,用户尤其是企业用户,仅在自建的数据中心及自己维护的私有云内,才认为能够保障其敏感信息涉及的关键资产的安全。这一事实决定了私有云在很长一段时间内仍是很多大企业建设云平台的首选模式。公有云是终极方向,但是私有云在其过渡过程中会长期存在,而混合云将是在过渡过程中采用的主要手段。只有打通了公有云和私有云的混合云模式,才能够将线上的公有云的弹性、敏捷性优势,与私有云的安全、私密保障优势相结合。混合云通过对私有云和公有云的统一管理,按需将不同安全等级的应用部署到不同的云上。同时,混合云还提供了异地容灾能力,将主要业务部署在私有云上,将备用业务部署在公有云上,降低了成本,而且灾难恢复被控制在很短时间内。
3.2.2 IaaS的主要功能
IaaS的主要功能具体包括以下几个方面。
资源接入与抽象:通过虚拟化及软件可定义方式,将底层虚拟化资源抽象为可识别的计算、存储、网络等资源池,以此作为云控制器对各类硬件资源实施管理的基础。
资源分配与调度:利用云控制器的资源管理能力,按照不同租户对资源类型和数量的不同需求,将资源分配给各个租户。
应用生命周期管理:协助租户实现虚拟机在云上的安装、启动、停止、卸载等管理操作。
云平台管理维护:通过云平台管理员实施对整个云平台的各类管理及运维操作。
人机交互支持:提供人机交互界面,支持云平台管理员及普通租户对云平台实施各类操作。
3.2.3 IaaS架构
从架构层面来看,IaaS可分为6层,具体如图3-2所示。
图 3-2
物理资源层:IT基础设施硬件,包括服务器、存储设备、网络交换机、物理防火墙、VPN网关、路由器等物理设备。
虚拟化资源层:将分布在不同物理设备上的基础设施资源进行统一虚拟化,让上层的每个应用都认为自己是在独占物理资源(如 CPU、内存、I/O 等资源),而实际上所占用的只是虚拟资源,通过虚拟化资源层屏蔽虚拟化中的动态调用、复制、拦截等技术细节。
云服务控制层:该层为运行的应用提供基本的API,将池化的计算、存储、网络等资源作为基本资源单位,为上层提供统一的资源调用接口,同时实现虚拟资源的调度逻辑,让上层应用可以更有效地使用这些资源。
云管理层:基于云服务控制层的API实现多云的异构纳管,打通不同的云服务,建立统一的逻辑大资源池。此外,打通私有云与公有云,实现资源的统一纳管。依托标准的云服务与调度层接口,通过通用的信息模型及API,以及通过一个具有多云纳管功能的云管理平台,实现多云纳管能力。云管理平台通过把原先的云控制平台作为计算、存储、网络资源池,提供统一的租户管理,实现不同云控制平台之间的资源统一管理和资源跨越统一编排,对外提供统一的API。
运维层(跨层设计):运维包括不同模块的安装,部署已有补丁的升级包,物理设备层、虚拟化层及服务层的监控与故障管理,日志管理,自动化测试等。IaaS往往通过管理工具支持日常运维人员对系统健康状态、运行中的异常事件进行监控,并能快速、高效地响应处理问题,从而保障整个平台的可靠性、可用性、性能等,以达到服务级别协议(SLA)中用户的要求。
安全层(跨层设计):云平台的安全涉及方方面面,从物理层一直到云管理层,其主要包括物理安全、主机安全、数据安全、网络安全、应用安全等。同时还提供了类似于认证审计、专家服务等的功能。
3.2.4 云平台组织架构
本节将从两个方面来介绍云平台的组织架构,分别是资源组织架构和用户组织架构。
1.资源组织架构
云平台自身的资源按照多级组织架构进行划分。
服务区(Region):整个云平台由多个服务区组成,每个服务区都对应一个云管理平台,只有一组服务产品目录。这种模式往往用于公有云中,为处于不同地区的用户提供云服务。但是不同的服务区需要共享一套身份识别与访问管理(IAM)服务,从而确保用户一旦完成鉴权登录之后,就可以在不同的服务区之间随意切换而无须重新登录。
可用区(Available Zone,AZ):每个服务区都由多个可用区组成,每个可用区都对应一个物理上独立的云控制平台(如 OpenStack)。一个可用区往往由一个或多个物理上临近的数据中心构成,独享独立的电源供给、UPS等物理设备。
资源池:每个可用区都包含多个资源池,每个资源池往往都对应一组同构的物理设备。可用区的云控制平台可以同时管理多个资源池。
2.用户组织架构
在云平台中,多个用户往往可以共享一组资源,所以这些用户又被称为“租户”。
虚拟数据中心(Virtual Data Center,VDC):虚拟数据中心对应OpenStack中的Domain。一个大型用户对应一个虚拟数据中心,虚拟数据中心可以对其内使用的不同资源进行配额管理,包括虚拟的CPU、内存、存储、网络等资源。
虚拟私有云(Virtual Private Cloud,VPC):租户占用的资源区域也被称为“虚拟私有云”,对应OpenStack中的Project。一个虚拟数据中心可以包含多个租户的资源区域,是虚拟私有云的上一层组织关系。虚拟私有云是使用虚拟数据中心的资源创建的一个虚拟安全域,提供安全的网络边界防护。虚拟私有云主要起到计算和网络环境隔离的作用,并为隔离环境提供如虚拟防火墙、弹性IP地址、安全组等虚拟化服务。
云平台的组织架构如图3-3所示。
图 3-3
3.2.5 OpenStack
在公有云初期,亚马逊遥遥领先,而位列第二的 Rackspace 一直在寻求突破。与亚马逊不同,虽然亚马逊使用了开源的虚拟化技术 Xen,但其云平台软件的代码一直是闭源的;而Rackspace采取了开源的策略,将其云平台的代码公开。于是,很多想做又做不了云平台的公司相继加入了云平台开源社区,通过整个行业一起做好云平台。Rackspace和美国国家航空航天局(NASA)合作推出了开源软件OpenStack,为底层计算、网络、存储资源提供云化管理平台。
OpenStack项目由NASA和Rackspace于2010年发起,目的是为数据中心的基础设施管理创建一个可编程的、基于API的IaaS层。在2012年又有很多厂商参与其中,这时他们一起创建了OpenStack基金会,也就是现在运营着OpenStack项目的组织,同时也处理项目法律、技术和行政管理等事务。有了 OpenStack 之后,果真像 Rackspace 想的一样,所有想做云的大企业都相继加入了,包括:IBM、惠普、戴尔、腾讯、华为、联想等。所有IT厂商都加入这个社区,对这个云平台做出贡献,包装成自己的产品,连同自己的硬件设备一起售卖。比如有的做了私有云,有的做了公有云,OpenStack已经成为开源云平台的实际标准。
OpenStack需要与下层的虚拟机监视器集成,从而实现对服务器的计算资源的池化。例如,使用KVM作为OpenStack的虚拟机监视器,由KVM完成将一台物理服务器虚拟化为多台虚拟机的功能,而 OpenStack 负责记录与维护资源池的状态,如整个云平台中有多少台服务器,每台服务器有多少资源,其中已经向用户分配了多少资源,还有多少资源空闲,等等。在此基础上,OpenStack负责根据用户的要求,向KVM下达各类控制命令,执行相应的虚拟机生命周期管理操作,如虚拟机的创建、删除、启动、停止等。因此,OpenStack也被称为“云控制器”。
OpenStack采用插件化的方式实现不同类型的计算、存储、网络资源的接入,如图3-4所示,使用一套框架实现了对不同厂商、不同类型设备的资源池化。例如,在虚拟化领域中,可以以插件形式接入KVM、Xen、vCenter等不同的虚拟机监视器。OpenStack的主要组件及组件之间的关系如图3-5所示。
图 3-4
图 3-5
Nova:Nova是整个OpenStack里面最核心的组件。当初Rackspace和NASA贡献代码时,NASA贡献的就是Nova最早的代码(Rackspace贡献的是Swift代码)。OpenStack云实例生命周期所需的各种动作都将由 Nova 进行处理和支撑,它负责管理整个云的计算资源、网络、授权及调度。Nova最核心的功能就是对计算资源池中资源的生命周期进行管理,包括虚拟机的创建、删除、启动、停止等。
Keystone:Keystone 为所有的 OpenStack 组件提供认证和访问策略服务,主要对(但不限于)Swift、Glance、Nova等进行认证与授权。Keystone先对用户进行身份认证,并向被认定为合法的用户发放token,用户持token访问OpenStack的其他服务。
Glance:Glance主要负责对云平台的各类镜像的元数据进行管理,并提供镜像的创建、删除、查询、上传、下载的能力。
Swift:Swift是OpenStack提供的对象存储服务,常用于存储单文件数据量较大、访问不频繁、对数据访问延迟要求不高的数据。
Cinder:Cinder 负责将不同的后端存储设备或软件定义存储集群提供的存储能力统一抽象为存储资源池,然后根据不同的需求划分为不同大小的存储卷,分配给虚拟机或用户使用。
Neutron:Neutron 是 OpenStack 的网络服务项目,其包含多个子项目,分别为用户提供L2到L7不同层次的多种网络服务功能。
Heat:云计算的核心之一就是IT资源管理和使用的自动化,大量传统靠人工操作实现的复杂管理都可以通过云平台提供的API以自动化的方式完成。Heat能够解析用户提交的描述应用对系统资源类型、数量、连接关系的定义模板,并根据模板要求调用Nova、Cinder、Neutron等组件自动化完成资源的部署工作。这一高度自动化、程序化的过程,还可以通过模板重复使用,大大提升了资源部署的效率。
Horizon:Horizon是一个用于管理、控制OpenStack服务的Web控制面板,用户可以通过它对OpenStack状态进行查看和管理。Horizon可以满足云平台使用人员的基本需求,适合作为基本管理界面使用。
3.2.6 云平台部署架构
如图3-6所示是一个IDC云平台的部署架构,通过该架构大家可以更直观地了解云平台的实际部署情况。云平台的部署总体可以分为如下几个部分。
互联网区:互联网区是整个IDC机房互联网的出口,除了传统的网络路由服务器,还配备有防止互联网攻击的安全设备,主要包括抗DDoS设备、物理防火墙等。交换区:交换区以三层的架构提供核心交换机、汇聚交换机、接入交换机。
安全管理区:核心交换机通过导流的模式把指定网络流量导流到某个安全管理区。安全管理区提供租户级别的虚拟化安全功能,包括堡垒机、IPS入侵防御、应用防火墙、漏洞扫描、数据库审计等。该区内的安全功能可以动态地保护租户的虚拟化资源的安全。
云资源管理区:云平台的控制、管理节点往往会被独立地放置在一个区域内,通过专有的管理网络管理云资源池中的所有物理设备。
通用计算资源区:通用计算资源区中包含两类物理设备,即计算服务器和存储服务器。计算服务器除了要与存储接入网连接,自身还要通过内部网络连接,确保在计算服务器上创建的虚拟机之间的通信。存储服务器通过一个内部的存储复制网实现服务器间的数据复制,通过存储接入网与计算服务器连接。这两类服务器同时通过管理网被云控制平台管理。
图 3-6