Autres versions

Vous êtes ici : Installer et exploiterInstallationElasticsearch

Serveur Elasticsearch

Procédure d'installation du serveur Elasticsearch

Cette page décrit les étapes d'installation du serveur Elasticsearch, qui est utilisé pour le moteur de recherche de K-Portal / K-Sup.

Deux modes de fonctionnement sont autorisés pour la mise en place du serveur Elasticsearch :
  • Mode standalone : Le serveur Elasticsearch est installé sur une machine et communique avec l'application par appel TCP. Ce type d'installation permet de gérer au mieux les problématiques de performance en isolant les différents processus. Il est de plus obligatoire d'utiliser ce mode si votre application est installée en cluster. Kosmos recommande ce type d'installation.
  • Mode embedded : Le serveur Elasticsearch est embarqué dans l'application K-Sup. Il n'y a donc pas d'installation supplémentaire à réaliser. Cependant les ressources de la JVM sont partagées entre l'application et Elasticsearch. Il est déconseillé d'utiliser ce type d'installation pour les projets à forte volumétrie car les performances globales de l'application peuvent être dégradées. Par ailleurs, ce mode sera déprécié dans les prochaines versions d'Elasticsearch.

Pré-requis

Dimensionnement

Chaque nœud Elasticsearch doit disposer de suffisamment de ressources pour fonctionner dans les meilleures conditions :
  • CPU : minimum 2 cœurs - recommandé 4 cœurs
  • RAM : minimum 4 Go - recommandé 8 Go
 

Installation de l'OS

Installez le système d'exploitation souhaité en suivant les manuels d'installation officiels :  

Configuration de la locale

Nos logiciels fonctionnent avec l'encodage UTF-8. Cet encodage doit donc être défini sur le serveur, et sur chaque composant logiciel installé.
Par ailleurs, nous vous recommandons de définir le français comme langue par défaut.

Sur les systèmes Linux, la marche à suivre pour changer la locale par défaut du système est la suivante :
  • Éditer le fichier "/etc/default/locale"
  • Modifier la variable "LANG" (ex: LANG="fr_FR.UTF-8")
Cette étape n'est nécessaire que si la commande "locale" fait état d'une autre langue ou d'un autre encodage (ex: LANG=en_US.iso_8859-1).

Ouverture de ports

Le serveur Elasticsearch communique avec l'application via le port 9300. Il faut donc exposer ce port pour permettre au(x) serveur(s) d’application d’accéder à l’instance Elasticsearch. Pour des raisons de sécurité, il ne faut surtout pas exposer ce port en dehors du LAN. Le port 9200 peut également être exposé sur le LAN, à des fins de diagnostic.
 

Installation de Java

Elasticsearch est réalisé en java et nécessite donc l'installation de Java 8. Après l'installation, il faut impérativement valoriser la variable d'environnement JAVA_HOME.
 

Installation du serveur

La version du serveur doit impérativement correspondre à la version du client Elasticsearch présent dans le produit (version mineure identique).
Version du produit Version Elasticsearch
6.05.xx 2.4.1
6.06.xx 2.4.6
# Ajout de la clé du repo Elastic dans APT
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# Ajout du repo Elastic dans la liste d'APT
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
# Installation d'Elacticsearch (tenir compte de la version compatible avec le produit installé)
sudo apt-get update && sudo apt-get install elasticsearch=2.4.x

Installation des plugins

Deux plugins Elasticsearch sont nécessaires au fonctionnement de l'application :
  • DeleteByQuery : Permet de supprimer des clés d'index par une requête
  • MapperAttachmentPlugin : Effectue l'analyse des pièces jointes des (.pdf, .doc...)
Pour installer ces plugins, exécuter les commandes suivantes :
cd /usr/share/elasticsearch
#Dans le répertoire Elasticsearch :
sudo bin/plugin install delete-by-query
sudo bin/plugin install mapper-attachments

Configuration

Il faut ensuite configurer le nœud installé. Pour cela, éditez le fichier /etc/elasticsearch/elasticsearch.yml :
sudo vim /etc/elasticsearch/elasticsearch.yml
Décommentez ensuite les lignes avec les clés network.host, cluster.name et node.name et modifiez les valeurs : 
network.host: IP_DU_SERVEUR_ELASTICSEARCH
cluster.name: core
node.name: core.node.JVM_ROUTE
avec JVM_ROUTE l'identifiant utilisé par le serveur Tomcat. Par défaut jvmRoute est égal à default.

Il faut de plus définir le nombre de shards et de replicas utilisés par les indexes Elasticsearch. Ces propriétés sont à adapter en fonction de la volumétrie de votre application. Nous conseillons d'utiliser par défaut 1 shard et 0 replicas :
index.number_of_shards: 1
index.number_of_replicas: 0

Exemple de configuration 
network.host: 192.168.1.73
cluster.name: core
node.name: core.node.default
index.number_of_shards: 1
index.number_of_replicas: 0

Par défaut, le système de journalisation du serveur elasticsearch est configuré en mode DEBUG.
Afin de maîtriser l'espace disque utilisé par les journaux applicatifs du elasticsearch, nous conseillons de passer le logger "action" au niveau INFO.
Pour cela, il suffit d'éditer le fichier  /etc/elasticsearch/logging.yml et de changer le niveau de log :

logger:
  # log action execution errors for easier debugging
  action: INFO

Cette action ne dispense pas mettre en place une sonde de monitoring sur l'espace disque (log et data)

Vérification de l'installation

Depuis un navigateur, se connecter à l'URL http://192.168.1.73:9200/_cluster/health

Mis à jour le 1 mars 2019