Openstack学习总结之七(存储组件部署)

前言

存储组件的作用是将虚拟机里面的数据持久化到存储设备中,如果重启虚拟机,或者虚拟机发生迁移,虚拟机设备里面的数据也可以继续使用。

OpenStack的存储功能主要包含三大块:对象存储、块存储、文件系统。其中对象存储(swift)和块存储(Cinder)是最成熟的两个组件。在生产环境中,几乎所有的关键业务系统都是通过访问块存储形式来存储数据的,所以,Cinder是使用最广泛的块存储组件。

一、Cinder组件介绍

Cinder组件是OpenStack存储功能中的块存储,它是在F版从nova中的nova-volume独立出来的一个关键项目。由于Cinder的开放式插件设计,使得市面上几乎所有的存储方案,都可以成为Cinder的存储后端。

Openstack学习总结之七(存储组件部署)
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

Openstack学习总结之七(存储组件部署)

vgcreate cinder_lvm /dev/sdb
vgdisplay

Openstack学习总结之七(存储组件部署)

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组件。

上一篇:5.2 OpenStack


下一篇:【OpenStack】菜鸟学OpenStack之部署Train(8)