5.块存储服务cinder

块存储服务cinder

块存储服务cinder为实例提供块存储

本身并不提供存储技术,都是通过调用其他的存储,例如NFS,LVM,ceph等,真正提供存储的是这些

cinder-api :接收外部的api请求

cinder-volume:提供存储空间

cinder-scheduler:调度器,决定将要分配的空间由哪一个cinder-volume提供

cinder-backup:备份存储

控制节点操作:

1.数据库创库授权
复制代码
CREATE DATABASE cinder;

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
  IDENTIFIED BY 'CINDER_DBPASS';
  
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
  IDENTIFIED BY 'CINDER_DBPASS';
2.在keystone上创建用户,关联角色
复制代码
openstack user create --domain default --password CINDER_PASS cinder
openstack role add --project service --user cinder admin

3.创建 cinder 和 cinderv2 服务实体,注册api

复制代码
openstack service create --name cinder \
  --description "OpenStack Block Storage" volume
复制代码
openstack service create --name cinderv2 \
  --description "OpenStack Block Storage" volumev2

创建块存储服务的 API

复制代码
openstack endpoint create --region RegionOne \
  volume public http://controller:8776/v1/%\(tenant_id\)s
复制代码
openstack endpoint create --region RegionOne \
  volume internal http://controller:8776/v1/%\(tenant_id\)s
复制代码
openstack endpoint create --region RegionOne \
  volume admin http://controller:8776/v1/%\(tenant_id\)s
复制代码
 openstack endpoint create --region RegionOne \
  volumev2 public http://controller:8776/v2/%\(tenant_id\)s
复制代码
openstack endpoint create --region RegionOne \
  volumev2 internal http://controller:8776/v2/%\(tenant_id\)s
复制代码
openstack endpoint create --region RegionOne \
  volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
3.yum安装软件包

yum install openstack-cinder -y

4.编辑配置文件

vim /etc/cinder/cinder.conf

复制代码
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

[DEFAULT]
rpc_backend = rabbit

[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

[DEFAULT]
auth_strategy = keystone

[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS

[DEFAULT]
my_ip = 控制节点IP

[oslo_concurrency]
lock_path = /var/lib/cinder/tmp

5.同步数据库
su -s /bin/sh -c "cinder-manage db sync" cinder

验证
mysql cinder -e 'show tables;'

6.修改控制节点的计算服务配置文件

vim /etc/nova/nova.conf

复制代码
[cinder]
os_region_name = RegionOne
7.启动服务

重启计算服务
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

验证:

cinder service-list

cinder对接lvm后端存储

在存储节点上执行的操作
安装 LVM 包

yum install lvm2 -y

添加两块硬盘后重新扫描硬盘

echo '- - -' >/sys/class/scsi_host/host0/scan

添加硬盘后创建物理卷

pvcreate /dev/sdb

pvcreate /dev/sdc

创建卷组

vgcreate cinder-ssd /dev/sdb

vgcreate cinder-sata /dev/sdc

只有实例可以访问块存储卷组

底层的操作系统管理这些设备并将其与卷关联。默认情况下,LVM卷扫描工具会扫描/dev 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用LVM,扫描工具检测到这些卷时会尝试缓存它们,可能会在底层操作系统和项目卷上产生各种问题。您必须重新配置LVM,让它只扫描包含cinder-volume卷组的设备。编辑/etc/lvm/lvm.conf文件并完成下面的操作:

添加过滤器避免失去对主机的权限

vim /etc/lvm/lvm.conf

安装并配置组件

yum install openstack-cinder targetcli python-keystone -y

修改配置文件

vim /etc/cinder/cinder.conf

复制代码
在 [database] 部分,配置数据库访问:
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

在 "[DEFAULT]" 和 "[oslo_messaging_rabbit]"部分,配置 "RabbitMQ" 消息队列访问:
[DEFAULT]
rpc_backend = rabbit

[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

在 "[DEFAULT]" 和 "[keystone_authtoken]" 部分,配置认证服务访问:
[DEFAULT]
auth_strategy = keystone

[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS

在 [DEFAULT] 部分,配置 my_ip 选项:
[DEFAULT]
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS

在``[lvm]``部分,配置LVM后端以LVM驱动结束,卷组``cinder-volumes`` ,iSCSI 协议和正确的 iSCSI服务:
[ssd]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = 此处改为自己创建的卷组(cinder-ssd)
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = ssd(配置多个后端存储的时候,进行区分)

[sata]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = 此处改为自己创建的卷组(cinder-sata)
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = sata(配置多个后端存储的时候,进行区分)


在 [DEFAULT] 部分,启用 自己配置的 后端(这里我配置的ssd,sata):
[DEFAULT]
enabled_backends = ssd,sata

在 [DEFAULT] 区域,配置镜像服务 API 的位置:

[DEFAULT]
glance_api_servers = http://此处如果迁移过glance服务的话要改成新的glance地址:9292

在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
启动服务
复制代码
systemctl enable openstack-cinder-volume.service target.service
systemctl start openstack-cinder-volume.service target.service
启动后进行验证

在控制节点查看
cinder service-list

如果出现state是down的情况,先检查控制节点与计算节点之间的时间同步服务,确认时间是否都同步

时间同步之后,再次进行确认

复制代码
OpenStack 服务状态的 up/down 判定逻辑:
服务会定期(report_interval,默认 10s)向数据库更新心跳时间;如果当前时间 - 最后心跳时间 > service_down_time(默认 60s),状态就会被标记为 down。
如果 compute2 节点和 controller 节点时间不同步(比如 NTP 服务异常、时间差超过 60s),就会导致心跳超时,服务被判定为 down。
在web端操作创建卷

在存储节点查看lvs

注意:卷的大小只能往大调不能往小调

创建卷类型


通过之前配置的键值进行区分

同样的步骤创建另外一个卷类型

再次创建卷

创建不同的类型

将创建好的卷连接给实例使用

选择要连接到的实例

进入实例验证

可以看到多了一块盘

格式化新加的盘

挂载

相关推荐
中国IT2 天前
OpenStack云计算部署操作手册 目录简介
云计算·openstack
源远流长jerry4 天前
在云环境中部署 NFV:OpenStack 讲解
数据库·openstack
泡沫·10 天前
Openstack存储管理
openstack
泡沫·10 天前
OpenStack计算管理-nova
openstack
泡沫·11 天前
OpenStack管理
openstack
做咩啊~11 天前
4.镜像服务glance迁移
openstack
lwx91485213 天前
openstack命令详解
openstack
哈里谢顿18 天前
某云平台开发面试总结
openstack
xy123061 个月前
OpenStack Train 部署实战(三)控制节点--keystone服务
centos·openstack