Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

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


< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 >

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 27 juin 2010

Oracle 10g sous Debian Etch

Il faut consulter l'url http://debsousdeb.canalblog.com/tag/oracle

mercredi 23 juin 2010

FFmpeg 0.6 et WebM/VP8/libvpx

C'est en me rendant sur le site d'un de mes outils préférés cette semaine que je me suis aperçu que Ffmpeg était sorti depuis déjà une semaine. Et la cerise sur le gâteau c'est le support pour le nouveau container vidéo WebM de Google et le codec VP8, l'amélioration d'encodage en H264 et Theora. Oh trop cool :)

La release note de la version estampillé 0.6 est disponible à http://ffmpeg.org/releases/ffmpeg-0.6.release

Compilation de libvpx/libx264/ ffmpeg

REMARQUE: Ici je reprends les notes que j'ai fourni dans ce billet. Merci de s'y référer

  1. libvpx

    On télécharge et on installe
    cd $SRC
    wget http://webm.googlecode.com/files/libvpx-0.9.1.tar.bz2
    tar xvjf libvpx-0.9.1.tar.bz2
    cd libvpx-0.9.1
    ls
    ./configure --enable-vp8 --prefix=/opt/multimedia/
    make
    make install
    
  2. libx264

    ffmpeg 0.6 étant sortie le 15 juin, j'ai donc procédé à un test de compilation pour la snapshot de x264 en date du 15. Elle semble (à priori) ne pas poser de problème de compilation.
     cd $SRC
     wget http://downloads.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20100615-2245.tar.bz2
     tar xvjf x264-snapshot-20100615-2245.tar.bz2
     cd x264-snapshot-20100615-2245
     ./configure --prefix=$TOOLS_MULTIMEDIA_DIR --enable-shared=no --enable-static=yes
    make
    make install
    
  3. ffmpeg

    On télécharge les sources de ffmpeg 0.6 en remplacement de la version SVN de mon précédent billet et on compile. J'ai pris soin ici
    • de spécifier l'option --enable-libvpx
    • d'ajouter -I/opt/multimedia/include/vpx pour --extra-cflags
     ./configure --prefix=/opt/ffmpeg-0.6 --enable-libvpx --enable-libdirac \
    --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis \
    --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-libopencore-amrnb \
    --enable-libopencore-amrwb --enable-version3 --enable-libfaad --enable-libfaadbin \
    --enable-libfaac --enable-gpl --enable-nonfree --enable-pthreads \
    --extra-cflags='-I$TOOLS_MULTIMEDIA_DIR/include/ -I$TOOLS_MULTIMEDIA_DIR/include/a52dec/ \
    -I$TOOLS_MULTIMEDIA_DIR/include/lame/ -I$TOOLS_MULTIMEDIA_DIR/include/ \
    -I$TOOLS_MULTIMEDIA_DIR/include/ao -I$TOOLS_MULTIMEDIA_DIR/include/libyasm \
    -I$TOOLS_MULTIMEDIA_DIR/include/ogg -I$TOOLS_MULTIMEDIA_DIR/include/SDL \
    -I$TOOLS_MULTIMEDIA_DIR/include/speex -I$TOOLS_MULTIMEDIA_DIR/include/vorbis \
    -I$TOOLS_MULTIMEDIA_DIR/include/theora -I$TOOLS_MULTIMEDIA_DIR/include/schroedinger-1.0 \
    -I$TOOLS_MULTIMEDIA_DIR/include/dirac -I$TOOLS_MULTIMEDIA_DIR/include/opencore-amrnb/ \
    -I$TOOLS_MULTIMEDIA_DIR/include/opencore-amrwb/ -I/opt/multimedia/include/vpx' \
     --extra-ldflags=-L$TOOLS_MULTIMEDIA_DIR/lib
    make
    make install
    

Exemple de conversion (simple) en WebM

On effectue par exemple la simple conversion
/opt/ffmpeg-0.6/bin/ffmpeg -i janadefi-daywith01.wmv -f webm -vcodec libvpx janadefi-daywith01.webm

WebM: Lecteur Ffplay en cours sur une vidéo de Jana Defi
On regarde la taille des fichiers
du -hs janadefi-daywith01.w*
16M	janadefi-daywith01.webm
153M	janadefi-daywith01.wmv
Y'a pas photo pour un ratio de 10%. Pas mal pour ce container

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"