云计算-openstack基础构架以及服务方式详解
一:什么是openstack
是Rackspace(美国航天局)和NASA(一家公司)共同发起的开源项目,他是一系列软件项目的组合。
这些项目是松耦合的关系,可以进行独立的安装,启动和停止,只有在必要的时候才进行通信(优点:扩展性好,安全性高,缺点:安装和配置比较复杂)
二:openstack的主要功能组件
1:简介

主要分为5个不同的层次16个不同功能模块:
Presentation【表示层】:api模块,ui模块
Logic(Control)【逻辑控制层】:Orchostration【编排服务】,Scheduling【调度服务】,Policy【策略服务】,Image Registry【镜像注册服务】,Logging【日志服务】
Resource【资源管理层】:Compute【计算资源管理模块】,Volume【存储资源管理模块】,Network【网络资源管理模块】
Integration【集成层】:Billing【计量模块】,Identity【身份认证模块】
Mabagement【管理层】:Admin【管理api】,Monitoring【监测】
子项目是怎样对接起来的:
Horizon-UI服务:对应User Dashboard【云下服务给运维用户使用】和Customer Portal【给云上用户使用】
Keystone-身份认证:对应Identity
Nova-计算服务模块:Compute API,scheduling【调度服务】,policy【策略服务】和Compute【计算管理模块】以及部分Admin API
Glance-镜像服务:Image Registry【镜像注册】,Image Registry【镜像API】
Cinder【块存储】/swift【网络对象存储】-存储服务:volume【存储资源管理模块】
Neutron-网络服务:Network【网络资源管理模块】
Heat-编排组织服务:Orchostration【编排服务】
Ceilometer-监控计量服务:Billing【计量模块】,,Monitoring【监测】
2:Horizon-UI模块
主要服务为openstack用户提供UI服务,也就是负责用户在管理控制台上的所有操作转化为后台API的调用。
用户:云管理员【负责整个云平台的运营,资源管理和分配】,普通云用户【在配额范围内,自由操作,使用资源】
云管理员界面:

3:Keystone-身份认证模块
主要负责openstack中的身份认证和权限控制,
User:即用户,代表可以通过keystone进行访问的人或者程序,User通过认证信息(如密码,api Key等)进行验证
Tenant:即租户,它是各个服务中的一些可以访问的资源集合
Role:即角色,代表一组用户可以访问资源的权限
一家人【租户】租用了一百平米的房子【角色权限】那么这家人每个人【用户】的管理权限是不同的,父母比孩子的管理权限大。

Service:即服务,如Nova,Glance,Swift。服务只有在keystone上进行注册才能被分配
Endpoint:一个服务暴露出来的访问点,如果要访问一个服务,则必须要知道他的endpoint
Token:访问资源的令牌,相当于钥匙
keystone到底提供了什么服务:
Identity服务:验证了身份验证凭证。
Token服务:将会验证并管理用于验证请求身份的令牌
Catalog:每个服务需要在keystone上进行注册,而他们就是注册在catalog上
Policy:决定每个用户有哪些访问控制的权限
4:Nova-计算服务
openstack的核心服务。
一:主要功能包括:
1:实例生命周期管理:实例的创建,删除,启动,停止
2:计算资源的管理
3:向外提供Rest风格的API
二:3个不同的功能模块组成
nova-api:位于表示层主要接受外部的rest请求
nova-scheduler:位于逻辑控制层,主要负责居中调停,选择由哪个主机创建vm
nova-compute:负责虚拟机测创建,以及资源的分配,本身并不提供任何虚拟化功能,但他却支持不同的虚拟机形式
他们之间并不是听过直接传递,而是通过消息中间件进行消息的传递

5: Glance-镜像服务
功能:提供虚拟机镜像的存储,查询和检索服务
主要为Nova组件提供服务,通过nova创建虚拟机的时候,就必须听过glance获取相应的镜像,然后根据镜像创建虚拟机。
依赖于存储服务和数据库服务:存储服务用于存储镜像本身,数据库服务主要用于存储跟镜像相关的各种元数据
glance的架构图

6:swift-存储服务
功能:对外提供高可用分布式对象存储服务
特点:无限可扩展,没有端点故障,使用swift不用担心使用的对象会丢失,因为它本身就提供高可用的功能
可以通过HTTP(S),object api及s3接口存取
swift原理图
所有的请求都通过proxy进行处理,通过proxy到合适的Account下面找相应的Containe中的某一个object进行存储服务
在这中间会针对不同的object进行复制,从而保证某一个对象的信息丢失时能够从其他地方找回来

7:cinder-块存储服务
功能:管理所以的块存储设备,为vm服务,
对象存储服务主要用于存储分布式的对象,也就意味着你可以从任何地方发起请求存储你的对象
块存储服务是本地的,它只能挂在vm上进行使用
cinder原理图:
当一个请求发来时,首先还是发送到cinder本身的api上面,api模块对发过来的请求进行处理,处理后的结果通过消息中间件进行传递,通过消息中间件mq传到cinder-scheduler上面再通过调度器,
再决定到哪里申请块存储服务,并且创建一个vm,cinder具体的存储模块的管理都是通过cinder-volume来进行生命周期管理

8:Neutron-网络服务
功能:提供云计算环境下的虚拟网络功能,为每个租户建立独立的网络环境
三种模式:
Flat模式:网桥模式,所有的都需要手工配置
Flat DHCP模式:网桥模式,在网关处单独取了一个DHCP的进程,可以辅助用户进行网络配置
VLAN模式:为每个不同的租户设置了不同的虚拟子网,在这个虚拟子网中,用户可以有自己的ip
三:组件间关系和访问流程
1:组件之间的关系

2:访问控制流程

云计算-openstack基础构架以及服务方式详解的更多相关文章
- 2-4、nginx特性及基础概念-nginx web服务配置详解
Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...
- Dubbo配置方式详解
Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是阿里巴巴 SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次 ...
- Docker 基础技术之 Linux cgroups 详解
PS:欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 推荐大家到公众号阅读,那里阅读体验更好,也沉淀了很多篇干货. 前面两篇 ...
- [转载,感觉写的非常详细]DUBBO配置方式详解
[转载,感觉写的非常详细]DUBBO配置方式详解 原文链接:http://www.cnblogs.com/chanshuyi/p/5144288.html DUBBO 是一个分布式服务框架,致力于提供 ...
- Java工程师 基础+实战 完整路线图(详解版)
Java工程师 基础+实战 完整路线图(详解版) Java 基础 Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装.继承.多态.此外还有泛型.反射 ...
- 基础 | batchnorm原理及代码详解
https://blog.csdn.net/qq_25737169/article/details/79048516 https://www.cnblogs.com/bonelee/p/8528722 ...
- Linux:SSH服务配置文件详解
SSH服务配置文件详解 SSH客户端配置文件 /etc/ssh/ssh——config 配置文件概要 Host * #选项“Host”只对能够匹配后面字串的计算机有效.“*”表示所有的计算机. For ...
- (转)Nginx静态服务配置---详解root和alias指令
Nginx静态服务配置---详解root和alias指令 原文:https://www.jianshu.com/p/4be0d5882ec5 静态文件 Nginx以其高性能著称,常用与做前端反向代理服 ...
- Nginx静态服务配置---详解root和alias指令
Nginx静态服务配置---详解root和alias指令 静态文件 Nginx以其高性能著称,常用与做前端反向代理服务器.同时nginx也是一个高性能的静态文件服务器.通常都会把应用的静态文件使用ng ...
随机推荐
- Linux的vi常用命令详解
1.vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下: ...
- C++内存布局详解
一个由C/C++编译的程序除了存放函数二进制代码的程序代码段(code段)外,数据占用的内存大致分为以下几个部分: 1.栈区(stack) 存放局部变量.函数参数.返回数据.返回地址等.系统自动分配释 ...
- 快速排序Java实现
package practice; import edu.princeton.cs.algs4.*; public class TestMain { public static void main(S ...
- 低版本浏览器支持HTML5标签的方法
最近刷了一道面试题,是关于低版本浏览器支持HTM5标签的写法,在网上找了一些,都行之有效,但是缺少整体总结,所以在这里总结一下,方便其他人过来阅读. IE低版本需要支持HTML5标签: 方法1.传统引 ...
- positio:absolute与position:relative的区别
absolute 能让元素 inline-block 化:例如一个div标签默认宽度是100%显示的,但是一旦被absolute属性缠上,则100%默认宽度就会变成自适应内部元素的宽度. float ...
- Http get方式url参数长度以及大小
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp69 众所周知, 传递小量参数(在没有其他原因,例如隐藏参数值的情况下)推 ...
- makefile中":=","=","?=","+=" 之间的区别
区别: := 有关位置的等于,值取决于当时位置的值 = 无关位置的等于,值永远等于最后的值 ?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值 '=':无关位置的等于 比如: x = ...
- 转:jquery 父、子页面之间页面元素的获取,方法的调用
一.jQuery 父.子页面之间页面元素的获取,方法的调用: 1. 父页面获取子页面元素: 格式:$("#iframe的ID").contents().find("#if ...
- Python并发编程协程(Coroutine)之Gevent
Gevent官网文档地址:http://www.gevent.org/contents.html 基本概念 我们通常所说的协程Coroutine其实是corporate routine的缩写,直接翻译 ...
- 团队作业1——团队展示&博客作业查重系统
团队展示: 1.队名:六个核桃 2.队员学号: 王婧(201421123065).柯怡芳(201421123067组长).陈艺菡(201421123068). 钱惠(201421123071).尼玛( ...