openstack架构解析
OpenStack 是一个面向 IaaS 层的开源项目,用于实现公有云和私有云的部署及管理,是一个云计算的管理平台. 需要弄明白一点,openstack是虚拟化资源的管理平台.不实现具体的资源虚拟化技术细节.
OpenStack 架构
概念架构图
从概念架构图我们主要需要了解:openstack为我们提供什么服务?
图片解析:
Integration整合 |
Presentation表现层 |
Logic逻辑层(控制层) |
Resources(资源曾) |
Management(管理层) |
---|---|---|---|---|
Identity认证 |
Compute API计算接口 |
Orchestration部署 |
Compute计算 |
Admin API管理员API |
Billing计费 |
Image API映像接口 |
Scheduling调度 |
Volume卷(硬盘上的存储区域) |
Monitoring测控 |
User dashboard仪表盘(显示系统各种参数) |
Policy策略 |
Network网络 |
||
Customer portal顾客门户(就是UI) |
Image Register映像注册表 |
|||
Logging日志 |
OpenStack是一个云平台管理的项目,这个项目由几个主要的组件组合起来完成一些具体的工作。
截至 Grizzly 版本, OpenStack 含七个核心项目:
英文概念 |
中文 |
项目 |
功能描述 |
---|---|---|---|
Compute |
计算 |
Nova |
OpenStack Compute (Nova) 控制云计算架构(基础架构服务的核心组件)。它是用 Python 编写的,创建一个抽象层,让CPU、内存、网络适配器和硬盘驱动器等商品服务器资源实现虚拟化管理(但并不实现具体的虚拟化技术),并具有提高利用率和自动化的功能。它的实时 VM 管理具有启动、调整大小、挂起、停止和重新引导的功能,这是通过集成一组受支持的虚拟机管理程序来实现的。还有一个机制可以在计算节点上缓存 VM 镜像,以实现更快的配置。在运行镜像时,可以通过应用程序编程接口(API)以编程方式存储和管理文件。 |
Networking |
网络 |
Neutron/Quantum |
Networking (Neutron) 之前被称为 Quantum,它提供了管理局域网的能力,具有适用于虚拟局域网(VLAN)、动态主机配置协议和 Internet Protocol 版本 6 的一些功能。用户可以定义网络、子网和路由器,以配置其内部拓扑,然后向这些网络分配 IP 地址和 VLAN。浮动 IP 地址允许用户向 VM 分配(和再分配)固定的外部 IP 地址。 |
Identity Management |
认证 |
Keystone |
OpenStack Identity Management (Keystone) 管理用户目录以及用户可以访问的 OpenStack 服务的目录。其目的是跨所有 OpenStack 组件暴露一个中央身份验证机制。Keystone 本身没有提供身份验证,它可以集成其他各种目录服务,如 Pluggable Authentication Module、Lightweight Directory Access Protocol (LDAP) 或 OAuth。通过这些插件,它能够实现多种形式的身份验证,包括简单的用户名密码凭据,以及复杂的多因子系统。 |
Object Storage |
对象存储 |
Swift |
Swift 是一个分布式存储系统,主要用于静态数据,比如 VM 镜像、备份和存档。该软件将文件和其他对象写入可能分布在一个或多个数据中心内的多个服务器上的一组磁盘驱动器,在整个集群内确保数据复制和完整性。 |
Block Storage |
块存储 |
Cinder |
OpenStack Block Storage (Cinder) 管理计算实例所使用的块级存储。块存储非常适用于有严格性能约束的场景,比如数据库和文件系统。与 Cinder 配合使用的最常见存储是 Linux 服务器存储,但也有一些面向其他平台的插件,其中包括 Ceph、NetApp、Nexenta 和 SolidFire。 |
Image Service |
镜像服务 |
Glance |
OpenStack Image Service (Glance) 为 VM 镜像(尤其是为启动 VM 实例中所使用的系统磁盘)提供了支持。除了发现、注册和激活服务之外,它还有快照和备份功能。Glance 镜像可以充当模板,快速并且一致地部署新的服务器。API 服务器暴露了 Representational State Transfer(REST,具象状态传输)接口,用户可以利用它来列出并获取分配给一组可扩展后端存储(包括 OpenStack Object Storage)的虚拟磁盘镜像。用户可采用多种格式为服务提供私有和公共镜像,这些格式包括 VHD(Microsoft(® Hyper-V®)、VDI(VirtualBox)、VMDK(VMware)、qcow2(Qemu/基于内核的虚拟机),以及 Open Virtualization Format。其他一些功能包括注册新的虚拟磁盘镜像、查询已公开可用的磁盘镜像的信息,以及流式传输虚拟磁盘镜像等。 |
User Interface Dashboard |
图形用户界面 |
Horizon |
图形用户界面,管理员可以很容易地使用它来管理所有项目 |
此图为Grizzly版本组件调用关系图,简述了套件之间是如何运作的:
逻辑架构图:
- 终端用户通过和nova-api对话来与OpenStack Compute交互。
- OpenStack Compute守护进程之间通过队列(行为)和数据库(信息)来交换信息,以执行API请求。(交换信息的方式我们以后会讲)
- OpenStack Glance基本上是独立的基础架构,OpenStack Compute通过Glance API来和它交互。
其各个组件的情况如下:
- nova-api守护进程是OpenStack Compute的中心。它为所有API查询(OpenStack API 或 EC2 API)提供端点,初始化绝大多数部署活动(比如运行实例),以及实施一些策略(绝大多数的配额检查)。 因此很多相对于openstack独立的基础架构是跟nova-api交换信息的,而不是向其他进程那样使用队列和数据库;
- nova-compute进程主要是一个创建和终止虚拟机实例的Worker守护进程。基本原理很简单:从队列中接收行为,然后在更新数据库的状态时,执行一系列的系统命令执行他们。
- nova-volume(cinder)管理映射到计算机实例的卷的创建、附加和取消。这些卷可以来自很多提供商,比如,ISCSI和AoE。
- Nova-network(Neutron/Quantum) worker守护进程类似于nova-compute和nova-volume。它从队列中接收网络任务,然后执行任务以操控网络,比如创建bridging interfaces或改变iptables rules。
- Queue提供中心hub,为守护进程传递消息。当前用RabbitMQ实现。但是理论上能是python ampqlib支持的任何AMPQ消息队列。
- SQL database存储云基础架构中的绝大多数编译时和运行时状态。当前广泛使用的数据库是sqlite3(仅适合测试和开发工作),MySQL和PostgreSQL。
- OpenStack Glance,是一个单独的项目,它是一个compute架构中可选的部分,分为三个部分:
glance-api:glance-api接受API调用;
glance-registry: glance-registry负责存储和检索镜像的元数据,实际的Image Blob存储在Image Store中;
the image store:Image Store可以是多种不同的Object Store,包括OpenStack Object Storage (Swift);
- user dashboard(Horizon)是另一个可选的项目。OpenStack Dashboard提供了一个OpenStack Compute界面来给应用开发者和devops staff类似API的功能。当前它是作为Django web Application来实现的。当然,也有其他可用的Web前端。(说白了就是个UI)
逻辑图在概念图上的映射:
参考
http://448230305.iteye.com/blog/2081977
喜欢 (2)or分享 (0)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- leetcode之字符串压缩
- Android如何获取屏幕、状态栏及标题栏的高度详解
- Android中FloatingActionButton的显示与隐藏示例
- Android 中RecyclerView顶部刷新实现详解
- Android开发实现图片平移、缩放、倒影及旋转功能的方法
- Grafana + InfluxDB 实现 Jmeter 压测的图形化监控
- Android 浮动编辑框的具体实现代码
- Android实现Path平滑的涂鸦效果实例
- Android CameraManager类详解
- Android开发实现自定义水平滚动的容器示例
- Android Studio开发之 JNI 篇的简单示例
- Android自定义View播放Gif动画的示例
- Android下拉框PopupWindow使用详解
- Android实现自动文本框提示功能
- Android开发实现拍照功能的方法实例解析