前言
存储组件的作用是将虚拟机里面的数据持久化到存储设备中,如果重启虚拟机,或者虚拟机发生迁移,虚拟机设备里面的数据也可以继续使用。
OpenStack的存储功能主要包含三大块:对象存储、块存储、文件系统。其中对象存储(swift)和块存储(Cinder)是最成熟的两个组件。在生产环境中,几乎所有的关键业务系统都是通过访问块存储形式来存储数据的,所以,Cinder是使用最广泛的块存储组件。
一、Cinder组件介绍
Cinder组件是OpenStack存储功能中的块存储,它是在F版从nova中的nova-volume独立出来的一个关键项目。由于Cinder的开放式插件设计,使得市面上几乎所有的存储方案,都可以成为Cinder的存储后端。
cinder-api:接收用户的存储信息请求,将该请求路由给存储节点处理;
cinder-scheduler:根据调度策略选择合适的后端存储节点来处理用户的请求;
cinder-volume:处理块存储服务的读取和写入请求,通过相关驱动程序架构直接与块存储服务进行交互;
cinder-database:存储相关的元数据信息;
- Cinder执行流程:
1)首先由Nova-Compute节点发起请求;
2)cinder-api接收到请求后,调用keystone组件进行认证;
3)如果认证通过,cinder-api就会将请求发送给queue;
4)queue通过cinder-scheduler从DB查询块存储信息,然后再将存储信息发送给cinder-volume;
5)cinder-volume根据存储信息创建数据卷,并更新DB;
二、Cinder部署
1. 准备工作
- 创建数据库
- 给用户授权访问数据库
- 安装软件
# 创建数据库
mysql -uroot -proot
CREATE DATABASE cinder;
# 授权
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';
# 验证
mysql -u 192.168.88.14 -u cinder -pcinder -e "show databases;"
# 安装软件
yum install -y openstack-cinder --nogpgchec
2. 配置Cinder
- 配置glance-api地址
- 配置keystone认证
- 配置rabbitmq连接
- 配置数据库连接
- 配置锁文件
cp /etc/cinder/cinder.conf{,.bak}
vim /etc/cinder/cinder.conf
[DEFAULT]
glance_api_servers = http://192.168.88.14:9292
auth_strategy = keystone
transport_url = rabbit://openstack:openstack@192.168.88.14:5672
[database]
connection = mysql+pymysql://cinder:cinder@192.168.88.14/cinder
[keystone_authtoken]
www_authenticate_uri = http://192.168.88.14:5000
auth_url = http://192.168.88.14:35357
memcached_servers = 192.168.88.14:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
3. 修改nova配置
- 添加cinder配置
[cinder]
os_region_name=RegionOne
完成配置后重启nova服务。
systemctl restart openstack-nova-api
systemctl status openstack-nova-api
4. 数据库信息同步
su -s /bin/sh -c "cinder-manage db sync" cinder
执行完成后,cinder数据库会自动生成一些数据库表。
mysql -h 192.168.88.14 -ucinder -pcinder -e "use cinder;show tables;"
5. 认证配置
- 创建cinder用户
- 给用户授权
- 创建service和endpoint
# 切换admin用户
source openstack-admin.sh
# 创建cinder用户
openstack user create --domain default --password cinder cinder
# 将cinder用户添加到service项目中,并赋予admin角色
openstack role add --project service --user cinder admin
# 为了能够兼容v2和v3,所以这里分别创建两个服务
openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
# 创建endpoint
openstack endpoint create --region RegionOne volumev2 public http://192.168.88.14:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 internal http://192.168.88.14:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 admin http://192.168.88.14:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 public http://192.168.88.14:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 internal http://192.168.88.14:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 admin http://192.168.88.14:8776/v3/%\(project_id\)s
配置完成后,启动cinder相关服务。
systemctl start openstack-cinder-api openstack-cinder-scheduler
systemctl status openstack-cinder-api openstack-cinder-scheduler
systemctl enable openstack-cinder-api openstack-cinder-scheduler
如果启动成功,可以通过openstack volume service list
命令查看cinder-scheduler服务是否启动成功。如果启动失败,可以查看scheduler.log
日志文件。
egrep ERROR /var/log/cinder/scheduler.log
三、计算节点部署
1. 准备工作
关闭compute主机,然后新增一块磁盘(大小10Gb),然后重新开机,并按照下面步骤完成相关工作。
- 执行格式化磁盘操作:
# 查看磁盘
fdisk -l
# 格式化磁盘
mkfs.ext4 /dev/sdb
- 安装软件:
yum install -y lvm2 --nogpgchec
yum install -y device-mapper-persistent-data --nogpgchec
安装完成后,启动lvm2-lvmetad服务。
systemctl start lvm2-lvmetad
systemctl status lvm2-lvmetad
systemctl enable lvm2-lvmetad
2. 创建物理卷和卷组
pvcreate /dev/sdb
pvdisplay
vgcreate cinder_lvm /dev/sdb
vgdisplay
3. 配置lvm过滤
cp /etc/lvm/lvm.conf{,.bak}
vim /etc/lvm/lvm.conf
# 在devices下添加一个过滤
filter = [ "a/sdb/", "r/.*/" ]
配置完成后重启lvm2-lvmetad服务。
systemctl restart lvm2-lvmetad
systemctl status lvm2-lvmetad
4. 安装和配置cinder
yum install -y openstack-cinder --nogpgchec
yum install -y targetcli --nogpgchec
yum install -y python-keystone --nogpgchec
yum install -y python-rtslib --nogpgchec
安装完成后,修改cinder配置文件。
cp /etc/cinder/cinder.conf{,.bak}
vim /etc/cinder/cinder.conf
[DEFAULT]
glance_api_servers = http://192.168.88.14:9292
auth_strategy = keystone
enabled_backends = lvm
transport_url = rabbit://openstack:openstack@192.168.88.14:5672
my_ip = 192.168.88.15
[database]
connection = mysql+pymysql://cinder:cinder@192.168.88.14/cinder
[keystone_authtoken]
www_authenticate_uri = http://192.168.88.14:5000
auth_url = http://192.168.88.14:35357
memcached_servers = 192.168.88.14:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
# 这里cinder_lvm对应之前创建卷组的名字
volume_group = cinder_lvm
iscsi_protocol = iscsi
target_helper = lioadm
配置完成后,启动数据卷服务。
systemctl start openstack-cinder-volume target
systemctl status openstack-cinder-volume target
systemctl enable openstack-cinder-volume target
在控制节点上检查数据卷服务是否启动成功。
openstack volume service list
总结
这部分完成了cinder存储组件的部署,接下来我们介绍如何使用cinder组件。