OpenStack学习笔记-1.openstack简介

1.Openstack架构

1.1 什么是Openstack?

Openstack是一个开源的云计算平台项目,用起来很简单很方便可扩展性良好,在世界范围内都被广泛使用。

1.2 Openstack服务

1.2.1 Openstack关键服务

Openstack系统包含如下几个关键性的服务,安装的时候可以根据自身需求选择性安装:

名称 描述 项目代号
Compute 计算服务 Nova
Identity 身份认证服务 Keystone
Networking 网络服务 Neutron
Image 镜像管理服务 Glance
Block Storage 块存储服务 Cinder
Object Storage 对象存储服务 Swift
File share Service 文件共享存储服务 Manila
Telemetry 监控服务 Ceilometer
Orchestration 编排服务 Heat
Database 数据库 Trove

1.2.2 概念架构图

下图是Openstack各个服务之间的配合关系

1.2.3 逻辑架构图

为了便于管理Openstack,我们应该熟悉Openstack各个服务之间的逻辑关系。前面1.2.2中所示的概念架构图中,包含了许多独立的Services。Services具有如下特性:

Service 特性
1.各个服务之间采用共同的身份认证服务进行身份确认,各个Services之间通信采用API的方式进行通信。
2.每一个Service都是由多个进程组成的,并且至少都包含一个API进程(用来监听处理转发API请求)。
3.同一个Service之间的各个进程间通信采用AMQP message broker(基于AMQP的一种消息验证、传输、路由的架构模式),Service的状态信息存储在数据库当中。配置Openstack时可以选用多种消息队列和数据库,如:RabbitMQ, MySQL, MariaDB, and SQLite等。
4.用户可以使用多种方式调用各种service,如:Horizon Dashboard、命令行工具(Openstack client)、curl请求api、多种sdk(目前官方推荐有python、go、ruby的sdk)

2.服务简介

2.1 认证管理服务Keystone

Keystone为整个Openstack提供身份认证功能(包括Openstack中租户的身份验证和授权),不同Openstack的服务之间通信都需要先经过Keystone服务提供的认证。

2.2 三大存储服务的区别

2.3 镜像注册服务

Glance服务提供了镜像和元数据的注册服务。Openstack可以通过镜像来启动虚拟机。镜像支持很多格式,如:KVM/Qemu,XEN,VMware,Docker等。Glance默认使用文件目录来存储镜像,但是在大规模生产环境中,可以使用其他后端存储方案(如NFS、Swift、Cinder等)

2.4 计算服务Nova

nova服务本质上是一个分布式的应用程序,用来在不同组件之间进行调度编排以执行任务,其组成如下:

  • 1.nova-api:该组件接受并响应终端用户的API请求。例如将和镜像查询有关的请求转发至Glance。
  • 2.nova-compute:这个组件本质上是一个守护进程,通过虚拟化引起的API接口(如XenServer的XenAPI,Libvirt的KVM、VMware的VMwareAPI)创建和终止虚拟机实例。
  • 3.nova-network:从队列中获取网络任务来进行操作,不过该服务可以使用Neutron代替。
  • 4.nova-scheduler:从队列中获取VM实例请求,并确定它应该在哪个计算机节点运行。
  • 5.nova-conductor:向计算节点提供数据库访问。

2.5 网络服务Neutron

Neutron为Openstack服务管理的接口设备提供真正的网络即服务功能。比如创建子网,虚拟机关联IP等。

2.6 监控服务Telemetry

Telemetry在openstack中提供监控资源使用情况的服务。他负责收集与资源相关的数据。

2.7 创建虚拟机过程简介

创建虚拟机的过程就是各个服务之间通过消息队列总线提交和提取RPC调用进行交互从而协同作战的过程,其具体的过程如下:

  • 1.调用身份认证服务进行身份验证,成功则生成后续调用的令牌。
  • 2.访问镜像服务并获取模板基础镜像
  • 3.通过网络服务API确定可用网络
  • 4.通过计算节点调度程序选择Hypervisor节点
  • 5.调用块存储服务API为实例分配卷
  • 6.通过计算服务API调用在Hypervisor节点启动实例
  • 7.调用网络服务API为实例分配网络