离线部署openstack 2024.1 cinder

发布于:2025-06-13 ⋅ 阅读:(20) ⋅ 点赞:(0)

控制节点存储服务

离线下载

apt-get install --download-only cinder-api cinder-scheduler cinder-volume python3-cinder python3-ceph python3-rbd python3-cephfs

mkdir /controller/cinder
mv /var/cache/apt/archives/*.deb /controller/cinder/
dpkg -i /controller/cinder/*.deb

在一个控制节点操作

CREATE DATABASE cinder;

CREATE USER 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS';
CREATE USER 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS';

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

FLUSH PRIVILEGES;
source ~/admin-openrc
# 创建cinder用户,赋予admin角色
openstack user create --domain default --password <CINDER_PASS> cinder
openstack role add --project service --user cinder admin
# 创建服务实体
openstack service create --name cinder --description "OpenStack Block Storage" volume
openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
# API端点
openstack endpoint create --region RegionOne volumev3 public http://<VIP>:8776/v3/%(project_id)s
openstack endpoint create --region RegionOne volumev3 internal http://<VIP>:8776/v3/%(project_id)s
openstack endpoint create --region RegionOne volumev3 admin http://<VIP>:8776/v3/%(project_id)s

在三个控制节点操作

  • 主要配置
vim /etc/cinder/cinder.conf

[DEFAULT]
transport_url = rabbit://cinder:CINDER_PASS@ip1,ip2,ip3
auth_strategy = keystone
# 本机IP,其余节点填对应IP
my_ip = ip1
enabled_backends = ceph
glance_api_servers = http://<VIP>:9292
default_volume_type = ceph

[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@<VIP>/cinder

[keystone_authtoken]
www_authenticate_uri = http://<VIP>:5000
auth_url = http://<VIP>:5000
memcached_servers = ip1:11211,ip2:11211,ip3:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = cinder
password = CINDER_PASS
service_token_roles_required = true
service_token_roles = admin
region_name = RegionOne

# 后端名称,与enabled_backends一致
[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
rbd_pool = volumes
# 用于libvirt对接,下面说明如何获取
rbd_secret_uuid = <Ceph RBD Secret UUID>
volume_backend_name = ceph
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = 30
report_discard_supported = true

# 如果需要多池,可以继续配置

使libvirt识别cinder密钥

  • 确保文件在节点可用:
  • /etc/ceph/ceph.conf
  • /etc/ceph/client.cinder.keyring
chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
chmod 640 /etc/ceph/ceph.client.cinder.keyring
# 生成uuid
uuidgen

# 创建密钥配置文件
vim secret.xml
<secret ephemeral='no' private='no'>
<uuid>上面的uuid</uuid>
  <usage type='ceph'>
    <name>client.cinder secret</name>
  </usage>
</secret>
# 按照配置文件导入密钥
virsh secret-define --file secret.xml
# 查看cinder用户的密钥
ceph auth get-key client.cinder
# 注入密钥
virsh secret-set-value --secret <uuid> --base64 <cinder.key>

在一个控制节点操作

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

在三个控制节点操作

systemctl start cinder-scheduler cinder-api cinder-volume
systemctl enable --now cinder-scheduler cinder-api cinder-volume

source ~/admin-openrc
openstack volume service list
openstack catalog list

计算节点存储服务

离线下载

apt-get --download-only install cinder-volume python3-cinder python3-ceph python3-rbd python3-cephfs

mkdir /compute/cinder
mv /var/cache/apt/archives/*.deb /compute/cinder/
dpkg -i /compute/cinder/*.deb

在计算节点操作

vim /etc/cinder/cinder.conf

[DEFAULT]
enabled_backends = ceph
auth_strategy = keystone
# 本机IP,其余节点填对应IP
my_ip = ip1

[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@<VIP>/cinder

[keystone_authtoken]
www_authenticate_uri = http://<VIP>:5000
auth_url = http://<VIP>:5000
memcached_servers = ip1:11211,ip2:11211,ip3:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = cinder
password = CINDER_PASS
service_token_roles_required = true
service_token_roles = admin
region_name = RegionOne

[oslo_messaging_rabbit]
transport_url = rabbit://cinder:CINDER_PASS@ip1,ip2,ip3

# 后端名称,与enabled_backends一致
[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_pool = volumes
rbd_user = cinder
rbd_secret_uuid = <CINDER_CEPH_SECRET_UUID>
volume_backend_name = ceph
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
report_discard_supported = true

使libvirt识别cinder密钥

  • 确保文件在节点可用:
  • /etc/ceph/ceph.conf
  • /etc/ceph/client.cinder.keyring
chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
chmod 640 /etc/ceph/ceph.client.cinder.keyring
# 创建密钥配置文件
vim secret.xml
<secret ephemeral='no' private='no'>
<uuid>与控制节点的cinder的uuid相同</uuid>
  <usage type='ceph'>
    <name>client.cinder secret</name>
  </usage>
</secret>
# 按照配置文件导入密钥
virsh secret-define --file secret.xml
# 查看cinder用户的密钥
ceph auth get-key client.cinder
# 注入密钥
virsh secret-set-value --secret <uuid> --base64 <cinder.key>
systemctl start cinder-volume && systemctl enable cinder-volume

source ~/admin-openrc
cinder service-list