3.9 控制节点部署Cinder

摘要
本节主要介绍在 OpenStack 控制节点上部署和配置 Cinder(块存储服务) 的完整过程。Cinder 负责为虚拟机提供持久化的块存储(Volume),它的作用类似于我们在电脑上插拔的移动硬盘。

在安装配置 Cinder 前,我们需要先在 MariaDB 中为它创建一个专属的数据库,并配置相应的访问权限。

1)以 root 用户身份连接到数据库服务器,连接时请输入在环境准备阶段安装 MariaDB 时设置的密码(admin123)。

bash

mysql -u root -p

2)创建 cinder 数据库。

sql

CREATE DATABASE cinder;

1779849920498

3)创建 cinder 数据库用户,并为其授予所有权限,密码同样设置为 cinder 以方便记忆。

sql

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';

1779849958905

4)操作完成后,退出数据库。

sql

exit

和其它组件一样,Cinder 也需要在 Keystone(身份认证服务)中注册自己的信息。由于 Cinder 支持不同版本的 API(v2 和 v3),我们需要分别为它们创建服务实体和端点。

1)执行管理员环境变量脚本,获取 OpenStack 的管理员命令行操作权限。

bash

source ./admin-openstack.sh

2)在 default 域内创建 cinder 用户(密码设为 cinder)。

bash

openstack user create cinder --domain default --password cinder 
提示
为了方便自动化部署,这里直接使用 --password cinder 参数代替原文档中的 --password-prompt 交互式输入。

1779850118804

3)为 cinder 用户在 service 项目中添加管理员(admin)角色。

bash

openstack role add admin --project service --user cinder 

4)创建 cinderv2cinderv3 两个版本的服务实体,分别对应 volumev2volumev3 服务类型。

bash

openstack service create volumev2 --name cinderv2 --description "OpenStack Block Storage" 
openstack service create volumev3 --name cinderv3 --description "OpenStack Block Storage" 

1779850218013

1779850239690

5)创建块存储服务的 API 服务端点(Endpoint)。我们需要为 volumev2volumev3 分别创建公共、内部和管理三个级别的端点。

a. 创建 volumev2 端点:

bash

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

b. 创建 volumev3 端点:

bash

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
语法注意
命令中的 %\(project_id\)s 是一个变量占位符,请确保命令拼写完全正确,包括反斜杠 \ 的转义。

接下来我们需要安装 Cinder 的核心组件,并配置它连接到数据库、消息队列和身份认证服务。

1)安装 Cinder 服务相关组件:

bash

yum install openstack-cinder -y

2)编辑 /etc/cinder/cinder.conf 文件,文件配置内容如下:

ini

# 配置数据库访问
[database]
connection = mysql+pymysql://cinder:cinder@controller/cinder

# 配置 RabbitMQ 消息队列访问
[DEFAULT]
transport_url = rabbit://openstack:openstack@controller
# 配置控制节点的管理 IP 地址
# 修改!!!!!
my_ip = 192.168.16.100
# 配置身份服务访问
auth_strategy = keystone

# 配置身份服务访问的具体凭据
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = cinder

# 配置锁定路径
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
IP地址配置
配置文件中的 my_ip = 192.168.16.100 此处 IP 地址应为你自己控制节点的实际管理 IP 地址,请根据实际情况修改。

3)同步块存储数据库:

bash

su -s /bin/sh -c "cinder-manage db sync" cinder

1779850846243

4)验证数据库同步是否成功(可选)。

bash

mysql -ucinder -pcinder -e "use cinder ; show tables;"

如果输出了一系列表名(如 attachment_specsbackup_metadata 等),说明数据库同步成功。

1779850863577

我们还需要告诉 Nova 计算服务,让它知道如何连接和使用块存储服务。

编辑控制节点上的 /etc/nova/nova.conf 文件,增加以下内容:

ini

[cinder]
os_region_name = RegionOne

1)由于我们修改了 Nova 的配置文件,需要重启计算 API 服务使其生效:

bash

systemctl restart openstack-nova-api

2)启动块存储服务,并配置为随系统启动:

bash

systemctl start openstack-cinder-api openstack-cinder-scheduler
systemctl enable openstack-cinder-api openstack-cinder-scheduler
完成
至此,控制节点上的 Cinder 块存储服务部署与配置完成!