4 Plateforme infonuagique : utilisation
Vous allez maintenant utiliser votre plateforme infonuagique pour administrer
des serveurs virtuels de calcul et de stockage de données.
4.1 Déverminage
L'infrastructure d'openstack est complexe à déverminer, cette section donne quelques éléments pour
savoir où se situent les bogues.
4.1.1 Les fichiers de contrôle
Vous pouvez activer le déverminage dans les services d'openstack. Pour cela, il suffit d'activer
l'option debug dans les fichiers de configuration /etc/nova/nova.conf, /etc/nova/nova-compute.conf
et /etc/neutron/neutron.conf. Regardez ensuite les informations dans les fichiers .log
présents dans les répertoires /var/log/nova et /var/log/neutron. Vous avez aussi des informations
intéressantes dans les répertoires /var/log/rabbitmq et /var/log/keystone.
4.1.2 Problème de lancement d'une instance
Quand vous démarrez une instance, une machine virtuelle KVM est lancé sur un de vos noeuds de calcul.
Vous pouvez vérifier que cette machine est bien lancée en cherchant les processus contenant qemu-system
dans leur nom. Théoriquement vous trouverez un répertoire contenant le disque et les messages de démarrage de
l'instance dans le sur-répertoire /var/lib/nova/instances. Le nom du répertoire de votre instance est son
identifiant que vous pouvez trouver dans l'interface Web. Si vous ne trouvez ni le processus ni le répertoire
de l'instance, regardez dans les fichiers de contrôle sur le noeud de calcul et sur le noeud contrôleur, la
raison de l'échec doit y être indiquée. Si la machine virtuelle est bien démarrée, cherchez l'option -spice
pour trouver le port d'écoute de la console. Vous pouvez ensuite vous connecter sur cette console en utilisant
un client spice comme spicec du paquetage spice-client.
4.1.3 Problème de connexion réseau
L'architecture réseau de neutron est très sophistiquée. Nous allons tenter d'en remonter le fil à partir
d'un noeud réseau.
-
Interface de l'instance :
- examinez les options du processus qemu-system de votre instance
pour trouver l'adresse Ethernet de l'instance, listez les interfaces tap sur votre noeud de calcul
avec la commande ip tuntap show, cherchez celle qui possède une adresse MAC de même suffixe que celle
de votre machine (seul l'octet de poids fort diffère).
- Connexion sur le commutateur d'intégration :
- trouvez dans quel commutateur virtuel Linux se trouve
l'interface tap de votre instance en utilisant la commande brtcl show, cherchez l'interface qui
se trouve dans le même commutateur virtuel Linux dans le commutateur virtuel openVSwitch d'intégration
br-int, vous pouvez lister les interfaces dans br-int avec la commande ovs-vsctl show.
- Connexion sur votre instance :
- vous pouvez faire un test de connexion au niveau du noeud de calcul,
il suffit de créer une interface de type VLAN au dessus du commutateur openVSwitch br-int,
utilisez pour cela l'utilitaire vconfig du paquetage vlan, le numéro du VLAN à utiliser est celui
du tag openVSwitch, affectez une adresse IPv4 à votre nouvelle interface dans le réseau IPv4 de votre
instance, vous pouvez alors vous connecter par ssh sur l'instance.
- Connexion avec le noeud réseau :
- vous pouvez constater dans la sortie de la commande
ovs-vsctl show que le commutateur d'intégration br-int est connecté au commutateur des tunnels
br-tun via les interfaces patch-tun et patch-int, la connexion est réalisée via des régles
qui sont affichées par la commande ovs-ofctl dump-flows br-tun, les paquets sont alors transmis au
noeud réseau via le tunnel GRE listé dans le commutateur br-tun, notez que ces tunnels utilisent des
adresses IPv4 du réseau des tunnels.
- Test de connectivité :
- lancez, de votre instance, un ping sur le serveur DHCP virtuel et
analysez les paquets à destination de l'adresse IPv4 dans le réseau des tunnels de votre noeud réseau avec la
commande tcpdump -n -vvv -i eth0 host <@IPv4 contrôleur>, vous devez voir passer des paquets ICMP
encapsulés dans le protocole GRE, vous pouvez faire la même chose sur le noeud réseau.
- Arrivé sur le noeud réseau :
- le noeud réseau comporte les mêmes commutateurs openVSwitch br-tun
et br-int, le même dispositif permet de récupérer les paquets via un tunnel GRE et grâce à des régles
openVSwitch de les envoyer dans différents VLANs sur le commutateur d'intégration, vous pouvez afficher les
commutateurs et les régles openVSwitch via les commande ovs-vsctl show et ovs-ofctl dump-flows br-tun.
- Seconde connexion sur votre instance :
- vous pouvez faire un test de connexion au niveau du noeud réseau,
il suffit de créer une interface de type VLAN au dessus du commutateur openVSwitch br-int,
utilisez pour cela l'utilitaire vconfig du paquetage vlan, le numéro du VLAN à utiliser est celui
du tag openVSwitch, affectez une adresse IPv4 à votre nouvelle interface dans le réseau IPv4 de votre
instance, vous pouvez alors vous connecter par ssh sur l'instance.
- Connexion au serveur DHCP virtuel :
- listez les différentes instances de pile TCP/IP sur votre noeud
réseau avec la commande ip netns show, prenez l'instance préfixée par qdhcp-, listez les interfaces
dans cette instance avec la commande ip netns exec qdhcp-... ip address show, vous trouvez l'adresse
IPv4 du serveur DHCP sur une interface tap, cette interface se retrouve dans le commutateur br-int
et comme argument d'un processus dnsmasq.
- Connexion au routeur virtuel :
- listez les différentes instances de pile TCP/IP sur votre noeud
réseau avec la commande ip netns show, prenez l'instance préfixée par qrouter-, listez les interfaces
dans cette instance avec la commande ip netns exec qrouter-... ip address show, vous trouvez les
adresses IPv4 du routeur sur deux interfaces Ethernet virtuelles, une interface se retrouve dans le commutateur
openVSwitch br-int et une autre dans le commutateur openVSwitch br-ex avec l'interface vers Internet
eth2.
- Troisième connexion sur votre instance :
- vous pouvez faire un second test de connexion au niveau du
noeud réseau, il suffit pour cela d'affecter une adresse IPv4 au commutateur openVSwitch br-ex, adresse
dans le réseau IPv4 routé bien entendu, après avoir ajouté une route du réseau privé de votre projet vers
l'adresse routée de votre routeur virtuel, vous pouvez vous connecter par ssh sur l'instance.
- Quatrième connexion sur votre instance :
- un troisième test de connexion au niveau du noeud réseau
est possible, autorisez la connexion par ssh sur l'instance, trouvez l'espace TCP/IP d'un routeur de
votre nuage et utilisez la commande ip netns exec qrouter-... ssh cirros@<IP>.
Si vous avez commis des erreurs dans les fichiers de configuration des extensions de
neutron des tunnels GRE peuvent avoir été créés avec des adresses IP fantaisistes.
Pour supprimer ces tunnels qui peuvent perturber les connexions réseau, supprimez les
adresses superflues dans la table ml2_gre_endpoints.
4.2 Tests avancés
Avant de vous lancer dans des exercices plus complexes d'utilisation d'openstack vous pouvez effectuer
quelques tests pour vérifier que votre infrastructure infonuagique fonctionne.
4.2.1 Première instance
Créez un réseau privé dans le projet Admin. Vous pouvez utiliser 192.168.0.0/24 comme réseau IPv4.
Lancez une instance de votre image cirros sur ce réseau. Consultez avec votre interface Web les messages
de démarrage de votre instance (onglet log). Vous ne pourrez pas utiliser la console car, pour l'instant,
le client spice javascript ne fonctionne qu'avec des claviers qwerty. Vous pouvez vous connecter en utilisant
le client spice spicy du paquetage spice-client-gtk en parallèle avec le clavier virtuel florence.
Une fois connecté sur l'instance, vérifiez que vous pouvez pinguer le serveur DHCP virtuel.
4.2.2 Connexion à Internet
Créez, en tant qu'administrateur global, un réseau partagé et externe sans adresse de passerelle et sans DHCP.
Comme réseau IPv4 utilisez TP-NET2, l'adresse de la passerelle est la dernière de ce réseau. Attention à
utiliser comme intervalle d'adresses disponibles pour votre architecture info-nuagique un bloc non utilisé par
les autres implantations. Votre bloc peut inclure une dizaine d'adresses.
Ensuite, dans le projet Admin, créez un routeur virtuel avec, comme passerelle, ce réseau externe.
Ajoutez à ce routeur une interface dans le réseau local. Vérifiez que votre instance a désormais accès à
Internet.
Ajoutez une adresse routée flottante à votre instance. Vérifiez qu'elle peut être pinguée d'Internet après avoir
autorisé le protocole ICMP pour l'instance.
4.3 Maquette avec des projets distincts
Le but de cette réalisation est d'explorer les possibilités d'openstack en terme de cloisonnement des
projets.
4.3.1 Architecture réseau
Supprimez l'instance et le réseau privé du projet Admin mais gardez le réseau partagé et externe.
Créez ensuite un projet par binôme (tenants en anglais) nommés par exemple Projet1, Projet2, etc.
Ajoutez à ces projets l'utilisateur admin avec un rôle d'administrateur. Créez deux réseaux privés dans
chaque projet. Vous pouvez utiliser les réseaux IPv4 192.168.1.0/24 et 192.168.2.0/24. Toujours
dans chaque projet, créez un routeur virtuel entre vos deux réseaux privés.
4.3.2 Déploiement d'instances
Lancez deux instances sur chaque réseau local. Connectez-vous avec spicy sur une instance, vérifiez
que vous pouvez contacter l'autre. Autorisez les accès SSH sur vos instances en ajoutant la règle ad hoc
dans le groupe de sécurité par défaut. Connectez-vous d'une instance sur l'autre.
Vérifiez que toutes les instances ne sont pas lancées sur le même noeud de calcul. Vérifiez que chaque noeud
de calcul fonctionne, c'est à dire qu'ils hébergent tous au moins une instance.
Vérifiez la connectivité entre des instances de projets différents.
4.3.3 Connexion à Internet
Ensuite, dans votre projet, créez un routeur virtuel avec, comme passerelle, le réseau externe. Ajoutez à
ce routeur une interface dans un de vos réseaux locaux. Vérifiez que votre instance a désormais accès à
Internet.
Ajoutez une adresse routée flottante à votre instance. Vérifiez que l'on peut se connecter dessus en
provenance d'Internet avec ssh.
4.4 Architecture Web
Utilisez openstack pour réaliser une ferme de serveurs Web. Une instance avec une adresse IP flottante
doit transmettre les requêtes HTTP à des instances privées tout en assurant un équilibrage de charge.
Pour cette maquette, une image de type Debian va être nécessaire.
Votre système doit permettre un ajout automatique d'instance privée. Vous devez pouvoir générer un cliché
(snapshot) de votre instance implantant un serveur Web privé, ajouter une instance à partir de ce cliché
et faire en sorte que cette nouvelle instance soit automatiquement prise en compte. Il suffit qu'au lancement
de l'instance un script modifie la configuration apache2 de votre instance d'équilibrage de charge et
relance le service.
Un contrôle du bon fonctionnement du système doit pouvoir se faire en utilisant le gestionnaire apache2
de l'équilibrage de charge (voir 2.7).
4.5 Stockage distribué
Ajoutez un mandataire swift sur le noeud contrôleur et des conteneurs swift sur les noeuds que vous
utilisez déjà comme noeuds de calcul. Testez cette fonctionnalité.
4.6 Programmation distribuée
Déployez le programme de calcul de l'ensemble de Mandelbrot disponible à l'URL
http://docs.openstack.org/developer/taskflow/examples.html sur vos noeuds
de calcul. Vérifiez que l'ensemble est calculé plus vite quand le nombre de tâches
augmente.