Cette section décrit comment installer et configurer le service de Stockage par Blocs, de nom de code cinder, sur le nœud contrôleur. Ce service nécessite au minimum un nœud de stockage supplémentaire pour fournir les volumes aux instances.
Avant d’installer et configurer le service de Stockage par Blocs, vous devez créer une base de données, des credentials de service, et les points de terminaison d’API.
Pour créer la base de données, compléter ces étapes :
Utiliser le client d’accès à la base de données pour se connecter au serveur de base en tant qu’utilisateur root
:
# mysql
Créer la base de données cinder
:
MariaDB [(none)]> CREATE DATABASE cinder;
Accorder les bons droits d’accès à la base de données cinder
:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'CINDER_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'CINDER_DBPASS';
Remplacer CINDER_DBPASS
par un mot de passe approprié.
Quitter l’accès client de la base de données.
Sourcer les accréditations admin
pour obtenir l’accès aux commandes en ligne spécial-admin :
$ . admin-openrc
Pour créer les credentials du service, suivre les étapes suivantes :
Créer un utilisateur cinder
:
$ openstack user create --domain default --password-prompt cinder
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 9d7e33de3e1a498390353819bc7d245d |
| name | cinder |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
Ajouter le rôle admin
à l’utilisateur cinder
:
$ openstack role add --project service --user cinder admin
Note
Cette commande ne produit aucune sortie.
Créer les entités de service cinderv2
et cinderv3
:
$ openstack service create --name cinderv2 \
--description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | eb9fd245bdbc414695952e93f29fe3ac |
| name | cinderv2 |
| type | volumev2 |
+-------------+----------------------------------+
$ openstack service create --name cinderv3 \
--description "OpenStack Block Storage" volumev3
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | ab3bbbef780845a1a283490d281e7fda |
| name | cinderv3 |
| type | volumev3 |
+-------------+----------------------------------+
Note
Les services de Stockage par Blocs nécessitent deux entités de service.
Créer les endpoints API du service de Stockage par Blocs :
$ openstack endpoint create --region RegionOne \
volumev2 public http://controller:8776/v2/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | 513e73819e14460fb904163f41ef3759 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | eb9fd245bdbc414695952e93f29fe3ac |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(project_id)s |
+--------------+------------------------------------------+
$ openstack endpoint create --region RegionOne \
volumev2 internal http://controller:8776/v2/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | 6436a8a23d014cfdb69c586eff146a32 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | eb9fd245bdbc414695952e93f29fe3ac |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(project_id)s |
+--------------+------------------------------------------+
$ openstack endpoint create --region RegionOne \
volumev2 admin http://controller:8776/v2/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | e652cf84dd334f359ae9b045a2c91d96 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | eb9fd245bdbc414695952e93f29fe3ac |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(project_id)s |
+--------------+------------------------------------------+
$ openstack endpoint create --region RegionOne \
volumev3 public http://controller:8776/v3/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | 03fa2c90153546c295bf30ca86b1344b |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ab3bbbef780845a1a283490d281e7fda |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller:8776/v3/%(project_id)s |
+--------------+------------------------------------------+
$ openstack endpoint create --region RegionOne \
volumev3 internal http://controller:8776/v3/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | 94f684395d1b41068c70e4ecb11364b2 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ab3bbbef780845a1a283490d281e7fda |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller:8776/v3/%(project_id)s |
+--------------+------------------------------------------+
$ openstack endpoint create --region RegionOne \
volumev3 admin http://controller:8776/v3/%\(project_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | 4511c28a0f9840c78bacb25f10f62c98 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ab3bbbef780845a1a283490d281e7fda |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller:8776/v3/%(project_id)s |
+--------------+------------------------------------------+
Note
Les services de Stockage par Blocs nécessitent un endpoint pour chaque entité de service.
Installez les paquets :
# apt install cinder-api cinder-scheduler
Éditer le fichier /etc/cinder/cinder.conf
et faire les modifications suivantes :
Dans la section [database]
, configurez l’accès à la base de données :
[database]
# ...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
Remplacer CINDER_DBPASS
par le mot de passe choisi pour la base de données du Stockage par Blocs.
Dans la section [DEFAULT]
, configurer l’accès à la file de messages RabbitMQ
:
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
Remplacer RABBIT_PASS
par le mot de passe choisi pour le compte openstack
dans RabbitMQ
.
Dans la section [DEFAULT]
et [keystone_authtoken]
, configurer l’accès au service d’Identité :
[DEFAULT]
# ...
auth_strategy = keystone
[keystone_authtoken]
# ...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS
Remplacer CINDER_PASS
par le mot de passe choisi pour l’utilisateur cinder
dans le service d’Identité.
Note
Commenter ou supprimer toute autre option dans la section [keystone_authtoken]
.
Dans la section [DEFAULT]
, configurer l’option my_ip
pour utiliser l’adresse IP de l’interface de management du nœud contrôleur :
[DEFAULT]
# ...
my_ip = 10.0.0.11
Dans la section [oslo_concurrency]
, configurer le chemin des verrous :
[oslo_concurrency]
# ...
lock_path = /var/lib/cinder/tmp
Peupler la base de données de Stockage par Blocs :
# su -s /bin/sh -c "cinder-manage db sync" cinder
Note
Ignorer les messages d’obsolescence éventuels dans cette sortie écran.
Éditer le fichier /etc/nova/nova.conf
et ajouter ce qui suit :
[cinder]
os_region_name = RegionOne
Redémarrer le service d’API Compute
# service nova-api restart
Redémarrer les services de Stockage par Blocs :
# service cinder-scheduler restart
# service apache2 restart
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.