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 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.

Pré-requis

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.

  1. 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.

  2. Sourcer les accréditations admin pour obtenir l’accès aux commandes en ligne spécial-admin:

    $ source admin-openrc.sh
    
  3. 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.

  4. 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.

Installer et configurer les composants

  1. Installez les paquets:

    # apt-get install cinder-api cinder-scheduler python-cinderclient
    
  1. 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
      
  2. Peupler la base de données de Stockage par Blocs:

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

Configurer Compute pour utiliser le Stockage par Blocs

  • Editer le fichier /etc/nova/nova.conf et ajouter ce qui suit:

    [cinder]
    os_region_name = RegionOne
    

Finaliser l’installation

  1. Redémarrer le service d’API Compute

    # service nova-api restart
    
  2. Redémarrer les services de Stockage par Blocs:

    # service cinder-scheduler restart
    # service cinder-api restart
    
  3. 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
    
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.