GNU/Linux >> Tutoriels Linux >  >> Cent OS

Un guide simple pour installer OpenStack Icehouse sur CentOS - Architecture à deux nœuds

Le mot "OpenStack" est très populaire de nos jours. Vous avez peut-être entendu ce mot, même si vous ne travaillez pas dans le domaine du Cloud computing. Je travaille dans le domaine de l'informatique en grille depuis 10 ans et je n'ai jamais compris l'agitation derrière OpenStack. Mais ce mot à la mode n'arrêtait pas de me tapoter les oreilles partout où j'allais - Sérieusement, dans mon bureau, des conférences et des sites Web populaires qui ne cessaient de promouvoir OpenStack. Enfin, j'ai été poussé (oui, avec force par mon patron) dans le monde d'OpenStack et ces grandes questions m'ont pesé :qu'est-ce qu'Openstack, comment est-il implémenté et comment ça marche ? Eh bien, la seule façon de comprendre OpenStack est de commencer par une installation.

À première vue, démarrer avec OpenStack semblait facile, mais ce n'est pas le cas. Oui, le site officiel d'OpenStack a une bonne documentation, mais le vrai problème auquel j'ai été confronté était les terminologies utilisées – Horizon, Glance, Keystone, Nova, Neutron, Swift, Heat, Cinder, Ceilometer….Uff, pourquoi diable ils sont nommé comme ça ? Et puis, il y avait plusieurs autres termes liés à l'installation - RDO, Packstack, Devstack, différentes architectures (un nœud, deux nœuds et multinœud), réseau hérité, etc. Sérieusement, j'ai dû revenir à Google pour comprendre tout cela (et ce gars a fait un excellent travail). Eh bien, si vous me demandez d'écrire sur mon expérience avec OpenStack, cet article comptera 20 pages. Je vais donc m'arrêter ici et passer au sujet.

Table des matières

  • Présentation d'OpenStack
  • Architecture du banc d'essai
  • Installer et configurer NTP sur le contrôleur et le nœud de calcul
  • Installer et configurer MySQL sur le contrôleur et le nœud de calcul
  • Installer et configurer Apache Qpid sur le contrôleur et le nœud de calcul
  • Installer les packages de base OpenStack Icehouse sur le contrôleur et le nœud de calcul
  • Installer KeyStone sur le nœud du contrôleur
  • Installer Glance sur le nœud du contrôleur
  • Installer Nova sur le nœud du contrôleur
  • Installer Nova-Networking sur le nœud du contrôleur
  • Installer le tableau de bord sur le nœud du contrôleur
  • Installer Nova sur le nœud de calcul
  • Installer Nova-Networking sur le nœud de calcul
  • Créer une instance
  • Se connecter à l'instance

Qu'est-ce qu'OpenStack ?

OpenStack est une plate-forme de cloud computing open source, qui fournit une infrastructure en tant que service (IaaS). Si vous êtes un expert en informatique Grid, alors OpenStack est quelque chose de similaire au middleware Grid populaire tel que Globus Toolkit, Glite, Oracle Grid Engine, Unicore etc… OpenStack est essentiellement un middleware, qui vous permet de gérer les ressources de cloud computing plus efficacement et bien sûr , efficacement.

Services OpenStack

  • Horizon  :service de tableau de bord qui fournit un portail Web pour interagir et gérer les services sous-jacents, les instances virtuelles, les utilisateurs et le réseau.
  • Nouvelle  :un service de calcul qui aide à gérer les instances de calcul, ce qui inclut la création, la planification, le démarrage et l'arrêt d'une machine virtuelle.
  • clé de voûte  :Un service d'identité qui fournit l'authentification et l'autorisation.
  • Neutrons  :un service réseau qui vous permet de créer et de gérer un réseau.
  • Regard  :un service d'imagerie qui permet de stocker et de récupérer des images de machines virtuelles.
  • Base de données service :Fournit une base de données en tant que service.
  • Swift et Cinder  :Fournit un stockage en tant que service.
  • Télémétrie  :un service qui vous aide à gérer la facturation et l'analyse comparative.
  • Il existe de nombreux autres services... pour en savoir plus, rendez-vous sur openstack.org.

Architecture

Si vous êtes débutant, l'idéal est de commencer avec une architecture à deux nœuds : un nœud appelé "Contrôleur" et l'autre "Calcul". Dans ce tutoriel, nous allons installer la version OpenStack Icehouse sur le système d'exploitation CentOS 6.6. Les services à installer sur le nœud de contrôleur sont Keystone, Glance, Nova, Networking (legacy nova-networking), Horizon et le nœud de calcul aura Nova et Networking (legacy nova-networking).

Remarque : Débutant OpenStack ? Il est conseillé de commencer avec le réseau hérité Nova. Comprendre et configurer "Neutron" est une grande question à ce stade. Cependant, vous devriez envisager de migrer de l'ancien réseau vers Neutron ultérieurement.

Vous trouverez ci-dessous le schéma qui illustre mon banc d'essai. Toutes mes étapes d'installation sont basées sur l'architecture ci-dessous.

Remarque : Étant donné que nous allons utiliser Legacy Nova-network, nous n'avons besoin que d'une seule interface dans le nœud de contrôleur à des fins de gestion et de deux interfaces sur le nœud de calcul (une pour la gestion qui relève du même réseau de nœud de contrôleur et l'autre interface est externe, ce qui sera utilisé pour les communications VM).

Eh bien, nous sommes prêts à poursuivre les étapes d'installation.

Comment installer et configurer OpenStack Icehouse sur CentOS ?

Je vais utiliser,

  • nom d'hôte du contrôleur ' comme nom d'hôte du nœud de contrôleur et "compute-hostname ” comme nom d'hôte du nœud de calcul.
  • ‘10.180.10.132’ (IP de gestion) pour le nœud de contrôleur et ‘10.180.10.134’ (IP de gestion) pour le nœud de calcul. L'adresse IP externe du nœud de calcul sera "10.180.14.151"

Remarque : N'oubliez pas de les remplacer par les adresses FQDN ou IP correspondantes.

  • Pendant l'installation, où que vous trouviez "setpassword ‘, remplacez-le par le mot de passe de service correspondant.
  • J'utiliserai "YUM" pour la majeure partie de l'installation. Assurez-vous donc que les machines sont connectées à Internet. Si vous rencontrez des problèmes lors de la configuration de yum, les guides ci-dessous vous seront d'une grande aide.
    • Comment configurer le référentiel Yum sur CentOS
    • Les commandes Yum que vous devez connaître.
  • La sortie des quelques commandes a été tronquée pour éviter toute confusion et réduire la longueur de ce didacticiel.

L'installation de tout composant (ou service) dans OpenStack implique les étapes ci-dessous :



Installer et configurer NTP sur le contrôleur et le nœud de calcul

Vous pouvez rapidement apprendre à installer et à configurer le protocole Network Time Protocol sur votre contrôleur et vos nœuds de calcul.

NTP configuré et service ntpd démarré ? Alors revenons à cet article…

Mettre à jour le système d'exploitation sur le contrôleur et le nœud de calcul

Il est toujours conseillé de mettre à niveau le système d'exploitation avant d'installer un composant. Cela résoudra de nombreux problèmes de dépendance aux packages.

[root@controller-hostname ]# yum update[root@compute-hostname ]# yum update


Installer la base de données MySQL sur le contrôleur et le nœud de calcul

Remarque : MySQL s'appelle désormais "Mariadb".

[root@controller-hostname ]# yum install mysql mysql-server MySQL-python[root@compute-hostname ]# yum install mysql mysql-server MySQL-python

Vous devrez regarder ‘/etc/my.cnf ‘ pour s'assurer que le service MySQL se lie à l'adresse IP de gestion du contrôleur et des nœuds de calcul.

Sur le nœud du contrôleur :

[root@controller-hostname ]# vi /etc/my.cnf[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlbind-address=10.180. 10.132 liens symboliques=0[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

Sur le nœud de calcul :

[root@compute-hostname ]# vi /etc/my.cnf[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlbind-address=10.180. 10.134 liens symboliques=0[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

Démarrez le serveur mysql :

[root@controller-hostname ~]# service mysqld start[root@compute-hostname ~]# service mysqld start

Configurer MySQL…

[root@controller-hostname ~]# mysql_install_db[root@compute-hostname ~]# mysql_install_db

Il est toujours conseillé d'exécuter 'mysql_secure_installation ' après l'installation de MySQL.

[root@controller-hostname ~]# mysql_secure_installation[root@compute-hostname ~]# mysql_secure_installation

Si vous n'êtes pas sûr de ce que fait mysql_secure_installation, voici un guide rapide qui l'explique en détail.

Installez les packages Base OpenStack Icehouse sur les nœuds Controller et Compute

Configurez le référentiel yum et installez les packages Icehouse de base. Cette étape doit être effectuée à la fois sur le contrôleur et sur les nœuds de calcul.

Sur le nœud du contrôleur :

[root@controller-hostname ~]# yum install yum-plugin-priorities[root@controller-hostname ~]# yum install http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/rdo- release-icehouse-4.noarch.rpm[root@controller-hostname ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Icehouse[root@controller-hostname ~]# yum -y install http://fedora.cu.be/epel/7/x86_64/e/epel-release-7-2.noarch.rpm[root@controller-hostname ~]# yum install openstack-utils openstack-selinux 

Sur le nœud de calcul :

[root@compute-hostname ~]# yum install yum-plugin-priorities[root@compute-hostname ~]# yum install http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/rdo- release-icehouse-4.noarch.rpm[root@compute-hostname ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Icehouse[root@compute-hostname ~]# yum -y install http://fedora.cu.be/epel/7/x86_64/e/epel-release-7-2.noarch.rpm[root@compute-hostname ~]# yum install openstack-utils openstack-selinux 


Installer le service Message Broker sur le nœud du contrôleur

Les services OpenStack ont ​​besoin d'un courtier de messages pour leur communication. Actuellement, OpenStack prend en charge - Rabbit-mq et Apache Qpid. Dans ce tutoriel, nous allons installer Qpid-server.

Apache Qpid permet aux services d'envoyer et de recevoir des messages via AMQP (Advanced Message Queuing Protocol).

[root@controller-hostname ~]# yum install qpid-cpp-server

Configurer qpid-cpp-server pour fonctionner sans avoir besoin d'authentification (cela facilitera notre processus d'installation. Mais vous devez activer l'authentification pour des raisons de sécurité)

[root@controller-hostname ~]# echo "auth=no">/etc/qpid/qpidd.conf

Démarrer le courtier de messages…

[root@controller-hostname ~]# service qpidd start

Installation et configuration de Keystone (service d'identité) sur le nœud du contrôleur

Comme je l'ai dit plus tôt, le service Keystone joue un rôle majeur dans OpenStack - fournissant l'authentification et l'autorisation. Cela signifie également que chaque service d'OpenStack (y compris le service d'identité) doit être enregistré auprès de KeyStone.

Installez les packages Keystone…

[root@controller-hostname ~]# yum install openstack-keystone python-keystoneclient

Créer une base de données pour la clé de voûte , afin que le service puisse stocker son état et ses données…

[root@controller-hostname ~]# mysql -u root -pmysql> CREATE DATABASE keystone;mysql> ACCORDER TOUS LES PRIVILÈGES SUR keystone.* À 'keystone'@'controller-hostname' IDENTIFIÉ PAR 'setpassword';mysql> ACCORDER TOUS LES PRIVILÈGES SUR keystone.* À 'keystone'@'%' IDENTIFIÉ PAR 'setpassword ';

Remarque : N'oubliez pas de remplacer "setpassword" par votre propre mot de passe pour la clé de voûte.

Créer des tables pour la base de données Keystone…

[root@controller-hostname ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

Maintenant, dites à Keystone que c'est ce que vous devez utiliser pour établir une connexion à la base de données

[root@controller-hostname ~]# openstack-config --set /etc/keystone/keystone.conf connexion à la base de données mysql://keystone:setpassword@controller-hostname/keystone

Remarque : N'oubliez pas de remplacer "setpassword" par le mot de passe approprié de "keystone"@mysql

Créez un jeton d'authentification pour authentifier d'autres services avec Keystone. Pour ce faire, nous utiliserons openssl pour générer une valeur HEX aléatoire et la stocker dans une variable appelée 'ADMIN_TOKEN

[root@controller-hostname ~]# ADMIN_TOKEN=$(openssl rand -hex 10)[root@controller-hostname ~]# echo $ADMIN_TOKENe9393f7ac1886f0c1a20

Remarque : Faites une copie du jeton généré, car vous en aurez besoin plus tard (pas obligatoire, si vous n'allez pas tuer votre session de terminal à mi-chemin)

Configurer la clé de voûte pour utiliser le jeton d'authentification généré à l'étape précédente…

[root@controller-hostname ~]# openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN

Configurer Keystone pour fournir des jetons d'authentification basés sur PKI.

[root@controller-hostname ~]# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone

Définir la propriété et l'autorisation pour l'utilisateur "clé de voûte"…

[root@controller-hostname ~]# chown -R keystone:keystone /etc/keystone/ssl[root@controller-hostname ~]# chmod -R o-rwx /etc/keystone/ssl

Tout est fait pour la clé de voûte, commençons le service…

[root@controller-hostname ~]# service openstack-keystone start

Assurez-vous que le service fonctionne vraiment en vérifiant son statut

[root@controller-hostname ~]# service openstack-keystone statuskeystone (pid 10245) est en cours d'exécution...

Si le service est mort après le démarrage, vous devez résoudre ce problème à ce stade lui-même.

Configurez le service pour qu'il démarre automatiquement lors du démarrage du système…

[root@controller-hostname ~]# chkconfig openstack-keystone on

Effacer automatiquement les jetons Keystone expirés…

Il peut y avoir de nombreux jetons expirés dans la clé de voûte pendant son fonctionnement, augmentant ainsi la taille de la base de données de clé de voûte. C'est une bonne idée de les effacer à intervalles réguliers. Pour ce faire, nous allons définir les tâches cron comme ci-dessous :

[root@controller-hostname ~]# echo '@hourly /usr/bin/keystone-manage token_flush>/var/log/keystone/keystone-tokenflush.log 2&>&1'>> /var/spool/cron /keystone[root@controller-hostname ~]# crontab -l -u keystone@hourly /usr/bin/keystone-manage token_flush> /var/log/keystone/keystone-tokenflush.log 2&>&1

Créer des utilisateurs, des locataires et des rôles pour Keystone

Avant d'exécuter des commandes keystone, vous devez définir certaines variables d'environnement. Pour ce faire, créez un fichier nommé 'admin-openrc.sh ' et définissez les variables d'environnement comme ci-dessous :

[root@controller-hostname ~]# vi admin-openrc.shexport OS_USERNAME=adminexport OS_PASSWORD=setpasswordexport OS_TENANT_NAME=adminexport OS_AUTH_URL=http://controller-hostname:35357/v2.0[root@controller-hostname ~] # source admin-openrc.sh

Créons un utilisateur…

[root@controller-hostname ~]# keystone user-create --name=admin --pass=setpassword --email=keystone@controller-hostname

Créer un rôle…

[root@controller-hostname ~]# clé de voûte role-create --name=admin

Créer un locataire…

[root@controller-hostname ~]# locataire keystone-create --name=admin --description="Admin Tenant"

Nous devrons lier l'utilisateur au rôle et au locataire créés dans les étapes précédentes…

[root@controller-hostname ~]# keystone user-role-add --user=admin --role=admin --tenant=admin

Enregistrer la clé de voûte (service d'identité) auprès du service KeyStone

[root@controller-hostname ~]# keystone tenant-create --name=service --description="Service Tenant"[root@controller-hostname ~]# keystone service-create --name=keystone --type =identity --description="OpenStack Identity"[root@controller-hostname ~]# keystone endpoint-create --service-id=$(keystone service-list | awk '/ compute / {print $2}') --publicurl =http://controller-hostame:8774/v2/%\(tenant_id\)s --internalurl=http://controller-hostame:8774/v2/%\(tenant_id\)s --adminurl=http:/ /controller-hostame:8774/v2/%\(tenant_id\)s

Voilà, la configuration de KeyStone est terminée… Si vous rencontrez un problème lors de l'installation et de la configuration de Keystone, voici une solution pour diverses erreurs de clé de voûte :Erreurs et solutions courantes du service de clé de voûte .

Installer Glance (Image Service) sur le nœud du contrôleur

Le service d'imagerie sera installé sur le nœud du contrôleur pour héberger toutes les images qui doivent être utilisées pour démarrer les VM sur le nœud de calcul.

[root@controller-hostname ~]# yum install openstack-glance python-glanceclient

Configuration de la base de données "coup d'œil"…

[root@controller-hostname ~]# mysql -u root -pmysql> CREATE DATABASE eye;mysql> ACCORDER TOUS LES PRIVILÈGES SUR eye.* À 'glance'@'controller-hostname' IDENTIFIÉ PAR 'setpassword';mysql> ACCORDEZ TOUS LES PRIVILÈGES SUR le coup d'œil.* À 'glance'@'%' IDENTIFIÉ PAR 'setpassword ';

Remarque : N'oubliez pas de changer "setpassword"

Créer des tables pour la base de données 'glance'…

[root@controller-hostname ~]# su -s /bin/sh -c "glance-manage db_sync" coup d'oeil

Configurer le service d'aperçu pour lire les informations d'identification de la base de données…

[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf connexion à la base de données mysql://glance:setpassword@controller-hostname/glance[root@controller-hostname ~ ]# connexion à la base de données eye-registry.conf mysql://glance:setpassword@controller-hostname/glance

Créer un utilisateur Glance dans KeyStone…

[root@controller-hostname ~]# keystone user-create --name=glance --pass=setpassword --email=glance@controller-hostname

Ajouter un utilisateur de GOLDEN au rôle "admin"

[root@controller-hostname ~]# keystone user-role-add --user=glance --tenant=service --role=admin

Configurer l'authentification pour Glance…

[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller-hostname:5000[root@controller-hostname ~]# openstack- config --set /etc/glance/glance-api.conf keystone_authtoken auth_host nom d'hôte du contrôleur [root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_port 35357[root@controller-hostname ~]# openstack-config --set /etc/glance/glance- api.conf keystone_authtoken auth_protocol http[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_tenant_name service[root@controller-hostname ~]# openstack-config --set / etc/glance/glance-api.conf keystone_authtoken admin_user regard[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_password setpassword [root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf paste_deploy saveur keystone[root@controller-hostname ~]# openstack-config --set /etc/glance/glance- register.conf keystone_authtoken auth_uri http://nom_hôte-contrôleur :5000[root@nom-hôte-contrôleur ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_host nom hôte-contrôleur [root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_port 35357[root@controller-hostname ~]# openstack-config --set /etc/glance/glance- register.conf keystone_authtoken auth_protocol http[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_tenant_name service[root@controller-hostname ~]# openstack-config --set / etc/glance/glance-registry.conf keystone_authtoken admin_user regard[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_password setpassword [root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf paste_deploy saveur keystone

Inscrire le service Glance à KeyStone…

[root@controller-hostname ~]# keystone service-create --name=glance --type=image --description="OpenStack Image Service"[root@controller-hostname ~]# keystone --os-token =fd465d38e342ddc68be3 --os-endpoint=http://controller-hostname:35357/v2.0 endpoint-create --service-id=$(keystone service-list | awk '/ image / {print $2}') -- publicurl=http://nom-hôte-contrôleur :9292 --internalurl=http://nom-hôte-contrôleur :9292 --adminurl=http://nom-hôte-contrôleur :9292

Lancer les services de coup d'œil…

[root@controller-hostname ~]# service openstack-glance-api start[root@controller-hostname ~]# service openstack-glance-registry start[root@controller-hostname ~]# chkconfig openstack-glance-api on[root@controller-hostname ~]# chkconfig openstack-glance-registry on

Remarque : Si l'un des services ne démarre pas, vérifiez les fichiers journaux sous /var/log/glance . Lisez également ce guide - Erreurs d'installation du service d'image OpenStack Glance et solutions.

Tester le service Glance…

Nous allons maintenant télécharger l'image de Cirros pour tester le service de regard. Cirros est un petit système d'exploitation Linux qui ne prend que quelques Mo, il est donc assez facile de le télécharger et de l'ajouter au service Glance.

[root@controller-hostname ~]# wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img[root@controller-hostname ~] # glance image-create --name=cirros --disk-format=qcow2 --container-format=bare --is-public=true  

Ajouter une image CentOS au service d'aperçu

[root@controller-hostname ~]# wget http://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-20141129_01.qcow2.xz

Remarque : xz est un utilitaire de compression de données à usage général qui fournit un taux de compression élevé. C'est la raison pour laquelle la taille du fichier .xz est moindre et facile à télécharger. Si vous ne savez pas comment décompresser les fichiers .xz, voici un tutoriel pour vous aider.

Après avoir décompressé l'image .xz, ajoutez l'image au service Glance.

[root@controller-hostname ~]# glance image-create --name 'Centos-6' --disk-format qcow2 --container-format bare --is-public=true  

Voir la liste des images ajoutées aux services Glance…

[root@controller-hostname ~]# glance image-show "cirros"+------------------+----------- ---------------------------+| Propriété | Valeur |+------------------+---------------------------- ----------+| somme de contrôle | 64d7c1cd2b6f60c92c14662941cb7913 || format_conteneur | nu || créé_à | 2015-02-06T12:47:39 || supprimé | Faux || format_disque | qcow2 || identifiant | a338631b-3bb8-43ba-a700-d4648c040a05 || est_public | Vrai || min_disk | 0 || min_ram | 0 || nom | cirros || propriétaire | e7c679bc36ec4c298cf68ecf6d49c1b3 || protégé | Faux || taille | 13167616 || statut | actif || mis à jour_at | 2015-02-06T12:47:40 |+------------------+-------------------- ------------------+
[root@controller-hostname ~]# glance image-show "Centos-6"+------------------+--------- -----------------------------+| Propriété | Valeur |+------------------+---------------------------- ----------+| somme de contrôle | 62ac2565e3527377860361f57639f334 || format_conteneur | nu || créé_à | 2015-02-13T06:18:52 || supprimé | Faux || format_disque | qcow2 || identifiant | ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8 || est_public | Vrai || min_disk | 0 || min_ram | 0 || nom | Centos-6 || propriétaire | e7c679bc36ec4c298cf68ecf6d49c1b3 || protégé | Faux || taille | 1151533056 || statut | actif || mis à jour_at | 2015-02-13T06:20:29 |+------------------------------+-------------------- ------------------+

Installer Nova Service sur le nœud du contrôleur :

Passons maintenant à l'installation de Nova sur le nœud du contrôleur…

[root@controller-hostname ~]# yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient

Créer une base de données "nova"…

[root@controller-hostname ~]# mysql -u root -pmysql> CREATE DATABASE nova;mysql> ACCORDER TOUS LES PRIVILÈGES SUR nova.* À 'nova'@'controller-hostname' IDENTIFIÉ PAR 'setpassword';mysql> ACCORDER TOUS LES PRIVILÈGES SUR nova.* À 'nova'@'%' IDENTIFIÉ PAR 'setpassword';

Dites à Nova d'utiliser la base de données correspondante et de fournir des informations d'identification pour celle-ci…

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf connexion à la base de données mysql://nova:setpassword@controller-hostname/nova

Connecter Message Broker (Qpid) à Nova…

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend qpid[root@controller-hostname ~]# openstack-config --set /etc/nova/nova .conf DEFAULT qpid_hostname nom d'hôte du contrôleur 

Créer des tables pour la base de données "nova"

[root@controller-hostname ~]# su -s /bin/sh -c "nova-manage db sync" nova

Créer un utilisateur pour nova dans KeyStone

[root@controller-hostname ~]# keystone user-create --name=nova --pass=setpassword --email=nova@controller-hostname[root@controller-hostname ~]# keystone user-role-add --user=nova --tenant=service --role=admin

Configurer l'authentification nova avec KeyStone

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone[root@controller-hostname ~]# openstack-config --set /etc/nova/nova .conf keystone_authtoken auth_uri http://controller-hostname:5000[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller-hostname [root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova[root@controller-hostname ~]# openstack-config --set /etc/nova/nova. conf keystone_authtoken admin_tenant_name service[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password setpassword 

Enregistrer nova avec KeyStone

[root@controller-hostname ~]# keystone service-create --name=nova --type=compute --description="OpenStack Compute"[root@controller-hostname ~]# keystone endpoint-create --service -id=$(keystone service-list | awk '/compute/{print $2}') --publicurl=http://controller-hostname:8774/v2/%\(tenant_id\)s --internalurl=http ://controller-hostname:8774/v2/%\(tenant_id\)s --adminurl=http://controller-hostname:8774/v2/%\(tenant_id\)s

Commencer les services liés à Nova…

[root@controller-hostname ~]# service openstack-nova-api start[root@controller-hostname ~]# chkconfig openstack-nova-api on[root@controller-hostname ~]# service openstack-nova-cert start[root@controller-hostname ~]# chkconfig openstack-nova-cert on[root@controller-hostname ~]# service openstack-nova-scheduler start[root@controller-hostname ~]# chkconfig openstack-nova-scheduler on[ root@controller-hostname ~]# service  openstack-nova-novncproxy start[root@controller-hostname ~]# chkconfig openstack-nova-novncproxy on[root@controller-hostname ~]# service  openstack-nova-consoleauth start[root@ controller-hostname ~]# chkconfig openstack-nova-consoleauth on[root@controller-hostname ~]# service  openstack-nova-conductor start[root@controller-hostname ~]# chkconfig openstack-nova-conductor on[root@controller- nom d'hôte ~]# service  openstack-nova-metadata-api start[root@controller-hostname ~]# chkconfig openstack-nova-metadata-api on

Remarque : Après avoir démarré le service, vérifiez son état et assurez-vous que le service est réellement en cours d'exécution. Si l'un des services ne démarre pas, vérifiez les fichiers journaux sous /var/log/nova.

Lisez également :Erreurs d'installation du service OpenStack Nova et solutions.

Commandes Nova pour tester la configuration et les services…

Pour lister toutes les images qui sont stockés dans le service Glance…

[root@controller-hostname ~]# nova image-list+----------------------------------------------- ----+---------------+--------+-------------------- ------------------+| identifiant | Nom | Statut | Serveur |+-------------------------------------------+-------- -------+--------+--------------------------------------------- -----+| ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8 | Centos-6 | ACTIF | || a338631b-3bb8-43ba-a700-d4648c040a05 | cirros | ACTIF | || e8c477ae-7c74-497d-9d9b-5fea1035d899 | testvm-snap1 | ACTIF | aa7c5535-4259-42f0-8d74-5b26f0d731de |+--------------------------------------------------+ ---------------+--------+------------------------- -------------+

Pour répertorier tous les services…

[root@controller-hostname ~]# nova service-list+------------------+--------------- ----------+----------+---------+-------+---------- ------------------+----------------+| Binaire | Hôte | zone | Statut | État | Mis à jour_à | Raison désactivée |+------------------+-------------------------+- ---------+---------+-------+---------------------- ------+-----------------+| nova-cert | nom_hôte_contrôleur | interne | activé | haut | 2015-02-16T11:06:09.000000 | - || nova-planificateur | nom_hôte_contrôleur | interne | activé | haut | 2015-02-16T11:06:07.000000 | - || nova-consoleauth | nom_hôte_contrôleur | interne | activé | haut | 2015-02-16T11:06:11.000000 | - || nova-conducteur | nom_hôte_contrôleur | interne | activé | haut | 2015-02-16T11:06:12.000000 | - || nova-console | nom_hôte_contrôleur | interne | activé | haut | 2015-02-16T11:06:12.000000 | - |+------------------+------------------------------+-- --------+---------+-------+----------------------- -----+-----------------+

Configurer Nova-Networking pour le nœud du contrôleur

Dans cette configuration à deux nœuds, nous allons installer le réseau Nova (hérité) sur les nœuds de contrôleur et de calcul. Cela signifie que vous n'avez pas à vous soucier du service complexe Neutron.

Configurer Nova pour utiliser l'ancien réseau nova…

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.api.API[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT security_group_api nova

Redémarrer les services nova

[root@controller-hostname ~]# service openstack-nova-api restart[root@controller-hostname ~]# service openstack-nova-scheduler restart[root@controller-hostname ~]# service  openstack-nova-conductor redémarrer

Créer un réseau pour les VM

Maintenant, Nova sait qu'il doit utiliser le réseau hérité pour la communication, mais vous devez créer un réseau et un pool d'adresses IP auxquelles les machines virtuelles doivent être attribuées. Faites défiler vers le haut pour voir le schéma d'architecture où vous trouverez l'adresse IP externe (10.180.14.151) attribuée au nœud de calcul. Cela signifie que nous devons créer un sous-réseau dans le réseau 10.180.14.0 pour que les VM puissent l'utiliser. In this tutorial, let us assume that we need 30 IP addresses for allocation. So the subnet details goes as below…

------------------------------------------------ TCP/IP NETWORK INFORMATION------------------------------------------------IP Entered =..................:10.180.14.160 CIDR =........................:/27 Netmask =.....................:255.255.255.224Wildcard Bits =...............:0.0.0.31------------------------------------------------Network Address =.............:10.180.14.160Broadcast Address =...........:10.180.14.191Usable IP Addresses =.........:30First Usable IP Address =.....: 10.180.14.161 Last Usable IP Address =......: 10.180.14.190 

For the subnet ‘10.180.14.160/27’, the first usable IP address is 10.180.14.161 and the last usable IP address is 10.180.14.190.

The below command will create a network called ‘private’

[root@controller-hostname ~]# nova network-create private --bridge br100 --multi-host T --fixed-range-v4 10.180.14.160/27[root@controller-hostname ~]# nova net-list+--------------------------------------+---------+------------------+| ID | Label | CIDR |+--------------------------------------+---------+------------------+| 60dfd46a-4649-4758-8b8d-88cc562b9b39 | private | 10.180.14.160/27 |+--------------------------------------+---------+------------------+

Add a security group to the created network to allow SSH connections

[root@controller-hostname ~]# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0+-------------+-----------+---------+-----------+--------------+| IP Protocol | From Port | To Port | IP Range | Source Group |+-------------+-----------+---------+-----------+--------------+| tcp | 22 | 22 | 0.0.0.0/0 | |+-------------+-----------+---------+-----------+--------------+

Install Dashboard (Horizon) on Controller node

Now its time to install Horizon service on controller node – provides a portal to manage instances, services, network etc…

[root@controller-hostname ~]# yum install memcached python-memcached mod_wsgi openstack-dashboard

Change the values of CACHES[‘default’][‘LOCATION’] as below

# vi /etc/openstack-dashboard/local_settingsCACHES ={'default':{'BACKEND' :'django.core.cache.backends.memcached.MemcachedCache','LOCATION' :'127.0.0.1:11211'}}

The above changes should match the address and port specified in /etc/sysconfig/memcached .

Also modify ‘ALLOWED_HOSTS ‘ attribute to accept connection from your desktop – as that will allow you to access the dashboard via browser.

You have to make sure SELINUX allows connection to the web server

[root@controller-hostname ~]# setsebool -P httpd_can_network_connect on

Start web server and memcached

[root@controller-hostname ~]# service memcached start[root@controller-hostname ~]# service httpd start[root@controller-hostname ~]# chkconfig memcached on[root@controller-hostname ~]# chkconfig httpd on

Try accessing the dashboard service – http://controller-hostname/dashboard

Install Nova on Compute node

Finally, we are done with our installation on Controller node and we’ll now move on to install Nova on Compute node.

Install nova compute service on Compute node..

[root@compute-hostname ]# yum install openstack-nova-compute

Connect to nova database on controller node…

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf database connection mysql://nova:setpassword@controller-hostname /nova

Setup authentication…

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller-hostname :5000[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller-hostname [root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password setpassword 

Configure Nova to use Qpid message broker for communication

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend qpid[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller-hostname 

Compute Node should know where the Glance is running, so we need to configure that as well.

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT glance_host controller-hostname 

Start messagebus, libvirtd and nova-compute services

[root@compute-hostname ]# service libvirtd start[root@compute-hostname ]# chkconfig libvirtd on[root@compute-hostname ]# chkconfig messagebus on[root@compute-hostname ]# service messagebus start[root@compute-hostname ]# service openstack-nova-compute start[root@compute-hostname ]# chkconfig openstack-nova-compute on

Install Nova-Networking for Computer node

[root@compute-hostname ]# yum install openstack-nova-network openstack-nova-api

Configure network api, security group, firewall, network size, dhcp etc..

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.api.API[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT security_group_api nova[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT network_manager nova.network.manager.FlatDHCPManager[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.libvirt.firewall.IptablesFirewallDriver[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT network_size 254[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT allow_same_net_traffic False[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT multi_host True[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT send_arp_for_ha True[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT share_dhcp_address True[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT force_dhcp_release True

Configure network bridge and interfaces

If you remember we created a network bridge ‘br100 ‘ in controller node. For this tutorial, the external IP address of the compute node is 10.180.14.151 (configured on eth1 network interface) and the subnet is ‘10.180.14.160/27

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT flat_network_bridge br100 [root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT flat_interface eth1 [root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT public_interface eth1 

Remarque : Remember to change the network interface (eth1) to the corresponding interface of your compute node.

Start the services…

[root@compute-hostname ]# service openstack-nova-api start[root@compute-hostname ]# service openstack-nova-network start[root@compute-hostname ]# service openstack-nova-metadata-api start[root@compute-hostname ]# chkconfig openstack-nova-api on[root@compute-hostname ]# chkconfig openstack-nova-network on[root@compute-hostname ]# chkconfig openstack-nova-api on

Well, we are done with installations on both the Controller and Compute node. Let us now trying booting VM, but before that you should know the below commands.

List of networks created…

[root@controller-hostname ~]# nova net-list+--------------------------------------+---------+------------------+| ID | Label | CIDR |+--------------------------------------+---------+------------------+| 60dfd46a-4649-4758-8b8d-88cc562b9b39 | private | 10.180.14.160/27 |+--------------------------------------+---------+------------------+

List of images stored in Glance…

[root@controller-hostname ~]# nova image-list+--------------------------------------+---------------+--------+--------------------------------------+| ID | Name | Status | Server |+--------------------------------------+---------------+--------+--------------------------------------+| ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8 | Centos-6 | ACTIVE | || a338631b-3bb8-43ba-a700-d4648c040a05 | cirros | ACTIVE | || e8c477ae-7c74-497d-9d9b-5fea1035d899 | henryvm-snap1 | ACTIVE | aa7c5535-4259-42f0-8d74-5b26f0d731de |+--------------------------------------+---------------+--------+--------------------------------------+

List of flavors available…

[root@controller-hostname ~]# nova flavor-list+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True || 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True || 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True || 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True || 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+

List of security groups created…

[root@controller-hostname ~]# nova secgroup-list+----+---------+-------------+| Id | Name | Description |+----+---------+-------------+| 1 | default | default |+----+---------+-------------+

You may want to generate SSH keys to allow users to login to the newly created instance.

[root@controller-hostname ~]# ssh-keygen

Add the SSH public key to the nova keypair list..

[root@controller-hostname ~]# nova keypair-add --pub-key ~/.ssh/id_rsa.pub test-key

View the list of key pairs created…

[root@controller-hostname ~]# nova keypair-list+----------+-------------------------------------------------+| Name | Fingerprint |+----------+-------------------------------------------------+| test-key | b0:e1:ff:a5:1b:b0:ff:14:d5:46:13:bc:b6:ba:97:9b |+----------+-------------------------------------------------+

Create an Instance

Based on the output from above commands, you can create a new instance as below:

[root@controller-hostname ~]# nova boot --flavor m1.small --image Centos-6 --nic net-id=60dfd46a-4649-4758-8b8d-88cc562b9b39 --security-group default --key-name test-key myfirstvm+--------------------------------------+-------------------------------------------------+| Property | Value |+--------------------------------------+-------------------------------------------------+| OS-DCF:diskConfig | MANUAL || OS-EXT-AZ:availability_zone | nova || OS-EXT-SRV-ATTR:host | - || OS-EXT-SRV-ATTR:hypervisor_hostname | - || OS-EXT-SRV-ATTR:instance_name | instance-00000016 || OS-EXT-STS:power_state | 0 || OS-EXT-STS:task_state | - || OS-EXT-STS:vm_state | building || OS-SRV-USG:launched_at | - || OS-SRV-USG:terminated_at | - || accessIPv4 | || accessIPv6 | || adminPass | hEMdKAnLs6XX || config_drive | || created | 2015-02-18T08:56:32Z || flavor | m1.small (2) || hostId | || id | a9735dd7-c601-4209-a86a-0575711239d1 || image | Centos-6 (ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8) || key_name | test-key || metadata | {} || name | myfirstvm || os-extended-volumes:volumes_attached | [] || progress | 0 || security_groups | par défaut || status | BUILD || tenant_id | e7c679bc36ec4c298cf68ecf6d49c1b3 || updated | 2015-02-18T08:56:32Z || user_id | 8607e0ccc8ee407daf50c1985616b153 |+--------------------------------------+-------------------------------------------------+

Check if the state of the VM is “ACTIVE” using the below command…

[root@controller-hostname ~]# nova list+--------------------------------------+------------------+--------+------------+-------------+-----------------------+| ID | Name | Status | Task State | Power State | Networks |+--------------------------------------+------------------+--------+------------+-------------+-----------------------+| 8aaa3873-09c5-48f0-9d1e-cb4401e44583 | Cluster-headnode | ACTIVE | - | Running | private=10.180.14.162 || a9735dd7-c601-4209-a86a-0575711239d1 | myfirstvm | ACTIVE | - | Running | private=10.180.14.163 |+--------------------------------------+------------------+--------+------------+-------------+-----------------------+

The new VM called “myfirstvm ” is running and the allocated IP address is 10.180.14.163 .

Login to an instance

[root@controller-hostname ~]# cd .ssh/[root@controller-hostname .ssh]# ssh -i id_rsa [email protected] login:Wed Feb 18 09:01:07 2015 from 10.180.10.132[centos@myfirstvm ~]$ hostnamemyfirstvm

Remarque : Since we installed “Horizon” service on controller node, you should be able to create an instance via OpenStack dashboard. That’s super easy!

What is the password for Cirros?

In case, if you have used Cirros image to create an instance, then you must login with username as ‘cirros’ and password as ‘cubswin:)’ (of course, without single quotes).

To know information about the running VM, you can just issue the below command.

[root@controller-hostname ~]# nova show myfirstvm +--------------------------------------+----------------------------------------------------------+| Property | Value |+--------------------------------------+----------------------------------------------------------+| OS-DCF:diskConfig | MANUAL || OS-EXT-AZ:availability_zone | nova || OS-EXT-SRV-ATTR:host | gcompute.blr.cdac.in || OS-EXT-SRV-ATTR:hypervisor_hostname | gcompute.blr.cdac.in || OS-EXT-SRV-ATTR:instance_name | instance-00000016 || OS-EXT-STS:power_state | 1 || OS-EXT-STS:task_state | - || OS-EXT-STS:vm_state | active || OS-SRV-USG:launched_at | 2015-02-18T08:56:54.000000 || OS-SRV-USG:terminated_at | - || accessIPv4 | || accessIPv6 | || config_drive | || created | 2015-02-18T08:56:32Z || flavor | m1.small (2) || hostId | bd672087b1933d00d10e9d4f85cbac0326ebf3de73a0ce093c0d1838 || id | a9735dd7-c601-4209-a86a-0575711239d1 || image | Centos-6 (ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8) || key_name | test-key || metadata | {} || name | myfirstvm || os-extended-volumes:volumes_attached | [] || private network | 10.180.14.163 || progress | 0 || security_groups | par défaut || status | ACTIVE || tenant_id | e7c679bc36ec4c298cf68ecf6d49c1b3 || updated | 2015-02-18T08:56:41Z || user_id | 8607e0ccc8ee407daf50c1985616b153 |+--------------------------------------+----------------------------------------------------------+

Stop an Instance

If you want to stop a running instance, here’s how you can do that.

[root@controller-hostname ~]# nova stop myfirstvm

If you want to delete an instance completely, then here’s the command.

[root@controller-hostname ~]# nova delete myfirstvm

How to add another compute node to the OpenStack environment?
It’s simple! Just follow the same steps that we used for Compute-hostname node.

Do you like this tutorial? Share it with OpenStack community by clicking the share icons at the top.

Et le bonus est là…

    Téléchargez l'ebook gratuit sur l'installation d'OpenStack Icehouse ! Téléchargez l'aide-mémoire de l'interface de ligne de commande OpenStack ! - Commandes les plus couramment utilisées

Cent OS
  1. Comment installer Node.js et NPM sur CentOS

  2. Installer Grafana sur CentOS 8 - Guide étape par étape ?

  3. Installer FreeIPA sur CentOS 8 - Guide étape par étape ?

  4. Installer ClamAV sur CentOS 8 - Guide étape par étape ?

  5. Installer HAProxy sur CentOS 8 - Guide étape par étape ?

Comment installer Node.js et npm sur CentOS 8

Comment installer OpenStack à nœud unique sur CentOS 7

Comment installer Node.js sur CentOS 8

Comment installer Node.js sur CentOS 7

Comment installer des factures simples sur CentOS 7

Comment installer Node.js sur CentOS Stream 9