Archives par mot-clé : zone

PostgreSQL dans une Zone

Après le mini-howto d’installation de glassfish dans une zone. Voici celui pour pgSQL (postgreSQL) dans une zone.

Ce qui est très sympa c’est que pgSQL 8.1 et 8.2 sont déjà installé dans SOLARIS 10 et Solaris SXDE (Solaris Express Developer Edition). Donc pas besoin de les installer.

Aller c’est partie pour la création de la zone de la même façons que pour glassfish :

# mkdir /var/zones/z_pgsql
# chmod –R 700 /var/zones/z_pgsql

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_pgsql
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_pgsql #Dossier de la zone
#zonecfg:sunrise> add net # Ajout d’une configuration réseau
#zonecfg:sunrise:net> set address=192.168.1.11 #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_pgsql info
zonepath: /var/zones/z_pgsql
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.121
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_pgsql verify
# zoneadm -z z_pgsql 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_pgsql est bien installé :

# zoneadm list -cvi

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

#zoneadm –z z_pgsql 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 : DNS
Hostname : pgsql
Nameserver : 208.67.222.222 #nameserver de opendns
Nameserver : 208.67.220.220 #nameserver de opendns
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 activons postgreSQL.
On commence par switcher vers l’utilisateur postfres :

# su – postgres

On creer ensuite le cluster de la DB pgsql :

$ /usr/postgres/8.2/bin/initdb -D /var/postgres/8.2/data

Si tout c’est bien passé vous devriez avec un message de ce type :

The files belonging to this database system will be owned by user « postgres ».
This user must also own the server process.

The database cluster will be initialized with locales
COLLATE: fr_FR.UTF-8
CTYPE: fr_FR.UTF-8
MESSAGES: fr.UTF-8
MONETARY: fr_FR.UTF-8
NUMERIC: fr_FR.UTF-8
TIME: fr_FR.UTF-8
The default database encoding has accordingly been set to UTF8.

fixing permissions on existing directory /var/postgres/8.2/data … ok
creating subdirectories … ok
selecting default max_connections … 100
selecting default shared_buffers/max_fsm_pages … 32MB/204800
creating configuration files … ok
creating template1 database in /var/postgres/8.2/data/base/1 … ok
initializing pg_authid … ok
initializing dependencies … ok
creating system views … ok
loading system objects’ descriptions … ok
creating conversions … ok
setting privileges on built-in objects … ok
creating information schema … ok
vacuuming database template1 … ok
copying template1 to template0 … ok
copying template1 to postgres … ok

WARNING: enabling « trust » authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.

Success. You can now start the database server using:

/usr/postgres/8.2/bin/postgres -D /var/postgres/8.2/data
or
/usr/postgres/8.2/bin/pg_ctl -D /var/postgres/8.2/data -l logfile start

Si vous voulez acceder a votre serveur autre qu’en local il faudra changer la configuration de listen_address dans /var/postgre/8.2/data/postresql.conf :

# nano /var/postgre/8.2/data/postresql.conf
listen_address = « IP » # ou * si vous voulez que toutes les IP y accede

Enfin il existe plusieurs façons de démarrer pgSQL, je vais vous présenter celle avec SMF. En temps que root on démare postgreSQL avec SMF.

# /usr/sbin/svcadm enable postgresql:version_82

ou bien tout simplement

# /usr/postgres/8.2/bin/postgres -D /var/postgres/8.2/data

A présent je vais installer pgadmin qui est GUI pour postreySQL qui fonctionne sous windows, linux et Solaris. Je vais expliquer ici l’installation pour Solaris.

Une fois téléchargé :

# gzip -d pgadmin3-1.8.0_x86.tar.gz
# tar -xvf pgadmin3-1.8.0_x86.tar
# pkgadd -d . pgadmin3

Les binaire se trouve dans /opt/pgadmin3/bin, donc si vous voulez y acceder directement ajouter le a votre PATH.

http://www.postgresql.org/ftp/pgadmin3/release/v1.8.0/solaris/x86/

C’est finit.

La doc qui m’a permis d’écrire ce billet :

http://www.sun.com/software/solaris/howtoguides/postgresqlhowto.jsp
http://docs.sun.com/app/docs/doc/819-5578/6n7lcpcl2?a=view

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

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.