前言

    上一篇分别对三种云服务(IaaS、PaaS、SaaS)的应用模式进行了探讨,现在对IaaS云服务的相关流程基于框架和源码进行探索。

IaaS框架

    Openstack作为当前IaaS云服务中的一个开源的框架,被当前广泛的部署和实践,其中由于其开源的特性,也被作为研究云服务结构的典型。

    当前IaaS云服务应用最为广泛,主要提供云虚拟机相关服务其中OpenstackIaaS中最大的开源项目,由一系列服务组件组合而成。主要组件如下:

组件名称

服务名称

Keystone

身份认证

Nova

计算服务

Glance

镜像存储

Swift

对象存储

Cinder

块存储

Neutron

网络

Horizon

操作界面

    Keystone为用户登录以及各个组件间的身份认证提供服务;

    Nova提供虚拟机相关操作服务;

    Glance用于存储各种镜像;

    Swift用于快速存储对象;

    Cinder类似于虚拟机的外挂磁盘;

    Neutron提供虚拟机间虚拟网络;

    Horizon则是python框架编写的控制台页面。

    其中各个组件的交互流程如下图所示:

IaaS节点部署

    云服务是一个原则上分布式部署的服务,在将上面的组件分别部署到不同的机器节点之上,共同协作完成相应的服务。当然如果条件不允许的话,也可以单机部署多个服务,在组件配置文件中修改好ip即可。

    在对Openstack的简易部署中,大约可以配置为四种节点:

    控制节点:服务分发;

    计算节点:虚拟化相关服务;

    存储节点:镜像、对象文件、块存储服务;

    网络节点:虚拟网络服务。

    其中每个节点中均需要配置keystone认证和消息队列服务。

Openstack中的操作流程

    云用户通过控制台Web界面验证用户名密钥登录到云平台上之后,发出请求如创建虚拟机,控制节点即将请求转发至相关服务节点。其中与虚拟化相关的具体流程如下图所示:

    

Openstack——Nova操作流程

    

    IaaS云服务最为核心的即为上述计算节点中的Nova虚拟化相关组件,提供了最主要的云虚拟机相关功能。我通过对其组件接口以及源码分析后发现其虚拟化相关操作流程如下:

    用户或管理员通过在控制台DashBoard上登录进行身份认证之后进入云管理平台,然后在云管理平台上操作用户账户下的虚拟机,操作命令便会将请求转发至控制节点Nova组件,之后通过逻辑分析判断是否需要远程调用虚拟化服务

Openstack——Nova组件调用流程

    对于Nova组件,响应上层用户的操作,基本都是对于一些操作系统虚拟化相关接口的封装。

用户对自身虚拟主机的操作,如创建快照或者关机,通过对nova组件、libvirt虚拟化管理工具以及kvm虚拟化源码分析之后,得到两个操作的流程图,如下图所示。以上是对提供虚拟机相关服务的理解。

Openstack部署

    之前在对Openstack进行部署的时候,往往需要在多个节点,每个节点部署不同的组件,一个一个配置部署,现在好多了,当前有很多一键配置的脚本,在线部署或者线下部署都行。

    想自己部署云环境的小伙伴们不必担心只有一台机器,你们可以这样做,在一台机器上,安装vmware,虚拟出来两到三台虚拟机,然后配置为同一网段,并且在host主机上配置回环网卡,使自己的host主机与上面的三台虚拟机(即将配置云环境的虚拟机)处于同一网络之中,即可进行脚本的一键部署。

    如果实在是不想这么麻烦的分布式部署,也可以单机部署,在一台机器上部署所有的节点即可。

    现有一键部署工具,都可以搜的到:

    RDO Packstack

    Fuel

    如下图所示,为一台host主机虚拟出多个节点来分布式部署云环境的结构图。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐