Tous les articles par Florian Cristina

Bench HDD : Bonnie++

On m’a conseillé d’utiliser Bonnie++ afin de bencher plus en profondeur.

Télécharger bonnie ici : http://www.coker.com.au/bonnie++/

# wget http://www.coker.com.au/bonnie++/bonnie++-1.03c.tgz
# tar -zxvf bonnie++-1.03c.tgz
# cd bonnie++
# ./configure
# make
# make install

A présent il ne vous reste plus qu’a spécifié la taille du fichier de test et son répertoire. Dans mon cas un fichier de 8GB dans /home/artiflo/temp. Il est conseillé que la taille du fichier de test sous le double de la mémoire.

# bonnie++ -s 8000 -d /home/artiflo/temp

Obtenir des informations sur le HDD

Il est assez facile d’obtenir une ribambelle d’information sur votre disque dur avec l’intermédiaire de smartmontools.

# apt-get install smartmontools

Pour obtenir les information minimum à l’adaptant à votre besoin:

# smartctl -i -d ata /dev/sda

Et enfin pour obtenir toutes les infos, dont les erreurs SMART :

# smartctl -d ata -a /dev/sda

Bench Hdd chez dedibox

La semaine dernière j’ai écris un billet sur un petit bench hdd chez ovh. Je récidive mais cette fois ci chez dedibox.

Je tiens a remercier l’équipe de dedibox qui m’a permis d’avoir accès à tout leur gamme de serveur afin de réaliser ce test.

Je vais reprendre exactement le même protocole de test :
Pour l’écriture voici la commande qui a été utilisé :

# time dd if=/dev/zero of=./8gb bs=1024k count=8192

Pour la lecture voici la commande qui a été utilisé :

# time dd if=./8gb of=/dev/null bs=64k

Je vais rajouter hdparm au protocole de test :

hdparm -tT /dev/sda2

Voici les résultat sous forme de tableau:

Ecriture Lecture Ecriture Lecture hdparm cache hdparm read
Dedibox v1 2,56 1,5 49,2 78 400 74,75
Dedibox v2 3,15 2,1 44,1 71 600 67,7
Dedibox v2 RAID 3,23 2,21 42,5 60,7 605 59
Dedibox XL 1,57 1,53 73,4 75,7 2978 91,1
Dedibox XL RAID 2,2 1,55 70,4 74,8 3489 86,41


En premier les performances en minutes :
Graphique Bench Dedibox 2008

Les performances en MB/s :
Graphique Bench Dedibox 2008

Pour note les Dedibox v1 sont pourvus de Seagate 7200.10, les Dedibox v2 de hitachi 7k160 et dedibox XL de Hitachi P7K500.

Note pour xen

Une petite note pour Xen, inutilisable c’est un brouillon publique.

    Network setup

#nano /etc/network/interfaces

auto eth0
iface eth0 inet static
        address 88.191.34.xxx
        netmask 255.255.255.0
        network 88.191.34.0
        broadcast 88.191.34.255
        gateway 88.191.34.1

# ifconfig -a

eth0 Lien encap:Ethernet HWaddr 00:40:63:E7:AC:66
inet adr:88.191.34.xxx Bcast:88.191.34.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:189 errors:0 dropped:0 overruns:0 frame:0
TX packets:115 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:16820 (16.4 KiB) TX bytes:13745 (13.4 KiB)
Interruption:18 Adresse de base:0xfc00

lo Lien encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

J’ajoute dans /etc/network/interfaces

auto eth0
iface eth0 inet static
address 88.191.34.50
netmask 255.255.255.0
network 88.191.34.0
broadcast 88.191.34.255
gateway 88.191.34.1

auto eth0:0
iface eth0:0 inet static
address 88.191.202.227
netmask 255.255.255.224
network 88.191.202.224
broadcast 88.191.202.255

# /etc/init.d/networking restart

# ifconfig -a

eth0 Lien encap:Ethernet HWaddr 00:40:63:E7:AC:66
inet adr:88.191.34.50 Bcast:88.191.34.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:210 errors:0 dropped:0 overruns:0 frame:0
TX packets:435 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:67357 (65.7 KiB) TX bytes:45173 (44.1 KiB)
Interruption:18 Adresse de base:0xfc00

eth0:0 Lien encap:Ethernet HWaddr 00:40:63:E7:AC:66
inet adr:88.191.202.227 Bcast:88.191.202.255 Masque:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interruption:18 Adresse de base:0xfc00

lo Lien encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

    Xen Setup

Install

///VIEUX : apt-get install xen-linux-system-2.6.18-5-xen-686 xen-tools libc6-xen xen-hypervisor-3.0.3-1-i386-pae xen-linux-system-2.6.18-5-xen-vserver-686 bridge-utils

apt-get install xen-hypervisor-3.0.3-1-i386 xen-ioemu-3.0.3-1 xen-linux-system-2.6.18-4-xen-vserver-686 xen-tools xen-utils-3.0.3-1 xen-utils-common linux-headers-2.6.18-4-xen-686 linux-image-2.6.18-4-xen-vserver-686 linux-image-2.6.18-4-xen-686 linux-image-xen-686 linux-modules-2.6.18-4-xen-vserver-686 linux-modules-2.6.18-4-xen-686

— Suppression de lilo, installation de GRUB

# apt-get remove lilo –purge
# apt-get install grub mdadm

répondre all

— Installation de GRUB sur le MBR

# grub-install /dev/sda

— Création de la configuration GRUB (menu.lst)

# update-grub

reboot

# ifconfig -a

eth0 Lien encap:Ethernet HWaddr 00:40:63:E7:AC:66
inet adr:88.191.34.50 Bcast:88.191.34.255 Masque:255.255.255.0
adr inet6: fe80::240:63ff:fee7:ac66/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:457 errors:0 dropped:0 overruns:0 frame:0
TX packets:186 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:36270 (35.4 KiB) TX bytes:20743 (20.2 KiB)
Interruption:16 Adresse de base:0xfc00

eth0:0 Lien encap:Ethernet HWaddr 00:40:63:E7:AC:66
inet adr:88.191.202.227 Bcast:88.191.202.255 Masque:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interruption:16 Adresse de base:0xfc00

lo Lien encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

sit0 Lien encap:IPv6-dans-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

# /etc/xen/scripts/network-bridge status

============================================================

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:40:63:e7:ac:66 brd ff:ff:ff:ff:ff:ff
inet 88.191.34.50/24 brd 88.191.34.255 scope global eth0
inet 88.191.202.227/27 brd 88.191.202.255 scope global eth0:0
inet6 fe80::240:63ff:fee7:ac66/64 scope link
valid_lft forever preferred_lft forever
Device « xenbr0 » does not exist.

# xen-create-image –dir /home/xen –hostname tutu –debootstrap –dist etch –boot

# nano /etc/xen-tools/xen-tools.conf

kernel = /boot/vmlinuz-2.6.18-4-xen-686
initrd = /boot/initrd.img-2.6.18-4-xen-686

# xen-delete-image
# xen-list-images

    WINDOWS

2.6.18-5-xen-686

title Xen 3.0.3-1-i386-pae / Debian GNU/Linux, kernel 2.6.18-5-xen-686
root (hd0,0)
kernel /xen-3.0.3-1-i386-pae.gz
module /vmlinuz-2.6.18-5-xen-686 root=/dev/md2 ro console=tty0
module /initrd.img-2.6.18-5-xen-686
savedefault

1 / creer un fichier pour contenir le guest

# dd if=/dev/zero of=/var/xenvm/winxp.img bs=1024k count=4000

2 / decommenter le vif-nat dans /etc/xen/xend-config.sxp

3 / Activé le pool

#nano /etc/modules.conf
#options loop max_loop=64
#rmmod loop
# modprobe loop

4 / Config

import os, re
arch = os.uname()[4]
if re.search('64', arch):
    arch_libdir = 'lib64'
else:
    arch_libdir = 'lib'
kernel = '/usr/lib/xen-3.0.3-1/boot/hvmloader'
builder='hvm'
memory = 512
shadow_memory = 100
name = 'WinXP'
vcpus=1
#vif = [ 'type=ioemu, mac=00:16:3e:FF:FE:05, bridge=xenbr0 ']
#vif = [ 'ip=192.168.1.130, type=ioemu, model=ne2k_pci' ]
vif = [ 'ip=192.168.1.130' ]
disk = [ 'file:/var/xenvm/winxp.img,ioemu:hda,w','file:/var/xenvm/IMAGES/WINXPVL.ISO,hdc:cdrom,r' ]
device_model = '/usr/lib/xen-3.0.3-1/bin/qemu-dm'
boot="d"
vnc=1
vncviewer=1
vncdisplay=3
vncunused=0
vncpasswd=''
nographic=0
localtime=1
usb=1
usbdevice='mouse'
keymap='us'
ne2000=1
    OVH

# echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
# /etc/init.d/networking restart
# xm create /home/xen/winxp.cfg

source

http://www.howtoforge.com/debian_etch_xen_3.1

Glassfish dans une Zone

En savourant un bagel dans cette belle ville de Montréal je me suis dit « tiens si j’écrivais un mini guide sur l’installation de Glassfish dans une Zone solaris ». Et paf c’est partie.

Je vais passer l’étape d’installation de Solaris 10 et de sa configuration que vous pouvez trouver sur mon blog et passer directement a la création de la zone puis l’installation de glassfish dedant.

Alors il faut commencer par creer l’espace de stockage pour la future zone.

# mkdir /var/zones
# mkdir /var/zones/z_glassfish

Un petit coup de chmod pour pacifier les droits :

# chmod –R 700 /var/zones/z_glassfish

Je ne vais pas créer de pool de ressource CPU mains directement créer la zone. Je reviendrais dans un autre billet à ce sujet.

# zonecfg -z z_glassfish
sunrise: No such zone configured
Use ‘create’ to begin configuring a new zone.
#zonecfg:sunrise> create # Création de la Zone
#zonecfg:sunrise> set zonepath=/var/zones/z_glassfish #Dossier de la zone
#zonecfg:sunrise> add net # Ajout d’une configuration réseau
#zonecfg:sunrise:net> set address=192.168.1.120 #Ip de la zone
#zonecfg:sunrise:net> set physical=pcn0 #Nom de l’interphase réseau physique (vmware pour l’exemple)
#zonecfg:sunrise:net> end # fin de la configuration réseaux
#zonecfg:sunrise> verify # Vérification de la configuration
#zonecfg:sunrise> commit # Validation de la configuration
#zonecfg:sunrise> exit # Sortie de la configuration de zone

On va vérifier la configuration :

# zonecfg -z z_glassfish info
zonepath: /var/zones/z_glassfish
autoboot: false
pool:
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
net:
address: 192.168.1.120
physical: pcn0

Maintenant que la configuration de la zone est prête on va passer à la création à proprement parlé de la zone. Cette étape peut être relativement longue celon les performances de votre machine.

# zoneadm –z z_glassfish verify
# zoneadm -z z_glassfish install
Preparing to install zone .
Creating list of files to copy from the global zone.
Copying <2812> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1200> packages on the zone.
Initialized <1200> packages on zone.
Zone is initialized.
Installation of <1> packages was skipped.
Le fichier
contient un journal de l’installation de la zone.

Vous pouvez vérifier que la zone z_glassfish est bien installé :

# zoneadm list -cvi

Maintenant que la zone est créer, on va pouvoir la démarrer :

#zoneadm –z z_glassfish boot -s

Lors du premier boot il faut configurer la zone en fonction de vos préférence. Parfois Solaris a un peu du mal a reconnaitre le F2 dans ce utiliser la combinaison de touche MAJ + Esc + 2 pour validé les étapes.

On se loge sur la zone z_glassfish :

# zlogin –C z_glassfish

Pour ne pas encombré inutilement d’image le billet, je vous ai fait un récapitulatif des différentes options que vous devrez choisir (dans l’ordre d’affichage) :

Langue : Français
Environnement Localisé : France(UTF8)
Emulateur de terminal CDE (dtterm)
Hostname: glassfish
Configuration kerberos: No
Name Service : None
NFS4 configuration: Choix par defaut.
Time zone: Europe
Countries et regions : France
Mot de passe : password

A présent la console doit vous demander de vous identifier

glassfish console login : root
password : password

Voila vous êtes dans votre zone, vous pouvez faire exit pour en sortir et retour dans votre zone globale solaris.

Maintenant installons glassfish.

Toutes cette opération se déroule dans la zone que vous venez de créer, vérifier que vous êtes bien logger dedans et non dans votre zone globale.

# wget http://java.net/download/javaee5/v2ur2/promoted/SunOS_X86/glassfish-installer-v2ur2-b04-sunos_x86.jar

A présent, je vais executer le jar télécharger, qui va s’installer dans le répertoire courant.

# java -Xmx256m -jar glassfish-installer-v2ur2-b04-sunos_x86.jar

Je déplace tout ça dans un dossier appserver que j’ai creer dans le /var/ Vous pouvez faire comme vous voulez, cela ce configure dans le setup.xml

# mkdir /var/appserver
# cp -R glassfish/* /var/appserver/
# cd /var/appserver/

Je rajoute les droits d’exécution sur le dossier qui contiens les librairies qui vont me permettre de déployer mon serveur glassfish.

# chmod -R +x lib/ant/bin

Et enfin, je vais compiler le fichier setup.xml pour déployer le serveur.

# lib/ant/bin/ant -f setup.xml

Normlement, vous devrez avoir a la fin de l’exécution ceci :

BUILD SUCCESSFULL

A présent on va utiliser asadmin pour déployer le domain par defaut que l’on vient de creer. Attention l’asadmin fournis dans Solaris 10 provoque une erreur de type timeout

Timeout waiting for domain domain1 to go to starting state.
CLI156 Could not start the domain domain1.

Pour eviter cela, je vais utiliser le asadmin livré avec glassfish

# bin/asadmin start-domain domain1

Ce qui devrait vous retourner quelque comme ça :

Starting Domain domain1, please wait.
Log redirected to /var/appserver/domains/domain1/logs/server.log.
Redirecting output to /var/appserver/domains/domain1/logs/server.log
Domain domain1 is ready to receive client requests. Additional services are being started in background.
Domain [domain1] is running [Sun Java System Application Server 9.1_02 (build b04-fcs)] with its configuration and logs at: [/var/appserver/domains].
Admin Console is available at [http://localhost:4848].
Use the same port [4848] for « asadmin » commands.
User web applications are available at these URLs:
[http://localhost:8080 https://localhost:8181 ].
Following web-contexts are available:
[/web1 /__wstx-services ].
Standard JMX Clients (like JConsole) can connect to JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://glassfish:8686/jmxrmi] for domain management purposes.
Domain listens on at least following ports for connections:
[8080 8181 4848 3700 3820 3920 8686 ].
Domain does not support application server clusters and other standalone instances.

Vous pouvez donc a présent accéder aux différent service de votre serveur glassfish comme indiqué dans le log juste au dessus.

Source qui m’ont aider a rédiger ce billet :
http://swik.net/GlassFish+solaris
https://glassfish.dev.java.net/
et bien sur les guru de chez guses : www.guses.org

Solaris le terminal cassé

Lors d’un crash de ma vmware une de mes zones a perdus la configuration du terminale. Ce qui provoque des erreur de type :

TERM environment variable need set

Alors on peut vérifier avec un env comment se porte les variables d’environnement.
Dans mon cas, cela donnait :

# env

HZ=
LC_MONETARY=fr_FR.UTF-8
SHELL=/usr/bin/bash
LC_NUMERIC=fr_FR.UTF-8
MAIL=/var/mail/root
PATH=/opt/csw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin
LC_MESSAGES=fr.UTF-8
LC_COLLATE=fr_FR.UTF-8
PWD=/root/glassfish
TZ=Europe/Paris
SHLVL=1
HOME=/
LOGNAME=root
LC_CTYPE=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
_=/usr/bin/env
OLDPWD=/root

La solution est relativement simple, dans mon cas j’utilise dtterm ce qui donne :

# TERM=dtterm
# export TERM

Et la magie fonctionne.

Solaris 10 for noob

Comme je débute en solaris, je me fait une petite note pour ma loutre ayant toujours connus le monde linux.

Alors pour rajouter le user artiflo, qui aura son répertoire dans /export/home/artiflo et qui utilisera par défaut le bash:

# useradd -d /export/home/artiflo -m -s /bin/bash -c « Artiflo » artiflo

On peut changer le shell par defaut avec la commande :

# passwd -e user

Et dans mon cas je vais donc répondre /usr/bin/bash.
A noter que le shell par défaut est précisé par /etc/passwd, qui a été lui même initialisé au moment de créer l’utilisateur (avec la commande useradd, option -s).

Configurer son mot de passe :

# passwd artiflo

Connaitre les informations réseau :

# ifconfig -a

Dans un premier temps je vais faire hurler les véritables admin sys SOLARIS et installer nano dans mon petit Solaris pour illustrer l’utilisation de pkg-get avec les dépôt de blastwave et les clés qui vont avec :

# pkgadd -d http://www.blastwave.org/pkg_get.pkg
# /opt/csw/bin/pkg-get -i gnupg textutils

Répondre « yes » à toutes les questions. Il se peut que l’on vous demande beaucoup beaucoup beaucoup de répondre à des questions lié à des dépendance. Si vous savez ce que vous faire vous pouvez sauter les étapes de contrôle en faisant ceci et pouvoir aller jouer avec votre loutre pendant que gnome s’installe.

# cp -p /var/pkg-get/admin-fullauto /var/pkg-get/admin

A présent vous avec pkg-get d’installer vous pouvez installer tous les applicatifs disponible chez blastwave.
Commençons donc par nano.

# /opt/csw/bin/pkg-get -i nano

Je sens déjà ma loutre qui respire en ayant nano sous la papate.

Maintenant que nano est installer on va en profiter pour configurer le pkg-get.conf afin de préciser les mirroir de blastwave qui correspondent a votre zone géographique. La liste des mirroirs ce trouve ici http://www.blastwave.org/mirrors.html. Pour la france je vous conseil ceux de solaris-fr en stable ce qui donne ceci :http://blastwave.solaris-fr.org/stable/

# /opt/csw/bin/nano /opt/csw/etc/pkg-get.conf

Commentez ceux pas défaut et remplacer par ceci :

# solaris-fr.org, pour la FRANCE: 
url=http://blastwave.solaris-fr.org/stable/

A présent je vais modifier le PATH pour les user et le root afin que les binaire de blastwave puisse s’éxecuter sans devoir ecrire le chemin a la main a chaque fois. Pour cela il faut éditer 2 fichier : /etc/default/login et /etc/default/su et modifier a chaque fois le PATH et le SUPATH ainsi

# /opt/csw/bin/nano /etc/default/login

PATH=/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin
SUPATH=/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin

et

# /opt/csw/bin/nano /etc/default/su

PATH=/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin
SUPATH=/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin

Il faut vous déloger puis vous reloger pour que les informations soit pris en compte.

Vous pouvez consulter tous les paquets installer à l’aide de pkg ainsi :

# ls -ladt /var/sadm/pkg/CSW*

Enfin je termine sur un point de sécurité « facultatif » pour la plus part.

Tout a l’heure je vous ai fait installer gnupg et texutils afin de pouvoir profiter de la vérification de l’installation des paquets.
Nous allons donc télécharger puis importer la clés pgp de chez blastwave.

# wget –output-document=pgp.key http://www.blastwave.org/mirrors.html
# gpg –import pgp.key

A présent les paquets que vous installerez auront leurs clés de vérifier.

C’est fini, voici des sources qui m’ont aidé a écrire ce billet :

http://from8to5.blogspot.com/2007/11/solaris-add-user-useradd.html

http://www.blastwave.org/howto.html

Présentation Zones Solaris

Voici mon premier billet sur solaris. J’ai écris ceci pour dans le cadre du laboratoire linux de SUPINFO. C’est une explication de l’utilisation des zones dans le pour l’entreprise.

Zone solaris

1. La virtualisation

La virtualisation serveur n’a rien de nouveau IBM le pratique depuis longtemps en mainframes avec VM/370 (1972). Mais ce n’est que plus récemment avec l’expansion de la Virtualisation pour serveur Intel x86 (Xen, OpenVZ, etc) que Sun à commencer avec Solaris 10 à mettre en avant ses solutions de Virtualisation. Dans ce document nous allons étudier la virtualisation n’ont pas pour mettre en avant le principe de mettre plusieurs OS différent sur une OS hôte comme ce que le grand publique a l’habitude de faire mais plutôt la consolidation.

2. Consolidation kesako ?

2.1. La consolidation : Faire plus avec moins.

Le principe de la consolidation est simple. Cela consiste à fusionner plusieurs processus hébergé sur des serveurs différents sur un même serveur tout en conservant la sécurité et la répartition de charge des processus.

Solaris zone Conslidation

Un exemple :
Vous êtes l’administrateur système d’un parc de 8 serveurs sous Solaris qui travail pour le même projet en load balancing. Il y 4 serveurs web, 3 serveur de BDD et 1 serveur mail. Tous ces serveurs ne sont pas exploiter aux mieux de leurs performance du fait de l’impossibilité de répartir la charge CPU entre eux selon le besoin. De surcroit la quantité de travail pour administrer les 8 serveurs lors des mises à jour ou du contrôle des logs est longue et fastidieuse.

Solution : La consolidation, vous regrouper ces processus sur le même serveur et vous partager aussi bien le CPU, la RAM et l’espace disque entre les serveurs, vous améliorer ainsi les performances, réduisez le temps de maintenance et les couts. Conteneur Solaris : Les Zones

Alors pour ceux qui ne lisent pas entre les lignes voici les 3 principaux intérêts de la consolidation :

  • La Continuité de service avec la migration des zones. Reprise en cas de panne en relançant la zone préalablement sauvegardé sur un autre serveur Solaris sans avoir besoin de la réinstaller.
  • Performance. Optimisation de la ressource des serveurs. En permettant de pouvoir utiliser un plus grand nombre d’application sur le même serveur les ressources ne soient pas gaspillées.
  • Cout. En réduisant le nombre de serveur, cela réduit par la même l’espace physique occupé dans le datacenter, les frais de gestion, l’énergie consommé par le serveur et par le système de refroidissement (50% du cout d’un serveur).

2.3. Les autres produits de consolidation

openvzvmware

Xen

Alors comme je l’écrivais plus haut Sun n’a pas inventé le principe de consolidation. Voici les autres
principales solutions de consolidation.

  • Xen pour plateforme x86, x64, IA-64, PowerPC et SPARC. Les OS supporté sont : Linux, FreeBSD, NetBSD, Plan 9, Gnu Hurd.
  • VMware GSX/ESX
  • Les solutions de IBM z/VM.
  • Virtuozzo (OpenVZ) qui s’inspire des Conteneurs solaris
  • Microsoft Virtual Server

3. La virtualisation chez Solaris : les Zones et les Containers

Maintenant que l’intérêt de la consolidation est clarifié attaquons nous à sa mise en place pour Solaris 10. Une machine virtuelle chez Solaris s’appel une Zone (elle peut aussi etre appeler Container).

Solaris zone

3.1. Définition des Zones et des Containers

Un « Solaris Containers » est une application de Virtualisation intégré directement au système d’exploitation qui est apparut pour la premières fois dans Solaris 10 en 2007.Il permet de contrôler et d’allouer les ressources aux différente Zones à partir du système hôte.

Une « Solaris Zones » permet de virtualiser un Système d’exploitation en l’isolant et le sécurisant du
reste du système. Une application fonctionnant dans une zone est donc isolé des autres applications
ce qui la protèges de failles ou de crash d’une application sur une autres. Une zone fournis un niveau d’abstraction pour l’OS virtualisé ce qui permet de séparer de l’accès direct a la couche matériel de la machine.
La limite théorique du nombre maximum de Zone est de 8192 mais en pratique elle dépend de la quantité de ressource hardware requise par les applications comparativement à la quantité hardware disponible. C’est-à-dire le nombre de processeur, mémoire vive, carte réseau, disque dur etc.

Mais est ce que cela consomme plus de ressource ?

OpenSolaris fournis un exemple d’un cas d’utilisation d’un environnement en production web. Sur un vieux Sun Entreprise 250 Server (2 CPU 300Mhz, 512 MB RAM, 3 HDD en RAID de 40 GB) il y a 40 zones d’installée et chacune des zones contient 5 service web Apache. En exécutant des requêtes http sur les serveurs apache les couts en ressource système de la gestion des zones est si faible qu’ils ne sont pas mesurable (moins de 5%).

4. Les différents types de Zones

Il existe 2 type de Zone : La Zone Globale qui est l’instance de Solaris 10 de la machine hôte qui se lance lors du boot et les Zones non-globale qui sont les machine virtualisé héberger dans la Zone Globale.

4.1. La zone Globale

Pour alléger la quantité de ressources nécessaire les applications coexistent dans la Zone Globale. Les Zones non-globale pourront donc faire appel directement à ses applications sans avoir forcement besoin de les installer (nous y reviendront).

Tous systèmes Solaris 10 contiennent donc une Zone Globale. Cette zone globale a 2 fonctions : une pour le créer la couche d’interaction d’abstraction système et l’autre pour le contrôler et l’autre pour gérer les zones non-globale. Les processus et application fonctionnent donc dans la zone globale si aucune zone non-globale n’a été créée.

La zone globale est la seule zone où les zones non-globale peuvent être configurées, installées, gérées et désinstallées. Seul la zone globale est démarrable à partir du hardware du serveur.

L’administration de l’architecture système tel que la gestion périphérique, du routage des IP partagé,
de la reconfiguration dynamique est possible seulement dans la zone globale.
Il y a 2 façons de configurer les adresses IP, soit en allouant une IP exclusive pour une zone soit en IP
partager entre plusieurs zones.

4.2. Les zones Non-Globale

Si les paramètres par défaut sont sélectionnés, chaque Zone non-globale aura besoin d’au minimum 85MB d’espace disque libre pour s’installer si la zone globale a été installée avec tout les Metacluster des paquets Solaris. Tout nouveau paquet installer dans la zone globale demandera de l’espace disque pour les zones non-global. La quantité de mémoire vive minimum par zone est quand a elle de 40MB.
Il existe deux types de model de fichier système de zone non-globale: Les « wholes root » et les « sparse ». Le modèle « whole root » permet une configuration avec plus de paramètre alors que le modèle « wholes root » donne de meilleure performance.

Une zone installer avec le model « full-root » demandera dans les 500MB d’espace disque libre. Chaque zone, en incluant la zone globale se voit attribuer un nom de zone. La zone globale à toujours le nom globale. Chaque zone a un numéro d’identification unique attribué par le système quand la zone est démarrée. La zone globale a toujours le numéro d’identification 0. Le nom de la zone ainsi que son id sont configurable avec la commande « zonecfg ». Chaque zone a un nom de nœud qui est indépendant du nom de zone. Le nom de nœud est attribué par l’administrateur de la zone. Chaque zone dispose d’un chemin d’accès a son répertoire racine qui est relatif au répertoire racine de la zone globale.

4.3. Les différents types de zone Non-Globale

4.3.1. Les Zones Native

Par défaut une Zone non-globales et une Zone Native. Une Zone Native est une zone ayant les mêmes propriétés que le système d’exploitation (Solaris 10) en cours d’exécution sur la zone Globale.

Si le système d’exploitation hôte est configuré avec les Solaris Trusted Extensions chaque Zone non-globales sera associée avec le même niveau de sécurité ou label.

4.3.2. Les Branded Zones

Dans une Zone non-globales il est également possible de lancer un autre environnement d’exploitation que Solaris 10. Les Zones marqué (Branded Zones) permettent d’élargir la possibilité de création d’architecture de Zones différente à travers des framework ou des OS différente.

Il existe pour l’instant 2 types de Zone Branded supporté :

  • Lx branded (une Zone linux) est une Zone Non-globale qui permet d’utilisé les applications développés pour Linux dans un environnement linux complet. Lx branded n’est toutefois pas une distribution Linux à part entière.
  • Solaris 8 Branded permet de migrer un environnement sous Solaris 8 dans une Zone Solaris 8 fonctionnant sur un serveur hôte (Zone Globale) en Solaris 10.

4.4. Droit et privilèges

Un administrateur global a les droits super utilisateur ou rôle d’administrateur Primaire. Lorsque l’administrateur global est connecté à la zone globale il peut surveiller et contrôler l’ensemble du système.
Une zone non-globale peut être administrée par un « administrateur de zone ». L’administrateur global assigne le profil « d’administrateur de zone » dans l’interface de Management de Profile de zone. Les privilèges d’administrateur de zone sont confiné a une zone non-globale.

4.5. Récapitulatif

Zone Globale :

  • ID 0 attribué par le système.
  • Fournit la seule instance du noyau Solaris qui est bootable et fonctionnant sur le système.
  • Contiens une installation complète du Système d’exploitation Solaris.
  • Peut contenir d’autres logiciels, des répertoires, des fichiers et d’autres données qui ne sont pas installés par le biais de paquets.
  • Fournit une base de données produit complète sur tous composants logiciels installés dans la zone globale.
  • Contient les informations de configuration uniquement de la zone globale, comme le nom d’hôte de la zone globale, ou le système de fichier.
  • Est la seule zone qui connait tous composants ou système de fichier.
  • Est la seule zone qui connait l’existence des zones non-globales et leur configuration.
  • Est la seule a partir de laquelle une zone non-globale peut être configuré, installé, géré ou désinstallé.

Zone Non-Globale :

  • ID attribué par le système lors du démarrage de la zone.
  • Opération partagé sous le kernel démarré dans la zone globale.
  • Contient un sous-ensemble de l’installation complète des paquets de l’OS Solaris.
  • Contient des paquets partagés avec la zone globale.
  • Peut contenir des paquets logiciels non partagé depuis la zone globale. • Peut contenir d’autres logiciels, des répertoires, des fichiers et d’autres données qui ne sont pas installés par le biais de paquets ou partager depuis de la zone globale.
  • Fournit une base de données produit complète sur tous composants logiciels installés dans la zone, qu’ils soient présent dans la zone non-globale ou partager en lecture seule depuis la zone globale.
  • N’est pas conscient de l’existe d’autre zone.
  • Ne peux pas configurer, installé, géré ou désinstallé d’autres zone, même elle-même.
  • Contient les uniquement les informations de configuration de la zone non-globale, comme le nom d’hôte de la zone non-globale, ou le système de fichier.
  • Peut avoir sa propre configuration du fuseau horaire.

Smokeping sur Ubuntu 8.04

Aujourd’hui je m’attaque a smokeping

#sudo apt-get install smokeping

Vérifié que votre vhost apache a bien cette ligne d’écrite :

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        

On peut a présent passer a la configuration de smokeping :

#sudo nano /etc/smokeping/config

Tout d’abord il faut préciser dans quel répertoire seront stocké les images. Pour ma part j’ai décider de tout stocker dans le répertoire du site web ce qui donne ceci :

imgcache = /home/user/www/monsite.fr/smokeping

Ensuite je passe à la configuration des infos du serveur :

owner    = Artiflo
contact  = artiflo@gmail.com
cgiurl   = http://urldevotresite/cgi-bin/smokeping.cgi
mailhost = localhost

Configurer le mail d’alerte :

*** Alerts ***
to = alertee@address.somewhere
from = root@tondomain.fr

La suite de la configuration est plus pointu est n’est pas utile de modifier. Je passe directement à la configuration des arbres de ping.

Par defaut il y a le localhost ce qui n’est pas une mauvaise chose, je vous conseil de le laisser pour le reste il vous suffit de reprendre les exemple et les adapters a votre besoin.