Installer et configurer le nœud contrôleur

Installer et configurer le nœud contrôleur

Cette section décrit comment installer et configurer le service de Stockage Bloc, nom de code cinder, sur le contrôleur. Ce service nécessite au minimum un nœud de stockage supplémentaire pour fournir les volumes aux instances.

Pré-requis

Avant d’installer et configurer le service de Stockage Bloc, vous devez créer une base de données, des crédentiels de service et les endpoints API.

  1. Pour créer la base de données, réalisez les étapes suivantes :

    • Utilisez le client d’accès à la base de données pour vous connecter au serveur de base de données en tant qu’utilisateur root:

      $ mysql -u root -p
      
    • Créer la base de données cinder :

      CREATE DATABASE cinder;
      
    • Accorder les droits d’accès approprié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 approprié.

    • Quitter le client d’accès à la base de données.

  2. Sourcer les crédentiels admin pour accéder aux commandes en ligne réservées à l’administrateur :

    $ . admin-openrc
    
  3. Pour créer les crédentiels du service, réalisez 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 | e0353a670a9e496da891347c589539e9 |
      | 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

    Les services de Stockage Bloc nécessitent deux entités de service.

  4. Créer les endpoints API du service de Stockage Bloc :

    $ 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

    Les services de Stockage Bloc nécessitent un endpoint pour chaque entité de service.

Installer et configurer les composants

  1. Installer les packages :

    # yum install openstack-cinder
    
  1. Éditer le fichier /etc/cinder/cinder.conf et réaliser les actions suivantes :

    • Dans la section [database], configurer 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 Bloc.

    • Dans les sections [DEFAULT] et [oslo_messaging_rabbit], configurer l’accès au service de files de messages RabbitMQ:

      [DEFAULT]
      ...
      rpc_backend = rabbit
      
      [oslo_messaging_rabbit]
      ...
      rabbit_host = controller
      rabbit_userid = openstack
      rabbit_password = RABBIT_PASS
      

      Remplacez RABBIT_PASS par le mot de passe que vous avez attribué au compte openstack dans RabbitMQ.

    • Dans les sections [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 d’administration du contrôleur:

      [DEFAULT]
      ...
      my_ip = 10.0.0.11
      
    • Dans la section [oslo_concurrency], configurer le chemin du verrou :

      [oslo_concurrency]
      ...
      lock_path = /var/lib/cinder/tmp
      
  1. Peupler la base de données de Stockage Bloc :

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

    Note

    Ignorer les éventuels messages obsolètes.

Configurer le service Compute pour utiliser le Stockage Bloc

  • Éditer le fichier /etc/nova/nova.conf et y ajouter ce qui suit :

    [cinder]
    os_region_name = RegionOne
    

Finaliser l’installation

  1. Redémarrer le service d’API Compute :

    # systemctl restart openstack-nova-api.service
    
  2. Démarrer les services de Stockage Bloc et les configurer pour être lancés au démarrage du système :

    # systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
    # systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
    
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.