问题导读:
1.openstack的安全组件都是什么?
2.openstack为什么被比作 一个工厂?
3.openstack为什么至少部署一个控制节点?
4.控制节点主要包含哪些服务?
5.rabbitmq是用来做什么的?
6.nova controller node收到一个创建instance的请求时,是如何进行调度的?
近几年来,云计算成为IT行业的热门话题,无论是企业或者技术人员,要始终站在计算机行业的前沿,Cloud已经成为一个绕不开的话题,而国内外知名企业对Cloud Computing的关注度和参与度也与日俱增,IBM, Inter, HP, DELL等知名企业先后宣布自己的Cloud产品和研发计划,Amason,goolge,Apple的企业业已形成自己的成熟的产品和客户群,在国内,云计算项目也风生水起,腾讯云,百度云,阿里云等相关资讯不断闯入我们的视野,也有许多中小企业也迫不及待的加入云计算行业的大军当中。当然,尽管对Cloud研究的着力点和技术方向上存在着一定得差距,可以预料的是,未来十年,云计算技术必将得到更为成熟的发展和广泛的应用。
在Cloud领域里,比较知名和成熟的有Amazon的EC2, Microsoft 的Azure,Google 的Google apps以及Apple的icloud等,这些产品都在相关领域取得了不菲的成绩,也想业界昭示了Cloud的光辉前景。相比较而言,openstack可谓Cloud领域的一个新兵,从诞生在现在不过是近三年的时间,不过由于其授权开源社区开发,吸引了众多的开发者和相关领域的公司积极参与,因而发展势头迅猛,大有后发先至之势,时至今日,已经成为Cloud领域最知名的产品之一。
至于说openstack的功能,如果把整个openstack环境看做是一个工厂的话(母工厂),这个工厂负责收集、管理、调度多个厂区的资源,进行合理的分配,然后完成这个强大的工厂的核心功能...生产新的工厂(子工厂)!有了这些子工厂,用户就可以用它们根据需要定制自己的工厂了,这可以看做是对Cloud computing Iaas模式的通俗化理解。
openstack用python语言开发,充分利用了python语言的灵活性和面向对象属性,主要模块包括:keyston, glance, nova, nova-dashboard, quantem, storing等。以下对各个模块进行简要的说明。
keystone: openstack的认证服务,用以管理云系统的user,project(tenant),role等,可看做是母工厂的安全部门(关于user, project, role的关系,请参考后续文章);
glance:openstack的镜像服务,用于管理云操作系统的安装镜像文件(qcow2, img等),可看做母工厂的制造部门和库房,工作人员(管理员)可以根据需要制造子工厂的模型,然后放入库房供以后使用;
nova: openstack 的 compute服务, 核心模块,可谓openstack的控制部门,可看做是工厂的决策层;
nova-dashboard: openstack 的管理工具,供管理人员使用。可以看做工厂给管理员提供的强大的管理工具,理论上如果被任命为工厂的高级管理员(CEO),则可以用这个工具可以做你想做的一切;如果被任命为一般管理员(中层干部),则只能做职权范围内的管理工作。管理员的任命要结合keystone来完成,keystone负责记录管理员的相关信息,包括name,project, role等。nova-dashboard基于python django framework开发,在某些地方,nova-dashboard又称作Horizon,在nova dashboard代码内部,horizon其实是nova-dashboard 的 django app 的名字。
quantem: openstack的network服务;可以看做工厂内各部门以及各子工厂之间的联系人网络。与一般工厂的联系人网络不同的是,这个网络架构单独可以看做这个工厂的产品(Saas)。
storing: openstack storage 服务,分为object-storage服务swift和block-storage服务两种;可以看做工厂某种特殊资源的生产部门,正是由于这个资源的特殊性,所以需要一个特别的部门来生产;
一个部署完成的openstack CLOUD如下图所示(来自www.openstack.org):
其中,controller node是openstack的管理节点。每个openstack环境需要部署至少一个(通常也是一个)独立controller节点;controller提供上述除了quantem之外的所有服务,主要包括:database(postgresql或mysql),rabbitmq(nova用它来调度任务),keystone, nova(nova-compute除外,需要在其他的node上提供该服务), glance,nova-dashboard等。
nova network node提供上述的quantem服务,可以是多个节点,似乎也可以运行在controller node上;
nova compute node是生成的子工厂(instance)的宿主,通常与nova-network node 共存,不能在controller node上。nova compute node是nova controller node控制的一个计算机池,当nova controller node收到一个创建instance的请求时,通过rabbitmq和nova schedule进行调度,选定一个compute node作为instance的宿主,安装、启动instance,整个工程都会自动进行,不需要人为干预。
controller node 控制着整个openstack Cloud 环境的整体的运行,可谓整个CLOUD环境的命脉,一旦controller node崩溃,整个Cloud也将不复存在。
由于storage是CLOUD领域乃至计算机领域都是重要的概念和资源,所以还可以部署单独的storage node,这些node构成storage pool, controller node可从中取得storage为各个instance使用。
随便说说
|