控制节点存储服务
离线下载
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
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
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
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
[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
rbd_pool = volumes
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
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
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
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
[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
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