Le blog de Jean David TECHER, un Réunionnais à Avignon

Aller au contenu | Aller au menu | Aller à la recherche


1 2 3 4 >

mardi 13 juillet 2010

Sortir de la console Xen depuis Putty

Si depuis Putty on s'est loggué dans une console d'une VM
xm console NomDeLaVM
Pour sortir, il suffit d'appuyer sur les touches [CTRL] + [(] ("Contrôle" et "Parenthèse Ouvrante"). Alors que sous Linux se sera [CTRL]+[SHIFT]+[(]

lundi 12 juillet 2010

Interface Web pour Xen - Xen Orchestra

Un petit projet qui sembla bien intéressant à tester http://xen-orchestra.com/

dimanche 11 juillet 2010

Xen Orchestra sous Debian Lenny (utilisation avec PostgreSQL)

Xen Orchestra est une superbe interface Web permettant de gérer facilement ses VM si on doit gérer plusieur VM réparties par exemple sur plusieurs dom0. J'ai opté pour cette solution car elle offre une interface conviviale pour la gestion des domU.


Xen Orchestra en action

Pour mes test, j'ai choisi d'utiliser une base PostgreSQL pour la gestion des utilisateurs gérant la base

Téléchargement

wget http://project.xen-orchestra.com/p/xen-orchestra/source/download/master/ -O toto && unzip toto
On obtiendra ainsi un répertoire xen-orchestra-master.

Pour la suite,il suffira de suivre les indications des fichiers INSTALL et README livrés dans le répertoire décompressé.

Remarques: Pour la suite de ce billet, je désignerais
  • le fichier INSTALL par [1]
  • le fichier README par [2]

Prérequis

Conformément, aux recommendations de [1], sur la machine qui hébergera l'application Web, il faut installer quelques paquets
apt-get update
apt-get install php5-cli php5-xmlrpc php5-pgsql

Fichier de configuration.

Comme indiqué dans [1], on renomme le fichier en question

mv xen-orchestra.conf.dist xen-orchestra.conf
Les modifications fourniront dans mon cas le fichier suivant
melina-xen06:/opt/sites/xen-orchestra-master$ cat xen-orchestra.conf 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Configuration of Xen Orcherstra (XO) ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;
; Global configuration ;
;;;;;;;;;;;;;;;;;;;;;;;;
[global]

; Refresh Time in seconds for Web Interface, 10 is default
refresh = 10

; XO can use a database to manage users, but this is optional, you may disable
; it by uncommenting this entry.
disable_database = false

; When the database is disabled, only the guest user is available and what he
; can do is defined by this entry.
; - NONE  Guest is not able to see or do anything (this is the default).
; - READ  Guest is only able to see the list of dom0s/domUs.
; - WRITE As READ + he is also able to change
; - ADMIN As WRITE but also gives the power to change Xen Orchestra's
;         configuration. Normally, ADMIN gives also the ability to create and
;         manage users but since the database is disabled, this feature is too.
default_guest_permission = ADMIN


;;;;;;;;;;;;;;;;;;;;;;;;;;
; Database configuration ;
;;;;;;;;;;;;;;;;;;;;;;;;;;
; XO can use a database to manage users and their rights.
; Since XO uses databases through PDO (PHP Database Object), you have the
; ability to choose which database you want use.
; For more information, see http://fr2.php.net/manual/en/pdo.drivers.php
[database]

; The Database Source Name is used to specify which type of database you want to
; use and to define the information required to connect to it.
dsn = "pgsql:host=melina-xen01.davidgis.fr dbname=xendb"

; If your database required an authentication, you have to use the following
; two entries.
username = pgxenadmin
password = "pgxenadmin"


;;;;;;;;;;;;;;;;;;;;;;;
; Dom0s configuration ;
;;;;;;;;;;;;;;;;;;;;;;;

; Server address and port. Example for 2 dom0s :
;
[melina:9363]
username = xenxen
password = xenxen
;
; [xen.intranet.com:9363]
; username = test1
; password = test1
Ainsi
  1. Ma base de données PostgreSQL se trouvera sur le serveur melina-xen01 pour la base xendb avec les login/password (pgxenadmin/pgxenadmin)
  2. Le seul dom0 a interrogé sera melina
  3. L'interface sera hébergée sur melina-xen06
Ma répartition sera donc la suivante

Répartion pour Xen-Orchestra

PostgreSQL - Création de la base de données

Une fois connecté à melina-xen01 (qui hébergera la base de données), on créé donc une petite base de données ainsi que l'utilisateur en question

postgres@melina-xen01:~$ creatdb xendb
postgres@melina-xen01:~$ createuser -seP pgxenadmin
Saisissez le mot de passe pour le nouveau rôle : 
Saisissez-le à nouveau : 
CREATE ROLE pgxenadmin PASSWORD 'md5bf3713213e02ee1fca17481c9781cf67' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
postgres@melina-xen01:~$ psql  xendb -c "ALTER DATABASE xendb OWNER TO pgxenadmin;"
ALTER DATABASE

PostgreSQL - Création des utilisateurs

melina-xen06:~# cd /opt/sites/xen-orchestra-master/scripts/
melina-xen06:/opt/sites/xen-orchestra-master/scripts# ./exec-sql-script 
4 script(s) available.
 1: MySQL_create-tables
 2: MySQL_drop-tables
 3: PostgreSQL_create-tables
 4: PostgreSQL_drop-tables
Enter the number of the one you want: 3
You have selected "PostgreSQL_create-tables".

Query: CREATE TYPE PERMISSION AS ENUM ('NONE', 'READ', 'WRITE', 'ADMIN')
int(0)

Query: CREATE TABLE users
(
        id SERIAL NOT NULL, -- SERIAL = Integer + auto-increment.
        name CHARACTER(50) NOT NULL, -- Name = login.
        password CHARACTER(32) NOT NULL, -- All passwords are hashed with md5,  thus, the length is 32 characters.
        email CHARACTER(320) NOT NULL, -- The maximum size of an email address is 320 characters.
        permission PERMISSION NOT NULL,

        PRIMARY KEY (id),
        UNIQUE (name), -- It seems an index is implied by UNIQUE.
        UNIQUE (email)
)
int(0)

Query: CREATE TABLE acls
(
        user_id INTEGER NOT NULL,
        dom0_id CHARACTER(261) NOT NULL, -- DNS: 255 chars max + 1 ':' + 5 chars for the port.
        domU_name CHARACTER(50), -- No idea if there is a limit, use 50 until someone complains.
        permission PERMISSION NOT NULL,

        PRIMARY KEY (user_id, dom0_id, domU_name),
        FOREIGN KEY (user_id) REFERENCES users (id)
)
int(0)

Query: CREATE INDEX acls_user_id_key ON acls (user_id)
int(0)
melina-xen06:/opt/sites/xen-orchestra-master/scripts# ./create-user 
Username: xenxen
Password: xenxen
Email: info@davidgis.fr
Permission (NONE, read, write, admin): admin
User created with identifier 1.

Mise en place de l'interface Web (Virtual Host)

Mon fichier sera le suivant
NameVirtualHost 192.168.2.224

<VirtualHost 192.168.2.224>
        ServerName xen-orchestra.davidgis.fr
        ServerAlias xen-orchestra

        DocumentRoot    /opt/sites/xen-orchestra-master/htdocs

        ErrorLog /opt/sites/logs/xen-orchestra.error.log
        CustomLog /opt/sites/logs/xen-orchestra.access.log combined

    <Directory "/opt/sites/xen-orchestra/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>


</VirtualHost>

Si on dispose d'un BIND pour son réseau local, on s'assure d'ajouter l'entrée nécessaire pour la nouvelle IP.

Au niveau du fichier /etc/networking/interfaces, on ajoute aussi

# Alias pour xen-orchestra
###########################
auto eth0:4
iface eth0:4 inet static
 address 192.168.2.224
 gateway 192.168.2.253
 netmask 255.255.255.0
 broadcast 192.168.2.255

On active ensuite le site

melina-xen06:~/xen# a2ensite xen-orchestra
Enabling site xen-orchestra.
Run '/etc/init.d/apache2 reload' to activate new configuration!
melina-xen06:~/xen# /etc/init.d/apache2 reload

Xen et le dom0 cible

La machine melina correspond à mon dom0.

Conformément à [2], il faut activer les échanges en XMLRPC. Pour des raisons de simplicités, je me suis limité à activer la ligne en question (xen-api-server ((9363 unix)))

melina:~# grep -vE '^(#|$)' /etc/xen/xend-config.sxp
(logfile /var/log/xen/xend.log)
(loglevel DEBUG)
(xen-api-server ((9363 unix)))
(xend-relocation-server yes)
(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')
(network-script network-bridge)
(vif-script vif-bridge)
(dom0-min-mem 512)
(enable-dom0-ballooning yes)
(total_available_memory 0) 
(dom0-cpus 0)
(vncpasswd '')

Conformément à la remarque formulée dans [2],si on veut pouvoir allumer/suspendre/éteindre les domU, il faut pour celà procéder à la inscription par la commande xm new .....cfg

Dans mon cas:

  1. Il me manquait un paquet pour pouvoir utiliser cette commande, donc
    apt-get install python-xml
  2. Pour chaque machine, il suffit ensuite:
    1. de l'eteindre
      xm shutdown /etc/xen/machines/melina-xen0X.cfg
    2. De l'inscrire
      xm new /etc/xen/machines/melina-xen0X.cfg
    3. de la redémarrer
      xm start melina-xen0X
où X désigne un numéro de machine

dimanche 20 juin 2010

Migration de Xen 3.2.1 vers 4.0 sous Debian Lenny

Prenant mon courage à deux mains, je me suis donc convaincu ce samedi de tenter de migrer mon serveur Xen 3.2.1vers Xen 4.0

J'ai donc suivi les indications fournies dans les urls suivantes

Pour mes propres tests, l'installation s'est avérée convaincante pour

  • noyau: 2.6.32-bpo.5-xen-686 que l'on peut récupérer dans les backports de Lenny (voir [1])
  • Xen: 4.0.0
melina:~# xm dmesg|head -n20
 __  __            _  _    ___   ___  
 \ \/ /___ _ __   | || |  / _ \ / _ \ 
  \  // _ \ '_ \  | || |_| | | | | | |
  /  \  __/ | | | |__   _| |_| | |_| |
 /_/\_\___|_| |_|    |_|(_)___(_)___/ 
                                      
(XEN) Xen version 4.0.0 (root@) (gcc version 4.3.2 (Debian 4.3.2-1.1) ) Sun Jun 20 14:07:07 CEST 2010
(XEN) Latest ChangeSet: unavailable
(XEN) Command line: 
(XEN) Video information:
(XEN)  VGA is text mode 80x25, font 8x16
(XEN)  VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN)  Found 1 MBR signatures
(XEN)  Found 1 EDD information structures
(XEN) Xen-e820 RAM map:
(XEN)  0000000000000000 - 000000000009fc00 (usable)
(XEN)  000000000009fc00 - 00000000000a0000 (reserved)
(XEN)  00000000000e0000 - 0000000000100000 (reserved)
(XEN)  0000000000100000 - 00000000cffa0000 (usable)

Mise à jour des VM

Je dispose de 7 machines virtuelles: melina-xen01...melina-xen07 dont une sous Windows XP (melina-xen04). Les autres machines sont sous Debian Lenny

Pour finaliser la migration des VM sous Debian Lenny

  • On met à jour les valeurs pour kernel et ramdisk dans les fichiers de configuration
    sed -i "s:2.6.26-2-xen-686:2.6.32-bpo.5-xen-686:g" /etc/xen/machines/melina-xen0*
    
  • Il faut ensuite copier le répertoire des modules du noyau dans les VM. Ici j'ai pris soin de les avoir éteintes
    for id in 1 2 3 5 6 7;
    do 
             echo ${id};
             mount /dev/xen-vm/melina-xen0${id}-disk /mnt;
             cp -r /lib/modules/2.6.32-bpo.5-xen-686/ /mnt/lib/modules;
            sleep 2;
            umount /mnt;
           sleep 2;
    done
Pour la machine sous Windows (melina-xen04), j'ai juste modifiée la ligne d'accès au hvmloader. Ce qui donne donc
melina:~# grep hvmloader /etc/xen/machines/melina-xen04.cfg
kernel = "/usr/lib/xen/boot/hvmloader"
#kernel = "/usr/lib/xen-default/boot/hvmloader"