openstack概念及核心组件
openstack是什么
openstack和虚拟化技术区别
虚拟化是最底层的技术,通过虚拟化技术(XEN、KVM等)可以使物理服务器具有虚拟化能力。openstack是一个云平台,它是用来对接和管理虚拟化出来的资源的,统一管理不同虚拟化技术的硬件。
openstack10大核心组件
1、nova
nova是一个开天辟地的组件,因为其他组件大都是从nova组件分离出去的。nova组件主要提供计算资源。
noai-api:对外提供接口,接受所有请求的
nova-compute:提供计算资源
2、horizon
在开源的openstack中是有这个组件的,但是华为的openstack里面把这个组件删除了。这个组件主要是用来提供web ui界面的。
3、glance
这个组件主要是用来提供存储镜像服务的。
4、cinder
主要提供快储存服务。比如说云硬盘,就是由这个组件提供服务的。
5、neutron
主要用来提供网络资源,IP、路由等。
6、swift
原生openstack里这个组件是用来提供对象存储服务的,华为的op中这个组件是用来对接glance组件的(glance只是提供镜像服务,实际的镜像文件存储在swift中)
7、ceilometer
提供计量计费服务 。
8、heat
提供自动编排服务。
9、ironic
提供裸金属服务器、物理服务器服务。
10、keystone
身份验证使用的组件。
Openstack架构图
Openstack是一种典型的SOA架构。SOA:面向服务架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
下边我们来详细的介绍以下重要的组件:
nova
nova是openstack中最重要的组件。很多别的组件都是从nova中分离出去的。nova组件又包含很多模块,我们详细来说以下其中比较重要的六个模块。
nova-api: 接受请求。api其实就是接口,它对外呈现的形式就是代码。比如说有一个应用程序A它包含很多模块,其中一个功能模块是登陆模块。这时候如果另一个程序B也想用这个功能,那么他要么自己开发这个功能模块,要么直接调用A的这个功能模块,调用的话其实就是通过API来调用的,这就是api。A会把自己的用来实现这个功能模块的代码整体打包,做成一个api接口(其实就是一个函数,底层是所有的代码),然后B直接调用这个api函数就可以使用这个功能了。这就是api的作用。比如说我们在登陆京东网站的时候,它显示可以通过微信登陆,其实这就是调用了微信的登陆功能的api接口。api一般都部署在控制节点上。
nova-scheduler: 平衡计算资源,然后选择合适的节点下发云主机。
nova-compute:真正干事的模块。用于创建云主机。
上述三个模块是结合在一起的,他们之间的联系如下:
比如说现在要发放一台云主机,这个需求由nova-api接收,然后nova-api会将这个需求给到nova-scheduler,nova-scheduler会进行权重计算,决定将云主机下发在那个节点上,并将这个决定告诉这个计算节点上的nova-compute,然后由nova-compute创建云主机。这个云主机就出来了。
nova-conductor:专门用来使其他组件和数据库解耦。nova-compute在创建后云主机之后,云主机的信息(名字、规格)等是需要保存到数据库中的,那么是谁来和数据库交互呢?如果用nova-compute直接和数据库交互,因为每个计算节点上都有一个nova-compute,这也就意味着每个节点都可以访问数据库,那么数据库的安全性会大大降低。所以为了数据库的安全性,在G版本引入了nova-conductor。如果要查数据库的数据,nova-api可以直接查,但是如果要往数据库中写数据,nova-compute必须通过nova-conductor来和数据库进行交互。nova-scheduler和nova-compute都必须通过conductor,如下图所示:
nova-novncproxy:提供远程访问云主机功能。
nova-consoleauth:验证云主机账号密码是否准确等。用于云主机鉴权。