- cinder-api:接收 API 请求,调用 cinder-volume 执行操作。
- cinder-scheduler:scheduler 通过调度算法选择最合适的存储节点创建 volume。
- cinder-volume:管理 volume 的服务,与 volume provider 协调工作,管理 volume 的生命周期。运行 cinder-volume 服务的节点被称作为存储节点。
- volume provider:数据的存储设备,为 volume 提供物理存储空间。cinder-volume 支持多种 volume provider,每种 volume provider 通过自己的 driver 与cinder-volume 协调工作。
- Message Queue:Cinder 各个子服务通过消息队列实现进程间通信和相互协作。因为有了消息队列,子服务之间实现了解耦,这种松散的结构也是分布式系统的重要特征。
- Database:Cinder 有一些数据需要存放到数据库中,一般使用 MySQL。数据库是安装在控制节点上的,比如在我们的实验环境中,可以访问名称为“cinder”的数据库。
openstack通用设计思路: 与nova重复的不在此赘述
- API 前端服务:可以通过运行多个 API 服务实例轻松实现 API 的高可用,比如运行多个 cinder-api 进程
- Scheduler 调度服务
- Worker 工作服务:在 Cinder 中,这个 Worker 就是 cinder-volume 了。
- Driver 框架:存储节点支持多种 volume provider,包括 LVM, NFS, Ceph, GlusterFS,以及 EMC, IBM 等商业存储系统。cinder-volume 为这些 volume provider 定义了统一的 driver 接口,volume provider 只需要实现这些接口,就可以 driver 的形式即插即用到 OpenStack 中。在 cinder-volume 的配置文件 /etc/cinder/cinder.conf在存储节点上 中 volume_driver 配置项设置该存储节点使用哪种 volume provider 的 driver,下面的示例表示使用的是 LVM。
- Messaging 服务
- Database