为什要用云?

一.简单的说就是对资源更加合理的分配,使用,比如硬件的数量,带宽等等这些,因为你不能机器买来不需要了再卖掉(当然也可以),带宽跟机房签合同得来一年的,中间不够了也不能加,超了也不退钱

二.还有就是可以有一个可以统一管理的操作平台,可以快速的对基础设施进行建设配置等等,方便了许多

云计算是个什么鬼?

资源可以循环利用的一个过程(PS:没有虚拟化就没有云,因此这两者没什么可比性)

现有云模式(复制大神的):

一、IaaS:基础设施即服务(个人比较习惯的):用户通过网络获取虚机、存储、网络,然后用户根据自己的需求操作获取的资源

二、PaaS:平台即服务:将软件研发平台作为一种服务, 如Eclipse/Java编程平台,服务商提供编程接口/运行平台等

三、SaaS:软件即服务  :将软件作为一种服务通过网络提供给用户,如web的电子邮件、HR系统、订单管理系统、客户关系系统等。用户无需购买软件,而是向提供商租用基于web的软件,来管理企业经营活动

openstack的核心组件介绍

(openstack就不多说, redhat推动的,很多云都是基于其开发的,6个月一更新,现在是M版)

重要的:

一.Horizon(控制台),又名Dashboard

就是web展示界面操作平台,方便用户交互的

二.Nova(计算)

负责创建,调度,销毁云主机

三.Neutron(网络)

负责实现SDN

四.Swift(对象存储)

目录结构存储数据

五.Cinder(块存储)

提供持久化块存储,即为云主机提供附加云盘

六.Glance(镜像)

提供镜像服务,装机使用

七.Keystone(认证)

为访问openstack各组件提供认证和授权功能,认证通过后,提供一个服务列表(存放你有权访问的服务),可以通过该列表访问各个组件

不重要的:

八.Ceilometer(计费),很明显自用的根本不需要这功能,而且所谓的监控其实根本也算不上什么监控

监控性能,计费

九.Heat(编排),这个太高大上了,就目前阶段正常企业还搞不定

自动化部署应用,自动化管理应用的整个生命周期.主要用于Paas (本来以为青云现在的资源编排就是啊,用了以后看来还不是,只是方便了点)

好,直接开大,先来个整体的流程(图中有错误)

从这个图我们可以明白每一个组件为创建一台vm都提供了什么,其实就是上面各组件的功能的一个整合图,这里需要注意的就是每一步都需要去keystone去进行验证,下图有详细的流程(每一步完成后去验证的过程省略了)

  1. 登录界面或命令行通过RESTful API向keystone获取认证信息。

  2. keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请求。

  3. 界面或命令行通过RESTful API向nova-api发送一个boot instance的请求(携带auth-token)。

  4. nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。

  5. keystone验证token是否有效,如有效则返回有效的认证和对应的角色(注:有些操作需要有角色权限才能操作)。

  6. 通过认证后nova-api和数据库通讯。

  7. 初始化新建虚拟机的数据库记录。

  8. nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源(Host ID)。

  9. nova-scheduler进程侦听消息队列,获取nova-api的请求。

  10. nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。

  11. 对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息。

  12. nova-scheduler通过rpc.cast向nova-compute发送对应的创建虚拟机请求的消息。

  13. nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。

  14. nova-compute通过rpc.call向nova-conductor请求获取虚拟机消息。(Flavor)

  15. nova-conductor从消息队队列中拿到nova-compute请求消息。

  16. nova-conductor根据消息查询虚拟机对应的信息。

  17. nova-conductor从数据库中获得虚拟机对应信息。

  18. nova-conductor把虚拟机信息通过消息的方式发送到消息队列中。

  19. nova-compute从对应的消息队列中获取虚拟机信息消息。

  20. nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求glance-api获取创建虚拟机所需要镜像。

  21. glance-api向keystone认证token是否有效,并返回验证结果。

  22. token验证通过,nova-compute获得虚拟机镜像信息(URL)。

  23. nova-compute通过keystone的RESTfull API拿到认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需要的网络信息。

  24. neutron-server向keystone认证token是否有效,并返回验证结果。

  25. token验证通过,nova-compute获得虚拟机网络信息。

  26. nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求cinder-api获取创建虚拟机所需要的持久化存储信息。

  27. cinder-api向keystone认证token是否有效,并返回验证结果。

  28. token验证通过,nova-compute获得虚拟机持久化存储信息。

  29. nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。

这里面可以看出组件之间的通讯都是通过restapi实现的

各个组件的细节

1.keystone

User:指使用Openstack service的用户,可以是人、服务、系统,但凡使用了Openstack service的对象都可以称为User。

Project(Tenant):可以理解为一个人、或服务所拥有的 资源集合 。在一个Project(Tenant)中可以包含多个User,每一个User都会根据权限的划分来使用Project(Tenant)中的资源。比如通过Nova创建虚拟机时要指定到某个Project中,在Cinder创建卷也要指定到某个Project中。User访问Project的资源前,必须要与该Project关联,并且指定User在Project下的Role。

Role:用于划分权限。可以通过给User指定Role,使User获得Role对应的操作权限。Keystone返回给User的Token包含了Role列表,被访问的Services会判断访问它的User和User提供的Token中所包含的Role。系统默认使用管理Role admin和成员Role _member_ 。

Policy:OpenStack对User的验证除了OpenStack的身份验证以外,还需要鉴别User对某个Service是否有访问权限。Policy机制就是用来控制User对Tenant中资源(包括Services)的操作权限。对于Keystone service来说,Policy就是一个JSON文件,默认是/etc/keystone/policy.json。通过配置这个文件,Keystone Service实现了对User基于Role的权限管理。

Token:是一个字符串表示,作为访问资源的令牌。Token包含了在 指定范围和有效时间内 可以被访问的资源。EG. 在Nova中一个tenant可以是一些虚拟机,在Swift和Glance中一个tenant可以是一些镜像存储,在Network中一个tenant可以是一些网络资源。Token一般被User持有。

Credentials:用于确认用户身份的凭证

Authentication:确定用户身份的过程

Service:Openstack service,即Openstack中运行的组件服务。

Endpoint:一个可以通过网络来访问和定位某个Openstack service的地址,通常是一个URL。比如,当Nova需要访问Glance服务去获取image 时,Nova通过访问Keystone拿到Glance的endpoint,然后通过访问该endpoint去获取Glance服务。我们可以通过Endpoint的region属性去定义多个region。Endpoint 该使用对象分为三类:

  • admin url –> 给admin用户使用,Post:35357

  • internal url –> OpenStack内部服务使用来跟别的服务通信,Port:5000

  • public url –> 其它用户可以访问的地址,Post:5000

创建完service后创建API EndPoint. 在openstack中,每一个service都有三种end points. Admin, public, internal。 Admin是用作管理用途的,如它能够修改user/tenant(project)。 public 是让客户调用的,比如可以部署在外网上让客户可以管理自己的云。internal是openstack内部调用的。三种endpoints 在网络上开放的权限一般也不同。Admin通常只能对内网开放,public通常可以对外网开放internal通常只能对安装有openstack对服务的机器开放。

一个实例:

  1. 用户alice登录keystone系统(password或者token的方式),获取一个临时的token和catalog服务目录(v3版本登录时,如果没有指定scope,project或者domain,获取的临时token没有任何权限,不能查询project或者catalog)。

  2. alice通过临时token获取自己的所有的project列表。

  3. alice选定一个project,然后指定project重新登录,获取一个正式的token,同时获得服务列表的endpoint,用户选定一个endpoint,在HTTP消息头中携带token,然后发送请求(如果用户知道project name或者project id可以直接第3步登录)。

  4. 消息到达endpoint之后,由服务端(nova)的keystone中间件(pipeline中的filter:authtoken)向keystone发送一个验证token的请求。(token类型:uuid需要在keystone验证token,pki类型的token本身是包含用户详细信息的加密串,可以在服务端完成验证)

  5. keystone验证token成功之后,将token对应用户的详细信息,例如:role,username,userid等,返回给服务端(nova)。

  6. 服务端(nova)完成请求,例如:创建虚拟机。

  7. 服务端返回请求结果给alice

2.glance

3.nova与cinder

nova主要组成:

nova-api

nova-scheduler

nova-compute

nova-conductor

cinder主要组成:

cinder-api

cinder-scheduler

cinder-volume

cinder各组件功能:

Cinder-api 是 cinder 服务的 endpoint,提供 rest 接口,负责处理 client 请求,并将 RPC 请求发送至 cinder-scheduler 组件。

Cinder-scheduler 负责 cinder 请求调度,其核心部分就是 scheduler_driver, 作为 scheduler manager 的 driver,负责 cinder-volume 具体的调度处理,发送 cinder RPC 请求到选择的 cinder-volume。

Cinder-volume 负责具体的 volume 请求处理,由不同后端存储提供 volume 存储空间。

4.neutron

neutron包含组件:

neutron-server

neutron-plugin

neutron-agent

neutron各组件功能介绍:

1.Neutron-server可以理解为一个专门用来接收Neutron REST API调用的服务器,然后负责将不同的rest api分发到不同的neutron-plugin上。

2.Neutron-plugin可以理解为不同网络功能实现的入口,各个厂商可以开发自己的plugin。Neutron-plugin接收neutron-server分发过来的REST API,向neutron database完成一些信息的注册,然后将具体要执行的业务操作和参数通知给自身对应的neutron agent。

3.Neutron-agent可以直观地理解为neutron-plugin在设备上的代理,接收相应的neutron-plugin通知的业务操作和参数,并转换为具体的设备级操作,以指导设备的动作。当设备本地发生问题时,neutron-agent会将情况通知给neutron-plugin。

4.Neutron database,顾名思义就是Neutron的数据库,一些业务相关的参数都存在这里。

5.Network provider,即为实际执行功能的网络设备,一般为虚拟交换机(OVS或者Linux Bridge)

OpenStack功能简介的更多相关文章

  1. DYN-B201 Dynamics CRM 云生产力解决方案与功能简介

    DYN-B201 Dynamics CRM 云生产力解决方案与功能简介 讲师:王健.林松涛Dynamics CRM 云产品正式落地中国,CRM 与 Azure.O365 深度整合无缝集成,带来无与伦比 ...

  2. (视频) 《快速创建网站》 2.3 WordPress初始化和功能简介

    本文是<快速创建网站>系列的第4篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  3. SharePoint 2013 "通知我"功能简介

    功能简介 "通知我"主要是在列表或者文档库里面的项目,有添加/删除/修改等操作,发送邮件通知设置的用户的功能:可以针对列表或者文档库设置通知,也可以针对单一项目设置通知功能,是Sh ...

  4. 通过 ec2-api / boto 调用 OpenStack 功能

    通过 ec2-api / boto 调用 OpenStack 功能 OpenStack 支持 amazon ec2 的 api,并能通过 python 库 boto 来进行调用.目前,社区在把 ec2 ...

  5. OpenStack/Gnocchi简介——时间序列数据聚合操作提前计算并存储起来,先算后取的理念

    先看下 http://www.cnblogs.com/bonelee/p/6236962.html 这里对于环形数据库的介绍,便于理解归档这个操作! 转自:http://blog.sina.com.c ...

  6. Beginning SDL 2.0(1) SDL功能简介

    原文链接为 http://wiki.libsdl.org/Introduction. 由于近期整理音视频可视化的技术,发现好久不更新的SDL发布了2.0版本,以前也没有过于关注,这里准备尝试下.了解S ...

  7. HelloX操作系统网络功能简介及使用和开发指南

    HelloX网络功能简介及使用和开发指南 HelloX网络功能简介 作为物联网操作系统,网络功能是必备的核心功能之一.按照规划,HelloX实现了两个不同类型的TCP/IP协议栈,一个面向资源受限的嵌 ...

  8. 部分GDAL工具功能简介

    主要转自http://blog.csdn.net/liminlu0314?viewmode=contents 部分GDAL工具功能简介 gdalinfo.exe 显示GDAL支持的各种栅格文件的信息. ...

  9. 全国天气预报信息数据 API 功能简介与代码调用实战视频

    此文章对开放数据接口 API 之「全国天气预报信息数据 API」进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用,并对实战开发进行了视频演示. 1. 产品功能 接口开放了 ...

随机推荐

  1. Maven配置默认使用的JDK版本

    问题: 创建maven项目的时候,jdk版本是1.7版本,而自己安装的是1.8版本,从而导致无法使用lambda等Java8新特性. 每次右键项目名-maven->update project ...

  2. POJ 3093 Margaritas(Kind of wine) on the River Walk (背包方案统计)

    题目 Description One of the more popular activities in San Antonio is to enjoy margaritas in the park ...

  3. VC++第三方库配置-OpenSpirit 4.2.0 二次开发

    在VS中右击项目,点击属性 1.配置属性--常规--输出目录:Windows\VS2010\debug\ 2.配置属性--常规--中间目录:Windows\VS2010\debug\ 3.配置属性-- ...

  4. mac平台安装类似yum的工具

    首先从Apple Store下载Xcode,然后安装Xcode,接着安装Homebrew包管理,类似于Ubuntu下的apt-get: 终端下输入ruby -e "$(curl -fsSL ...

  5. laravel 社会化(联合)登录扩展包(QQ、微信、微博等)

    laravel的官方包只支付国外网站的联合登录:http://laravelacademy.org/post/6288.html 国内用户的话,可以用这个:https://github.com/ove ...

  6. 【RF库Collections测试】Get Slice From List

    Name:Get Slice From ListSource:Collections <test library>Arguments:[ list_ | start=0 | end=Non ...

  7. Oracle的闪回操作

    Oracle10g中引入了闪回技术,但这并不意味着所有的表都能闪回成功,当没有足够的磁盘空间,Oracle将使用回收站中的磁盘空间,而且位图连接索引和引用完整性约束也不受回收站的保护. recycle ...

  8. timerWithTimeInterval 方法详用

    1.初始化 + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelect ...

  9. ajax返回值传给js全局变量

    1. $.ajaxSetup({ async : false //设置ajax为同步方式,异步方式的话在赋值时数据还未提取出来 });var t = ""; var enginee ...

  10. x86 体系指令

    FASM 第二章 - 2.1 x86 体系指令 Author: 徐艺波  From: xuyibo.org  Updated: 2008-04-17   官方论坛   本站软件反馈.软件开发交流.   ...