OpenStack入门 之 架构分析
写在前面
学习目标:
- 了解 OpenStack 各组件的逻辑关系;
- 了解 OpenStack 的各组件的通信和部署关系;
- 了解 OpenStack 的工作流程;
接下来我会掌握:
- OpenStack 组件间的逻辑关系;
- OpenStack 的API;
- OpenStack 组件间的通信关系;
- OpenStack 中几种不同的存储;
- OpenStack 工作流程;
- OpenStack 的部署架构;
OpenStack 各组件之间的关系有:逻辑关系,通信关系,部署关系…
1. OpenStack组件之间的逻辑关系
OpenStack 是一个不断发展的系统,所以 OpenStack 的架构是演进的,举个例子:
- E 版本有5个组件
Compute 是 Nova;Image 是 Glance,为 Nova 提供镜像存储服务;Object 是提供 Object 存储服务的 Swift;Dashboard 是我们平时说的 Horizon;Identity 是 Keystone;
- F版本有7各组件,核心组件:
有这七个组件可以搭出一个相对完整的云计算环境,Heat、Sahala 是可选的;相对 E 版本,新增加的两个组件分别是 Block Storage Cinder 和 Network Neutron,这两个组件和 Glance,Swift 之间没有直接的联系,实际上是从 Compute Network 和 Compute Volume 发展出来的,Neutron 组件并没有直接的去替换 Compute Network,它是一个相对独立的,也是非常著名的 SDN 的一个项目,它为 Compute 提供网络连接,提供网络的资源管理这样一些服务,Block Storage(也就是 Cinder)为 Compute 提供块存储服务,替换了 Compute Volume
2. OpenStack的API
OpenStack 的逻辑关系是要各个组件之间的信息传输来实现的,而组件之间的信息传输主要是通过OpenStack 之间相互调用 API 来实现的,作为一个操作系统,作为一个框架,它的 API 有着重要的意义。
基于 HTTP 协议,RESTful Web API;
什么是 REST?
全称是:Representational State Transfer,表现状态传输。由 Fielding 博士(HTTP 协议的1.0 和 1.1 版本的主要设计者,Apache 服务器软件的作者之一,Apache 基金会的第一任主席)提出。REST 是通过操作资源的表现来操作资源的状态。
另外一种 Web 服务接口协议是 SOAP。
两者的区别,RESTful Web API 的调用非常简单,但是我们平时编程的时候用 SOAP 可能是基于一些框架在去做,.Net,Java 的这些都已经很成熟了,我们感受不到底层机制的这种复杂性,而 REST 其实和 SOAP 比起来非常之简洁的,另外一方面,REST 描述的是一种风格一种架构一种原则,所以它并没有规定具体的实践方式或者说协议。
目前最常见的实现方式就是基于 HTTP 协议实现的 RESTful Web API,我们的 OpenStack 里面用的就是这种方式。REST 架构里面对资源的操作,包括:获取、创建、修改和删除,正好对应着 HTTP 协议提供的 GET、POST、PUT 和 DELETE 方法,所以用 HTTP 来实现 REST 是比较方便的。
RESTful Web API 主要有以下三个要点:
- 资源地址与资源的 URI,比如:http://example.com/resources/
- 传输资源的表现形式,指的是 Web 服务接受与返回的互联网媒体类型,比如:JSON,XML 等,其中 JSON 具有轻量级的特点,移动互联网的飞速发展轻量级的协议非常受欢迎,JSON 得到了广泛的应用
- 对资源的操作,Web 服务在该资源上所支持的一系列请求方法,比如:POST,GET,PUT,DELETE
下面以 OpenStack Swift 的接口作为一个例子来说明:
首先,用 curl 命令访问一个 http 服务
crul -i -X GET http://storage.clouddrive.com/v1/my_account?format=json\ -H
"X-Auth-Use