openstack——cinder服务篇
一、cinder 介绍:
- 通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区、格式化、创建文件系统;或者直接使用裸硬盘存储数据(数据库)
- 通过 NFS、CIFS 等 协议,mount 远程的文件系统
- 提供 REST API 使用户能够查询和管理 volume、volume snapshot 以及 volume type
- 提供 scheduler 调度 volume 创建请求,合理优化存储资源的分配
- 通过 driver 架构支持多种 back-end(后端)存储方式,包括 LVM,NFS,Ceph 和其他诸如 EMC、IBM 等商业存储产品和方案
Cinder 架构
客户端可以将请求发送到 endponits 指定的地址,向 cinder-api 请求操作。 当然,作为最终用户的我们不会直接发送 Rest API 请求。OpenStack CLI,Dashboard 和其他需要跟 Cinder 交换的组件会使用这些 API。
cinder-api 接受哪些请求呢?简单的说,只要是 Volume 生命周期相关的操作,cinder-api 都可以响应。大部分操作都可以在 Dashboard 上看到。
cinder-volume
通过 Driver 架构支持多种 Volume Provider
接着的问题是:现在市面上有这么多块存储产品和方案(volume provider),cinder-volume 如何与它们配合呢?
通过的 Driver 架构。 cinder-volume 为这些 volume provider 定义了统一的接口,volume provider 只需要实现这些接口,就可以 Driver 的形式即插即用到 OpenStack 系统中。
定期向 OpenStack 报告计算节点的状态
cinder-volume 会定期向 Cinder 报告存储节点的空闲容量来做筛选启动volume
实现 volume 生命周期管理
Cinder 对 volume 的生命周期的管理最终都是通过 cinder-volume 完成的,包括 volume 的 create、extend、attach、snapshot、delete 等。
cinder-scheduler
volume provider
Message Queue
Database Cinder
二、 Cinder 的设计思想
- 客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(cinder-api)发送请求:“帮我创建一个 volume”
- API 对请求做一些必要处理后,向 Messaging(RabbitMQ)发送了一条消息:“让 Scheduler 创建一个 volume”
- Scheduler(cinder-scheduler)从 Messaging 获取到 API 发给它的消息,然后执行调度算法,从若干计存储点中选出节点 A
- Scheduler 向 Messaging 发送了一条消息:“让存储节点 A 创建这个 volume”
- 存储节点 A 的 Volume(cinder-volume)从 Messaging 中获取到 Scheduler 发给它的消息,然后通过 driver 在 volume provider 上创建 volume。
- 对外提供统一接口,隐藏实现细节
- API 提供 REST 标准调用服务,便于与第三方系统集成
- 可以通过运行多个 API 服务实例轻松实现 API 的高可用,比如运行多个 cinder-api 进程
Scheduler 调度服务
Driver 框架
三、cinder部署
controller节点
点击Block Storage service——Install and configure controller
1)创建cinder数据库并授权
MariaDB [(none)]> CREATE DATABASE cinder;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'CINDER_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'CINDER_DBPASS';
2)创建用户cinder
openstack user create --domain default --password-prompt cinder
3)给cinder用户授予管理员权限
openstack role add --project service --user cinder admin
4)创建cinderv2和cinderv3服务
openstack service create --name cinderv2 \
--description "OpenStack Block Storage" volumev2
openstack service create --name cinderv3 \
--description "OpenStack Block Storage" volumev3
5)再分别创建cinderv2和cinderv3的服务端点
openstack endpoint create --region RegionOne \
volumev2 public http://controller:8776/v2/%\(project_id\)s openstack endpoint create --region RegionOne \
volumev2 internal http://controller:8776/v2/%\(project_id\)s openstack endpoint create --region RegionOne \
volumev2 admin http://controller:8776/v2/%\(project_id\)s openstack endpoint create --region RegionOne \
volumev3 public http://controller:8776/v3/%\(project_id\)s openstack endpoint create --region RegionOne \
volumev3 internal http://controller:8776/v3/%\(project_id\)s openstack endpoint create --region RegionOne \
volumev3 admin http://controller:8776/v3/%\(project_id\)s
6)下载openstack-cinder安装
yum install openstack-cinder
7)编辑cinder配置文件
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
#volumes_dir = $state_path/volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
#iscsi_ip_address = 192.168.253.135 #本机ip
8)同步数据库
su -s /bin/sh -c "cinder-manage db sync" cinder
9)编辑nova数据库,取消下面注释
[cinder]
os_region_name = RegionOne
10)重启相关服务
systemctl restart openstack-nova-api.service
# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
11)查看是否部署成功
openstack volume service list
| Binary | Host | Zone | Status | State | Updated At |
+------------------+-------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller | nova | enabled | up | 2019-06-06T08:59:35.000000 |
+------------------+-------------+------+---------+-------+----------------------------
storage节点
点进Install and configure a storage node
1)安装lvm安装包
openstack-cinder targetcli python-keystone lvm2
2)创建物理卷/卷组和逻辑卷
pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb
3)编辑配置文件/etc/lvm/lvm.conf(315行后面添加,注意不要超出大括号)
devices {
...
filter = [ "a/sdb/", "r/.*/"]
4)配置cinder配置文件,下面是需要修改的地方
vim /etc/lvm/lvm.conf
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
5)重启lvm和cinder服务
# systemctl enable openstack-cinder-volume.service target.service
# systemctl start openstack-cinder-volume.service target.service
6)控制节点查看是否部署成功
openstack volume service list
最新文章
- links and softwares
- 我的CentOS 7 U盘安装之路 (Win 8.1 Profession + CentOS 7双系统)
- Excel 取得一定范围内最大的有值的行号
- java.lang.Exception: No runnable methods
- JAVA 文本框、密码框、标签
- CSS3 绘制360安仔小精灵[原创]
- sed命令使用记录
- xhtml知识及head部分名词解
- Install GTK in Ubuntu
- MySQL----数据的显示位宽
- ufldl学习笔记和编程作业:Feature Extraction Using Convolution,Pooling(卷积和汇集特征提取)
- zabbix 监控jvm
- [其他]Jboss容器开启调试模式
- 第四十节,requests模拟浏览器请求模块初识
- hdu_1848_Fibonacci again and again(博弈sg函数)
- string的内存管理问题
- Review: Command-line about Git
- 抓包工具Charles基本用法
- JavaScript数据类型之文本类型
- clone内容包含select2