Maniatux's Blog

Welcome to the internet

Linux

Debian 7 + Xen + Xapi + XenCenter HOWTO

Rédigé par Xavier - - Aucun commentaire

En 2011 dans l'article XenServer : le Xen facile je présentais la solution XenServer de Citrix qui est un serveur Xen prêt à l'emploi doté d'une console de gestion graphique similaire à vsphere : XenCenter. Puis en 2014 j'ai découvert que Xen installé à la main sur Debian n'était pas si méchant que ça : Découverte de XEN sur Debian Wheezy. Eh bien il parait que l'on peut marier les deux. Installer une debian, Xen, puis la couche Xapi qui permet ensuite de se connecter soit avec Xencenter, soit avec openxenmanager.

Sur papier l'installation est rapide et simple, mais en pratique elle est plutôt laborieuse car il y a beaucoup de bugs qui font que ça ne marche pas du premier coup et qu'il faut chercher des solutions. Voilà donc étape par étape comment installer Xapi sur Debian 7 et s'y connecter avec XenCenter.

Installation de Xen

Jusque là, rien de compliqué. Il faut installer le paquet xen-hypervisor :

# apt-get install xen-hypervisor

Puis on va dire à grub de booter en priorité sur Xen :

# dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
# update-grub

Puis, on reboote afin de démarrer sur Xen, c'est très important sinon la suite ne fonctionnera pas.

# reboot

Installation de xapi

Après avoir démarré en Xen, installez xcp-xapi :

# apt-get install xcp-xapi

Notez que des paquets de développement comme linux-image sont installés comme dépendances. C'est pour pouvoir compiler les modules d'openvswitch. Cette étape est faite avec dkms, elle est donc automatique et suivra les montées de version du kernel sans action de la part du sysadmin. Pour le gestionnaire de réseau XCP, il est plus simple de laisser bridge.

Note : vous allez obtenir quelques messages de fail, ignorez-les pour le moment.

On va spécifier à Xen d'utiliser xapi comme backend. Editez le fichier /etc/defaults/xen :

TOOLSTACK="xapi"

Maintenant on va configurer notre bridge. Editez le fichier /etc/network/interfaces et modifiez-le comme ceci :

auto lo
iface lo inet loopback

# allow-hotplug eth0
# iface eth0 inet dhcp

auto xenbr0
iface xenbr0 inet dhcp
  bridge_ports eth0

Note : oui, eth0 est désactivé. Mais xenbr0 va prendre le relai.

Maintenant, rebootez le serveur.

# reboot

Connexion XenCenter

Si votre système ne boote pas et bloque sur la configuration du réseau Xen, vous devez alors forcer le redémarrage puis booter en mode de dépannage sur grub. Puis refaites la configuration du réseau ci-dessus.

Maintenant que votre système est booté, ouvrez la console XenCenter sur une autre machine et tentez de vous connecter à votre serveur Debian :

Au bout de quelques instants on obtient l'erreur suivante :

Après avoir bataillé et surtout ragé parce que visiblement personne n'avait jamais rencontré ce problème alors que je le reproduits à volonté, j'ai enfin trouvé une solution sur ce thread d'un forum citrix. Il s'agit en fait d'un fichier .pem qui ne fonctionne pas bien et qu'il faut donc détruire :

# rm /etc/xcp/xapi-ssl.pem

Puis relancez le service xcp-xapi pour regénérer ce fichier :

# service xcp-xapi restart

Maintenant, tentez à nouveau de vous connecter avec Xencenter, cela doit fonctionner.

Et voilà !

Il faut savoir cependant que xencenter ne révèle son potentiel que sur une infrastructure composée de plusieurs serveurs. Les VM et les ISO ne peuvent pas être stockées sur l'hyperviseur il faut obligatoirement un datastore externe (iSCSI, CIFS ou NFS).

LXC sous Ubuntu Server 14.04 c'est géant

Rédigé par Xavier - - Aucun commentaire

J'ai toujours pensé que la meilleure implémentation de LXC, ce système similaire aux jails de FreeBSD, était sur ubuntu. En effet si je cite deux autres systèmes, Fedora et Debian, les choses sont compliquées. Fedora ne fourni pas de templates, ce qui oblige à créer et paramétrer soi-même de A à Z son container, quant à Debian ils sont présents mais bugués (malgré des rapports de bug datant d'avant la sortie de la stable). Sur ubuntu tout marche, les templates sont présents, et les containers subissent un confinement supplémentaire avec Apparmor.

Ce qui me pousse à écrire cet article, c'est le nouveau système de templates sous Ubuntu Server 14.04. En effet celui-ci propose de nombreuses distributions, voyez-vous même :

---
DIST	RELEASE	ARCH	VARIANT	BUILD
---
centos	6	amd64	default	20140516_02:16
centos	6	i386	default	20140516_02:16
debian	jessie	amd64	default	20140515_22:42
debian	jessie	armel	default	20140515_22:42
debian	jessie	armhf	default	20140515_22:42
debian	jessie	i386	default	20140515_22:42
debian	sid	amd64	default	20140515_22:42
debian	sid	armel	default	20140515_22:42
debian	sid	armhf	default	20140515_22:42
debian	sid	i386	default	20140515_22:42
debian	wheezy	amd64	default	20140515_22:42
debian	wheezy	armel	default	20140515_22:42
debian	wheezy	armhf	default	20140515_22:42
debian	wheezy	i386	default	20140515_22:42
fedora	19	amd64	default	20140516_01:27
fedora	19	armhf	default	20140516_01:27
fedora	19	i386	default	20140516_01:27
fedora	20	amd64	default	20140516_01:27
fedora	20	armhf	default	20140516_01:27
fedora	20	i386	default	20140516_01:27
gentoo	current	amd64	default	20140516_14:12
gentoo	current	armhf	default	20140516_14:12
gentoo	current	i386	default	20140516_14:12
oracle	6.5	amd64	default	20140516_11:40
oracle	6.5	i386	default	20140516_11:40
plamo	5.x	amd64	default	20140515_21:36
plamo	5.x	i386	default	20140515_21:36
ubuntu	lucid	amd64	default	20140516_12:43
ubuntu	lucid	i386	default	20140516_12:43
ubuntu	precise	amd64	default	20140516_12:43
ubuntu	precise	armel	default	20140516_12:43
ubuntu	precise	armhf	default	20140516_12:43
ubuntu	precise	i386	default	20140516_12:43
ubuntu	quantal	amd64	default	20140426_03:49
ubuntu	quantal	armel	default	20140426_03:49
ubuntu	quantal	armhf	default	20140426_03:49
ubuntu	quantal	i386	default	20140425_03:49
ubuntu	saucy	amd64	default	20140516_12:43
ubuntu	saucy	armhf	default	20140516_12:43
ubuntu	saucy	i386	default	20140516_12:43
ubuntu	trusty	amd64	default	20140516_12:43
ubuntu	trusty	armhf	default	20140516_12:43
ubuntu	trusty	i386	default	20140516_12:43
ubuntu	utopic	amd64	default	20140515_03:49
ubuntu	utopic	armhf	default	20140516_08:40
ubuntu	utopic	i386	default	20140516_12:43
---

Cette liste s'affiche quand on tape la commande permettant de créer un container LXC. Elle permet de sélectionner simplement le type de système désiré. Et oui, il y a du CentOS dans la liste !

Ubuntu Server peut donc être utilisé comme système hôte, et faire ensuite tourner du CentOS, Debian, Fedora... ce qui offre presque autant de souplesse que la virtualisation complète de KVM. J'ai hâte de tester tout ça !

Aperçu de Manjaro

Rédigé par Xavier - - Aucun commentaire

Manjaro est une distribution Linux basée sur Archlinux. Le principe est simple : un système configuré pour fonctionner out-the-box, donc accessible à tous, et des dépôts logiciels qui subissent une phase de test plus longue que sur Arch. Manjaro n'est donc pas un simple packaging de Arch. L'environnement par défaut est Xfce, mais il est également possible d'utiliser une variante KDE. J'utilise la version Xfce, et le thème est plutôt joli :

Ce qui me séduit dans Manjaro, c'est la rapidité et la stabilité, mais aussi la richesse des dépôts logiciels. Il contient également des logiciels non-free comme Skype, pratique pour les novices. Notez aussi que Flash et Steam sont préinstallés.

Manjaro est une rolling release temporisée, on ne reçoit pas les mises à jour en temps réel, mais seulement à la sortie d'une nouvelle version (majeure ou mineure) de la distribution. Ainsi, c'est actuellement le kernel 3.10 qui est utilisé (un LTS) , et Firefox est encore en version 28 (la 29 ne devrait plus tarder à arriver). C'est donc un étrange compromis entre stabilité et rolling release.

Pour un usage personnel, Manjaro est une bonne distribution. Une bonne alternative à Xubuntu pour ceux qui peuvent se permettre le fonctionnement en rolling-release. Je vais la garder pour quelques temps encore.

Aperçu de Xubuntu

Rédigé par Xavier - - Aucun commentaire

Xubuntu, pourquoi pas. Je n'ai jamais été fan de Xfce vanilla, mais l'intégration dans Xubuntu est plutôt intéressante. Plus léger que KDE (surtout au lancement) et proche de l'esprit Gnome 2.

De plus la version 32 bits est assez légère et peut tenir sur des machines avec 1GB de ram, pratique pour redonner un coup de jeune aux vieilles bécanes (après la fin du support de Windows XP par exemple).

Xubuntu c'est bon, mangez-en.

Découverte de XEN sur Debian Wheezy

Rédigé par Xavier - - Aucun commentaire

XEN n'est pas nouveau pour moi, j'en parlais sur ce blog en 2011. Mais à l'exception de la solution XenServer, c'était relativement obscur, compliqué, et déprécié par les distributions Linux au profil de solutions alternatives (KVM et LXC). Je pensais vraiment que Xen allait disparaitre ou sombrer dans l'oubli. En fait non car en 2014 non seulement XEN est toujours très utilisé (par exemple chez AWS, le cloud Amazon), mais il est en plus upstream dans le kernel Linux et géré par la Linux Fundation. Il est donc revenu en force dans toutes les distributions Linux. J'ai été surpris de constater que maintenant on peut l'installer et l'utiliser très facilement sur Debian Wheezy, je vais partager mon expérience sur cet article ;)

Notions Dom0 et DomU

Sur des hyperviseurs comme Hyper-V ou VMware nous sommes habitués à exécuter des machines virtuelles depuis l'hôte. Or sur XEN cette notion est différente, l'hôte devient une machine virtuelle XEN avec des privilèges d'administration nommée Dom0. Donc au démarrage votre serveur doit démarrer XEN et ensuite le Dom0 sur lequel vous vous connectez. On peut limiter la RAM et les vcpus de Dom0 comme pour les autres.

Les autres VMs que l'on va faire tourner sur XEN, et qui elles n'ont pas de privilèges particuliers, sont nommés DomU. Voici un schéma pour récapituler :

Dans le cas de cet article, le Dom0 est Debian Wheezy. Cela peut paraître assez abstrait comme ça, mais si vous le mettez en oeuvre, vous comprendrez !

Installation de Debian

L'installation se fait à partir d'une ISO tout à fait normale de Debian. Personnellement je suis parti sur une Wheezy amd64 en netinstall, donc la debian-7.4.0-amd64-netinst.iso. Il est possible d'utiliser LVM avec XEN, mais je préfère faire simple pour le moment, je choisis donc un partitionnement assisté avec tout dans une même partition.

Installation de XEN

Sur une Debian Wheezy fraichement installée, il suffit d'installer le paquet xen-hypervisor :

# apt-get install xen-hypervisor

Boot automatique sur Xen

Passer Xen en priorité dans grub :

# dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
# update-grub

Configuration du réseau (bridge)

Il suffit de modifier le fichier /etc/network/interfaces pour avoir un Bridge. Exemple pour moi qui suis en DHCP :

#The loopback network interface
auto lo
iface lo inet loopback

iface eth0 inet manual

auto xenbr0
iface xenbr0 inet dhcp
   bridge_ports eth0

Note : Si comme moi vous faites vos essais dans VirtualBox, méfiance. Si on utilise déjà un pont dans VirtualBox, xenbr0 ne fonctionnera pas correctement (les domU peuvent pinger dom0 mais pas internet). J'ai pas mal bloqué sur ce problème et finalement la solution consiste à laisser VirtualBox en NAT.

Installation des Xen Tools

Xen-tools permet de créer facilement des domU à partir de templates, et c'est la solution la plus simple :

# apt-get install xen-tools

Configuration du template Xen Tools

On édite le fichier /etc/xen-tools/xen-tools.conf. Voici les lignes à modifier pour notre cas :

dir = /home/xen
size   = 10Gb      # Disk image size.
fs     = ext4     # use the EXT4 filesystem for the disk image.
bridge = xenbr0
ext4_options     = noatime,nodiratime,errors=remount-ro

Et voilà.

Déploiement d'un DomU Debian

Note : Il faut prendre soin de rebooter après les manipulations précédentes, afin d'avoir Xen et le Dom0 opérationnels avant d'aller plus loin.

Voici la commande pour créer un hôte de type Debian Wheezy qui sera nommé Wheezy :

# xen-create-image --hostname wheezy --dhcp --vcpus 1 --pygrub --dist wheezy

WARNING
-------

  You appear to have a missing vif-script, or network-script, in the
 Xen configuration file /etc/xen/xend-config.sxp.

  Please fix this and restart Xend, or your guests will not be able
 to use any networking!


General Information
--------------------
Hostname       :  wheezy
Distribution   :  wheezy
Mirror         :  http://ftp.fr.debian.org/debian/
Partitions     :  swap            128Mb (swap)
                  /               10Gb  (ext4)
Image type     :  full
Memory size    :  128Mb
Kernel path    :  /boot/vmlinuz-3.2.0-4-amd64
Initrd path    :  /boot/initrd.img-3.2.0-4-amd64

Networking Information
----------------------
IP Address     : DHCP [MAC: 00:16:3E:EB:96:45]


Creating swap on /dev/vg0/wheezy-swap
Done

Creating ext4 filesystem on /dev/vg0/wheezy-disk
Done
Installation method: debootstrap
Done

Running hooks
Done

No role scripts were specified.  Skipping

Creating Xen configuration file
Done

No role scripts were specified.  Skipping
Setting up root password
Generating a password for the new guest.
All done


Logfile produced at:
	 /var/log/xen-tools/wheezy.log

Installation Summary
---------------------
Hostname        :  wheezy
Distribution    :  wheezy
IP-Address(es)  :  dynamic
RSA Fingerprint :  83:21:28:49:d9:93:38:ae:5a:11:41:23:fa:3a:6e:05
Root Password   :  UzNRAZe4

Pour démarrer notre DomU :

# xm create wheezy.cfg 
Using config file "/etc/xen/wheezy.cfg".
Started domain wheezy (id=2)

Pour se connecter à ce DomU, deux possibilités : avec SSH si on connaît l'IP, ou avec la commande xm console :

# xm console wheezy

Pour en sortir, arrêter la VM, ou utiliser la combinaison CTRL+]

Pour arrêter le DomU depuis le Dom0, utiliser la commande xen-delete-image :

# xm destroy wheezy

Note : la commande xm destroy va provoquer l'arrêt brutal du domU.

Déploiement d'un DomU NetBSD

Bon un DomU en Debian c'était facile parce qu'on peut utiliser xen-tools qui automatise tout. Maintenant la même chose avec NetBSD, qu'il va falloir installer à la main. Tout d'abord, on télécharge et on extrait la version installable et la version normale de NetBSD version Xen :

# wget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/amd64/binary/kernel/netbsd-INSTALL_XEN3_DOMU.gz
# wget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/amd64/binary/kernel/netbsd-XEN3_DOMU.gz
# gunzip netbsd-INSTALL_XEN3_DOMU.gz
# gunzip netbsd-XEN3_DOMU.gz

Ensuite on doit créer un fichier une image qui servira de support de stockage pour le DomU :

# mkdir -p /home/xen/domains/netbsd
# dd if=/dev/zero of=/home/xen/domains/netbsd/disk.img bs=1 count=0 seek=10G

Création d'un fichier de configuration pour notre domU NetBSD (il est possible de copier celui du domU Wheezy précédemment créé pour aller plus vite puis le modifier) :

# vi /etc/xen/netbsd.cfg
kernel = "/root/netbsd-INSTALL_XEN3_DOMU"
memory = '128'
disk = [
'file:/home/xen/domains/netbsd/disk.img,xvda1,w';
]
name = 'netbsd'
dhcp = 'dhcp'
vif = [ 'mac=00:16:3E:EB:96:41,bridge=xenbr0' ]

On démarre notre domU NetBSD créé (cette fois l'argument c va directement connecter la console) :

# xm create -c netbsd.cfg

On obtient ceci :

Il faut maintenant procéder à une installation personnalisée, en sélectionnant uniquement base et system (pas besoin du kernel qui ne sera pas utilisé car GENERIC) et une source HTTP ou FTP (l'équivalent du netinstall) pour récupérer les paquets.

Si tout se passe bien :

Une fois l'installation terminée, il faut modifier le netbsd.cfg pour utiliser l'autre kernel :

# vi /etc/xen/netbsd.cfg
kernel = "/root/netbsd-XEN3_DOMU"

Il est maintenant possible de booter sur NetBSD :

# xm create -c netbsd.cfg

Conclusion

Xen est relativement simple à utiliser sur Debian Wheezy, grâce à Xen-tools qui facilite la création de domU à partir d'un template. Quand il s'agit de créer un domU "exotique" comme NetBSD, la procédure est un peu plus longue mais reste simple et logique. Il se positionne donc comme une solution intéressante pour les serveurs n'ayant pas le support de la virtualisation complète (Intel VT-X / AMD-V). Néanmoins lorsque ces instructions sont disponibles, les solutions alternatives telles que KVM ou ses concurrents propriétaires (Hyper-V, VMware...) me semblent toujours beaucoup plus simples à administrer et offrent des performances excellentes. Y a-t-il toujours un avenir à la paravirtualisation, qui est à mi chemin entre les containers (LXC, jails...) et la virtualisation complète ? A voir...

Mon bilan est positif sur l'utilisation, mais je me questionne toujours sur la pertinence de Xen en 2014.

Ressources