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 moins 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, un service de credentials, et des 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 -u root -p
Créer la base de données cinder :
CREATE DATABASE cinder;
Accorder les bons droits d’accès à la base de données cinder:
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'CINDER_DBPASS';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'CINDER_DBPASS';
Remplacer CINDER_DBPASS par un mot de passe convenable.
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:
$ source admin-openrc.sh
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 | bb279f8ffc444637af38811a5e1f0562 |
| name | cinder |
+-----------+----------------------------------+
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 cinder et cinderv2:
$ openstack service create --name cinder \
--description "OpenStack Block Storage" volume
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | ab3bbbef780845a1a283490d281e7fda |
| name | cinder |
| type | volume |
+-------------+----------------------------------+
$ openstack service create --name cinderv2 \
--description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | eb9fd245bdbc414695952e93f29fe3ac |
| name | cinderv2 |
| type | volumev2 |
+-------------+----------------------------------+
Note
Le service de Stockage par Blocs nécessite deux entités de service.
Créer les points de terminaison d’API du service de Stockage par Blocs:
$ openstack endpoint create --region RegionOne \
volume public http://controller:8776/v1/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 03fa2c90153546c295bf30ca86b1344b |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ab3bbbef780845a1a283490d281e7fda |
| service_name | cinder |
| service_type | volume |
| url | http://controller:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
volume internal http://controller:8776/v1/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 94f684395d1b41068c70e4ecb11364b2 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ab3bbbef780845a1a283490d281e7fda |
| service_name | cinder |
| service_type | volume |
| url | http://controller:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
volume admin http://controller:8776/v1/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 4511c28a0f9840c78bacb25f10f62c98 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ab3bbbef780845a1a283490d281e7fda |
| service_name | cinder |
| service_type | volume |
| url | http://controller:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
volumev2 public http://controller:8776/v2/%\(tenant_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/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
volumev2 internal http://controller:8776/v2/%\(tenant_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/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
volumev2 admin http://controller:8776/v2/%\(tenant_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/%(tenant_id)s |
+--------------+-----------------------------------------+
Note
Le service de Stockage par Blocs nécessite un point de terminaison pour chaque entité de service.
Installez les paquets:
# apt-get install cinder-api cinder-scheduler python-cinderclient
Editer 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 les sections [DEFAULT] et [oslo_messaging_rabbit], configurer l’accès à la file de message RabbitMQ:
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
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
auth_plugin = password
project_domain_id = default
user_domain_id = 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
(Optionnel) Pour faciliter la résolution des problèmes, activer la verbosité des logs dans la section [DEFAULT] :
[DEFAULT]
...
verbose = True
Peupler la base de données de Stockage par Blocs:
# su -s /bin/sh -c "cinder-manage db sync" cinder
Editer 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 cinder-api restart
Par défaut, les packages Ubuntu créent une base de données SQLite.
Comme cette configuration utilise un serveur de base de données SQL, le fichier de base de données SQLite peut être supprimé:
# rm -f /var/lib/cinder/cinder.sqlite
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.