NOM : DEBIAN_8_64-TOMCAT8 (en version 8.2 au 16/09/2015) Hérite de : DEBIAN_8_64-INRA *** Description générale *** Cette station contient Linux DEBIAN 8.2 64 bits installé par cd iso (debian-8.2.0-amd64-netinst.iso téléchargement sur http://cdimage.debian.org/debian-cd/8.2.0/amd64/iso-cd//debian-8.2.0-amd64-netinst.iso) du 15/09/2015. (Paquets usuels + Serveur SSH). En plus du contenu hérité elle comporte le script d'installation de tomcat 8 (https://svngeodb.nancy.inra.fr/svn/scripts/trunk/serveurs%20virtuels/installations/tomcat/tomcat8_deb8_georchestra.sh) dont l'exécution a été réalisée et une modification de certains fichiers par défaut a complété l'opération. 15/09/2015: création de la machine (Alain BENARD) Caractéristiques initiales de la machine virtuelle : mémoire : 2 Go processeur : 1 seul disque1 : SCSI 20 Go (0/0 - non préalloué) - Partitionnement conforme à la documentation d'installation excepté la partition de swap (voir second disque). - fichier 'Disque DEBIAN_8_64-INRA'. disque2 : SCSI 4 Go (0/1 - préalloué) - 1 seule partition primaire de type sawp utilisant tout l'espace du disque. - fichier 'Disque DEBIAN_8_64-INRA Swap'. disque3 : SCSI 10 Go (0/2 - non préalloué) - 1 seule partition primaire utilisant tout l'espace du disque et montée sous /data. Facilement extensible en cas de besoin. - fichier 'Disque DEBIAN_8_64-INRA Data'. CD-ROM / DVD : Lecteur Physique (image ISO durant l'installation). Ethernet : VMNet8 NAT. Contrôleur USB : Présent Autre : Pas de lecteur de disquette, ni de carte son ni de port parallèle comptes utilisateurs initiaux : (idem machine mère) login : root mdp : Templ@t3 Le système impose la création d'un second compte : login : inra mdp : Templ@t3) --------------------------------------------------------------------------------------------------- ISSU MACHINE MERE : --------------------------------------------------------------------------------------------------- 15/09/2015 (Alain Benard) : Installation OS : Nom Machine Initial : debian8maquette (sur domaine nancy.inra.fr) Réseau : Configuration IP Dynamique Résolution graphique : pas d'interface graphique. Principales options retenues durant l'installation : Partionnement : utilisation complète du 1° disque virtuel (1 Logical Volume contenant un groupe de volumes debian8maquette-vg et 4 volumes logiques définis par le programme d'installation et reconfiguré par la suite) : Point de montage Type Nom de volume logique Taille du volume logique (Mo) / ext4 root 7,18 Gb /usr ext4 usr pas de partition usr proposée par le système /var ext4 var 6,79 Gb /home ext4 home 3,12 Gb /tmp ext4 tmp 380 Mb Reste 4 Gb de libre en cas de besoin. - Le swap est herbergé dans l'unique partition du second disque virtuel. Le non respect des préconisations INRA utilisant les volumes logiques est dû au fait que l'on ne connait pas la future utilisation du serveur virtuel et que les outils VMWare permettent facilement d'ajouter des disques et d'en modifier la taille. Cela permet également de préallouer le fichier correspondant à la partiton swap. La séparation en plusieurs disques permet d'utiliser le thin provisioning Vmware de manière plus fine, voir d'héberger certains disques virtuels d'une même machine virtuelle sur des architectures de stockage différentes (par exemple un disque système sur un SAN à disque rapide et un disque données sur un NAS RAID5 avec des disques de grande capacité). ------------ 15/09/2015 (Alain Benard) - Installation de vim apt-get install vim) - alias root dans /etc/aliases pointant vers nom@domaine.fr pour ne pas polluer une adresse réelle lors des phases de déploiement ou test. - installation openssh (apt-get install openssh-server) + configuration PermitRootLogin yes - Reconfiguration des volumes pour obtenir la configuration précisée plus haut dans ce document. - apt-get install build-essential. - apt-get install open-vm-tools - Purge partielle de /root/.bash_history pour mieux mettre en évidence les commandes nécessaires à la personnalisation de dernière minute et les opérations importantes réalisées lors de la constitution de la machine virtuelle. --------------------------------------------------------------------------------------------------- NON HERITE : --------------------------------------------------------------------------------------------------- 16/09/2015 (Alain Benard) - Mise en place du script tomcat8_deb8_georchestra.sh sous /root/tomcat8 puis exécution - Modification de /etc/default/tomcat8 pour supprimer Xmx128m - Modification de /usr/share/tomcat8/skel/conf/tomcat-users.xml pour un fichier par défaut permettant une connection aux utils d adminsitration. - Modification de /usr/share/tomcat8/skel/conf/server.xml pour la défintion d'un connecteur sur le port 8443 en https et prise en compte du keystore défini. - Mise en place du script create-instance-tomcat8-https.sh sous /root/tomcat8 (https://svngeodb.nancy.inra.fr/svn/scripts/trunk/serveurs%20virtuels/installations/tomcat/create-instance-tomcat8-https.sh) 25/09/2015 (Alain Benard) - Récupération de la dernière version du script create-instance-tomcat8.sh sous /root/tomcat8 (https://svngeodb.nancy.inra.fr/svn/scripts/trunk/serveurs%20virtuels/installations/tomcat/create-instance-tomcat8-https.sh) - Modification du fichier /usr/share/tomcat8/skel/conf/server.xml pour ajuster la chaine 'Connector port="8443"' qui contenait un caractère espace en trop et empêchait la bonne substitution par le script de creation d'instance tomcat8. --------------------------------------------------------------------------------------------------- Hors maquette : --------------------------------------------------------------------------------------------------- 25/09/2015 - 02/10/2015 (Alain Benard) Préparation de la configuration en vue d'héberger les instances geoserver (+ extracteur + geofence) de l'IDS Bac à sable en version 15.06. Les opérations réalisées s'appuient sur la documentation de la création de la VM portail ancienne génération (Debian 7 - Tomcat 6 - Georchestra 14.06 : https://appgeodb.nancy.inra.fr/donnees/documentations/ids/bacasable/geoserver/Contenu.txt) réactualisée au vu des documentations georchestra : - pour les natives libs : https://github.com/georchestra/georchestra/blob/15.06/doc/setup/native_libs.md - pour la finalisation des instances tomcat : https://github.com/georchestra/georchestra/blob/15.06/doc/setup/tomcat.md Les opérations qui en découlent : 25/09/2015 (Alain Benard) *** Paquets nécessaires aux applications *** (optimisation for GS like TurboJPEG, Marlin Renderer, JAI , etc) Cette partie relève principalement d'une partie spécifique de la documentation : https://github.com/georchestra/georchestra/blob/15.06/doc/gs_cluster.md#configure-the-servers - Déclaration des repository complémentaires - Dans le fichier /etc/apt/sources.list : deb http://ftp.fr.debian.org/debian jessie contrib non-free deb http://security.debian.org/ jessie/updates contrib non-free - apt-get update pour mettre à jour. - apt-get install ttf-mscorefonts-installer (Fontes pour les styles geoserver) - apt-get install libjai-core-java libjai-imageio-core-java libgdal-java - apt-get install gdal-bin (nécessaire si on compile geoserver avec l'extension ogr, les prérequis indiquant que la commande ogr2ogr doit être accessible - à défaut un message sera inscrit dans le log de geoserver au démarrage et le flux WFS ne fonctionnera pas). - wget http://downloads.sourceforge.net/project/libjpeg-turbo/1.4.0/libjpeg-turbo-official_1.4.0_amd64.deb?use_mirror=tenet -O /tmp/libjpeg-turbo-official_1.4.0_amd64.deb - dpkg -i /tmp/libjpeg-turbo-official_1.4.0_amd64.deb - wget https://github.com/bourgesl/marlin-renderer/releases/download/v0.4.5/marlin-0.4.5.jar -O /usr/share/java/marlin.jar - Les différentes instance de tomcat8 partageront /usr/share/tomcat8 (à défaut il faudrait déclarer les link ci-dessous dans chaque instance /var/lib/tomcat8-instanceN/lib comme le précise la documentation georchestra) ln -s /usr/share/java/jai_core.jar /usr/share/tomcat8/lib/jai_core.jar ln -s /usr/share/java/jai_codec.jar /usr/share/tomcat8/lib/jai_codec.jar ln -s /usr/share/java/mlibwrapper_jai.jar /usr/share/tomcat8/lib/mlibwrapper_jai.jar ln -s /usr/share/java/jai_imageio.jar /usr/share/tomcat8/lib/jai_imageio.jar ln -s /usr/share/java/clibwrapper_jiio.jar /usr/share/tomcat8/lib/clibwrapper_jiio.jar ln -s /usr/share/java/marlin.jar /usr/share/tomcat8/lib/marlin.jar *** NATIVES LIBRARIES *** GDAL et certaines librairies de liaison sont nécessaires (ou étendent le nombre de format supportés) au fonctionnement de certains logiciels de la pile georchestra (mapfishapp, geoserver et extractor) - apt-get install libgdal1h (la documentation georchestra indique le paquet libgdal1) - Récupération (depuis la machine hébergeant les sources ayant fait l'objet d'une installation des natives_libs conformément à la documentation georchestra) du dossier /data/native_lib_15_06 et mise en place sous /data/sig/gdal - La partie concernant le fichier catalina.properties dans la documentation n'a pas été réalisée car elle semble douteuse et brouillon (à revoir si des problèmes surviennent après déploiement) *** INSTANCES TOMCAT *** - Modification des mot de passe au sein des fichiers /usr/share/tomcat8/skel/conf tomcat-users.xml et server.xml pour y placer les bonnes valeurs et en bénéficier dans toutes les instances qui seront déployées - Modification du mot de passe du keystore : keytool -storepasswd -new nouveaumdp -storepass ancienmdp -keystore /etc/tomcat8/keystore - suppression de la clé puis régénération : - keytool -delete -alias "georchestra_localhost" -keystore /etc/tomcat8/keystore - keytool -genkey -alias georchestra_localhost -keystore /etc/tomcat8/keystore -storepass motpassemagasin -keypass motpassecle -keyalg RSA -keysize 2048 -dname "CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=FR" (les 2 mots de passe doivent être identiques) - keytool -export -keystore /etc/tomcat8/keystore -alias georchestra_localhost -file /etc/tomcat8/geoserver.crt (Exportation de ce certificat en vue de l'importer dans le portail georchestra) - Creation tomcat instances (cd /root/tomcat8): 1 : create-instance-tomcat8-https.sh 8080 8005 8443 tomcat8-instance1 2 : create-instance-tomcat8-https.sh 8081 8006 8444 tomcat8-instance2 3 : create-instance-tomcat8-https.sh 8082 8007 8445 tomcat8-instance3 4 : create-instance-tomcat8-https.sh 8083 8008 8446 tomcat8-instance4 5 : create-instance-tomcat8-https.sh 8084 8009 8447 tomcat8-instance5 - Personnalisation des instances tomcat : contrairement à ce qui était fait en version 14.06 avec un stockage de la personnalisation dans les fichiers setenv.sh nous utilisons maintenant les fichiers /etc/defautl/tomcat8-instanceNN, la syntaxe restant la même (le mot de passe associé au keystore est à modifier dans tous ces fichiers). - 1 : /var/lib/tomcat8-instance1/conf/server.xml : adaptation du connecteur sur le port 8080 en ajoutant les déclarations suivantes : maxThreads="20" minSpareThreads="20" scheme="https" proxyName="ids-bas-portail.nancy.inra.fr" proxyPort="443" /etc/default/tomcat8-instance1 : récupération de l'existant et prise en compte de la documentation et de la taille mémoire réellement allouée nous donne : JAVA_OPTS="$JAVA_OPTS \ -Xms2G -Xmx4G -XX:PermSize=256m -XX:MaxPermSize=256m \ -DGEOWEBCACHE_CACHE_DIR=/data/work/geowebcache/cache/dir \ -DGEOSERVER_DATA_DIR=/data/work/gs_data \ -DGEOSERVER_LOG_LOCATION=/var/lib/tomcat8-instance1/logs/geoserver1.log \ -Djava.awt.headless=true \ -Dfile.encoding=UTF8 \ -Djavax.servlet.request.encoding=UTF-8 \ -Djavax.servlet.response.encoding=UTF-8 \ -server \ -XX:+UseParNewGC -XX:ParallelGCThreads=2 \ -XX:SoftRefLRUPolicyMSPerMB=36000 \ -XX:NewRatio=2 \ -XX:+AggressiveOpts " export JAVA_OPTS="$JAVA_OPTS -Dorg.geotools.referencing.forceXY=true" export JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/lib/jni:/opt/libjpeg-turbo/lib64/" export JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/a:"/usr/share/tomcat8/lib/marlin.jar" -Dsun.java2d.renderer=org.marlin.pisces.PiscesRenderingEngine" export LD_LIBRARY_PATH="/lib:/usr/lib/:/data/sig/gdal/NativeLibs/:$LD_LIBRARY_PATH" export GDAL_DATA="/data/sig/gdal/gdal-data" # -XX:+UseConcMarkSweepGC a disparu dans la documentation en 15.06 - 2 : /var/lib/tomcat8-instance2/conf/server.xml (cette instance dédiée équilibrage geoserver [esclave OGC] n'étant pas visible on désactive le connecteur https et il n'est pas utile de configurer proxyname et proxyport maxThreads="20" minSpareThreads="20" /etc/default/tomcat8-instance2 : récupération de l'existant et prise en compte de la documentation et de la taille mémoire réellement allouée nous donne : Le contenu est identique à celui de l'instance1 excepté le chemin du fichier de log - 3 : /var/lib/tomcat8-instance3/conf/server.xml (cette instance dédiée équilibrage geoserver [esclave OGC] n'étant pas visible on désactive le connecteur https et il n'est pas utile de configurer proxyname et proxyport maxThreads="20" minSpareThreads="20" /etc/default/tomcat8-instance3 : récupération de l'existant et prise en compte de la documentation et de la taille mémoire réellement allouée nous donne : Le contenu est identique à celui de l'instance1 excepté le chemin du fichier de log - 4 : /var/lib/tomcat8-instance4/conf/server.xml (cette instance dédiée extractor on désactive le connecteur https et il n'est pas utile de configurer proxyname et proxyport maxThreads="20" minSpareThreads="20" /etc/default/tomcat8-instance4 : récupération de l'existant et prise en compte de la documentation et de la taille mémoire réellement allouée nous donne : Le contenu est similaire à celui de l'instance1 excepté . le chemin du fichier de log . le dimensionnement mémoire : -Xms1G -Xmx2G . le positionnement d'une variable spécifique à l'extractor : export JAVA_OPTS="$JAVA_OPTS -Dextractor.storage.dir=/data/tmp/" - 5 : /var/lib/tomcat8-instance5/conf/server.xml (cette instance dédiée geowebcache on désactive le connecteur https et il n'est pas utile de configurer proxyname et proxyport maxThreads="20" minSpareThreads="20" /etc/default/tomcat8-instance5 : récupération de l'existant et prise en compte de la documentation et de la taille mémoire réellement allouée nous donne : Le contenu est similaire à celui de l'instance1 excepté . le chemin du fichier de log . le dimensionnement mémoire : -Xms512m -Xmx1G . le positionnement d'une variable spécifique à l'extractor : export JAVA_OPTS="$JAVA_OPTS -Dextractor.storage.dir=/data/tmp/" *** Scripts de déploiement arborescences et divers*** - Mise en place du script de déploiement (install_geoserver_bacasable.sh) des applications java (https://svngeodb.nancy.inra.fr/svn/scripts/trunk/serveurs%20virtuels/installations/georchestra/) Dans notre cas le dossier /data/scripts est simplement récupéré depuis la machine à migrer - D'autres scripts sont récupérés lors de la migration par la récupération du dossier /data/scripts : - charge_catalog.sh utilisé par le webservice (Job talend exposé via tomcat) qui recharge le catalogue des instances esclaves de geoserver - git_data_dir.sh : utilisé de mamnière planifiée pour effectuer les commit sur le catalogue geoserver versionné. - confiance.sh permettant d'établir la confiance entre la machine et le serveur hébergant les sources. - un dossier test contenant des scripts liés à l'automatisation de l'alimentation de l'IDS (à réorganiser pour le passage en production à venir) - Rendre exécutable tous les scripts : chmod +x *.sh (à reproduire dans les sous-dossiers si besoin) - lancement du script confiance.sh - personnalisation des scripts de déploiement selon le contexte et pour prendre en compte - les changements de version (de tomcat et de georchestra) impliquant de nouveaux chemins pour le deploiement. - le déploiement spécifique de geoserver avec replacement des "GDAL's wars" (voir documentation : https://github.com/georchestra/georchestra/blob/15.06/doc/gs_cluster.md#configure-the-servers) - Récupération du fichier reload_geoserver_0.1.war de l'instance1 et mise en place dans le dossier webapp de la nouvelle machine virtuelle - apt-get install git (Versionnement du data_dir de geoserver) - apt-get install curl (utilisation de l'API REST par une application java issue d'un job talend pour recharger les catalogues des instances de geoserver) - Mise en place dossier de travail geoserver : - mkdir -p /data/work/gs_data - chown tomcat8:tomcat8 /data/work/gs_data - Pour une nouvelle installation il faudra récupérer un data_dir Geonserver vide depuis Github (Version avec ou sans support geofence selon le cas) tandis que pour la migration on procédera à la récupération de ce data_dir depuis la machine à migrer (probablement à froid [geoserver éteint]) - Mise en place dossier de travail extractor : - mkdir /data/tmp - cchown tomcat8:tomcat8 /data/tmp - Configuration messagerie (notamment pour les logs serveur, monit et l'extracteur...) - dpkg-reconfigure exim4-config - test du mail : mail -s testab alain.benard@nancy.inra.fr *** MONITORING *** - Installation de monit pour superviser le serveur. - apt-get install monit - configuration de base de monit : - récupération ou personnalisation de /etc/monit/monitrc - récupération ou création de fichier de configuration (/etc/monit/conf.d) Dans notre cas il y a récupération et modification pour prendre en compte le changement de version de tomcat et la taille mémoire réellement allouée à chaque instance. *** EQUILIBRAGE CHARGE GEOSERVER *** - Installation / configuration nginx - apt-get install nginx - récupération du fichier /etc/nginx/sites-available/georchestra et établissement du lien sous /etc/nginx/sites-enabled Le contenu ne suit pas rigoureusement la documentation (https://github.com/georchestra/georchestra/blob/15.06/doc/gs_cluster.md#setup-the-load-balancing-with-nginx) mais il a toujours fonctionné jusqu'ici et le principe reste le même. En cas de non fonctionnement il conviendra de revisiter les variables positionnées selon la documentation. Pour information le contenu est le suivant : ## La premiere instance de tomcat fournit l'instance de geoserver ayant le droit de modifier le catalogue (creation de cartes ...) ## En cas d'indisponibilite la seconde instance de tomcat/geoserver assurera ce role. upstream geoserver_admin { server localhost:8080; server localhost:8081 backup; } ## Les instances 2 et 3 repondent aux besoins de flux OGC (geoserver servant des flux WMS, WFS ....) upstream geoserver_cartes{ ip_hash; server localhost:8081; server localhost:8082; } server { listen 8090; ## listen for ipv4; this line is default and implied root /usr/share/nginx/www; index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; ## url pour administration geoserver location /geoserver/rest{ proxy_pass http://geoserver_admin; } ## url pour administration geoserver location /geoserver/web{ proxy_pass http://geoserver_admin; } ## url pour flux OGC geoserver location /geoserver{ proxy_pass http://geoserver_cartes; } --------------------------------------------------------------------------------------------------- 02/10/2015 (Alain Benard) - Mise en place de l'authentification mutuelle entre front office et back office (cf https://www.esup-portail.org/plugins/viewsource/viewpagesrc.action?pageId=132710411) Importation du certificat du geoserver précedemment exporté depuis geoserver en geoserver.crt: - copie du fichier crt dans /etc/tomcat8 - cd /etc/tomcat8 - keytool -import -keystore /etc/tomcat8/keystore -alias georchestra -file georchestra.crt 22/12/2015 (Alain Benard) - Montages pour les sauvegardes : - Mise en place du script de montage pour les sauvegardes (récupération de /root/tools/montage.sh qui effectue les montages sous /export/etc et /export/data) - Création de la structure nécessaire aux montages - mkdir -p /export/etc - mkdir -p /export/data - modification de /etc/crontab pour planifier l'exécution journalière du script de montage ainsi que celle du script de commit du datadir de geoserver via git - apt-get install nfs-kernel-server + personnalisation ou récupération du fichier /etc/exports