Installation ElasticSearch

De EjnTricks

Cet article présente l'installation de ElasticSearch sur une machine Ubuntu.

Un paquet est disponible, mais il est préféré d'effectuer l'installation manuellement pour gérer totalement l'installation et les mises à jour.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


User-icon.png Compte de service

Un compte de service est créé pour démarrer le serveur ElasticSearch. Ceci est inspiré du script preinst pour le paquet. Dans celui-ci, le groupe et l'utilisateur sont créés séparément : https://github.com/elastic/elasticsearch/blob/master/distribution/packages/src/common/scripts/preinst

Un compte elasticsearch est créé en système et sans possibilité de connexion, pas de home ni de bash.

#sudo adduser --system --no-create-home --disabled-password --shell /bin/false --group elasticsearch
Ajout de l'utilisateur système « elasticsearch » (UID 129) ...
Ajout du nouveau groupe « elasticsearch » (GID 138) ...
Ajout du nouvel utilisateur « elasticsearch » (UID 129) avec pour groupe d'appartenance « elasticsearch » ...
Le répertoire personnel « /home/elasticsearch » n'a pas été créé.

Attention avec cette commande le compte n'est pas ajouté automatiquement dans le groupe, contrairement au script.


Folder-icon.png Initialisation

L'application va être installée sous /var/opt/elasticsearch avec une organisation qui doit permettre de faciliter les montées de version.

#sudo mkdir /var/opt/elasticsearch
#sudo chown elasticsearch:elasticsearch /var/opt/elasticsearch
#sudo chmod 700 /var/opt/elasticsearch


Download-icon.png Téléchargement

L'application est téléchargée, en version 6.2.3, dans le répertoire /var/opt/elasticsearch avec le nom elasticsearch-6.2.3.tar.gz.


System-Install-icon.png Installation

L'application va être installée sous /var/opt/elasticsearch, avec modification de l'emplacement racine pour être 6.2.3.

#sudo tar --transform 's/^elasticsearch-6.2.3/6.2.3/' -C /var/opt/elasticsearch -xzvf /var/opt/elasticsearch/elasticsearch-6.2.3.tar.gz

Le fichier téléchargé peut être supprimé.

#sudo rm /var/opt/elasticsearch/elasticsearch-6.2.3.tar.gz


Icon File Owner.png Propriétaire fichiers

L'installation a été réalisée avec le compte root. Il est préférable de donner la propriété au compte de démarrage du serveur web, soit elasticsearch dans le cadre de cette installation.

#sudo chown -R elasticsearch:elasticsearch /var/opt/elasticsearch


Icon ACL.png Sécurisation

Les droits mis en place seront uniquement pour le compte d'exécution, soit elasticsearch.

#sudo chmod -R go-rwx /var/opt/elasticsearch/6.2.3


Vues-icon.png Référencement version

Afin de faciliter les montées de versions, le lien /var/opt/elasticsearch/installed est mis en place pour référencer la version active.

#sudo ln -s /var/opt/elasticsearch/6.2.3 /var/opt/elasticsearch/installed
#sudo chown -h elasticsearch:elasticsearch /var/opt/elasticsearch/installed


Share-icon.png Fichiers communs

Un répertoire common est mis en place pour externaliser les fichiers de configurations.

#sudo mkdir /var/opt/elasticsearch/common
#sudo chown elasticsearch:elasticsearch /var/opt/elasticsearch/common
#sudo chmod go-rwx /var/opt/elasticsearch/common

On déplace le répertoire de configuration dans cette externalisation.

#sudo mv /var/opt/elasticsearch/6.2.3/config /var/opt/elasticsearch/common/

Examples-icon.png A noter qu'aucun lien n'est mis en place dans l'instance. L'emplacement des configurations sera spécifié dans les scripts de démarrage de service.


Icon-log.png Emplacement logs

Afin de centraliser les logs, les fichiers seront placés dans le répertoire /var/log/elasticsearch. Il est nécessaire de préparer l'environnement.

#sudo mkdir /var/log/elasticsearch
#sudo chown elasticsearch:adm /var/log/elasticsearch
#sudo chmod o-rwx /var/log/elasticsearch

A noter, les permissions sont accordées au groupe adm comme cela est d'usage pour ce type de fichier sur une instance Linux.

Warning-icon.png Attention, il peut être nécessaire de modifier la configuration des fichiers trace, dans le fichier metricbeat.yml, comme explicité dans l'article suivant.


Icon-Configuration-Settings.png Configuration

Java format icon.png JVM

Les premières configurations mises en place concerne l'exécution de la JVM dans le fichier jvm.properties, dans le répertoire config de la distribution.

Dans un premier temps, il faut spécifier l'emplacement de stockage pour les head dumps de la machine virtuelle, à l'aide de l'option HeapDumpPath. La configuration initiale est la suivante.

# specify an alternative path for heap dumps
# ensure the directory exists and has sufficient space
#-XX:HeapDumpPath=/heap/dump/path

Dans le paquet pour une distribution Debian, la configuration est la suivante.

# specify an alternative path for heap dumps
# ensure the directory exists and has sufficient space
-XX:HeapDumpPath=/var/lib/elasticsearch

Pour cette installation, cela est placé dans le répertoire /var/opt/elasticsearch/common/lib, préalable créé.

#sudo mkdir /var/opt/elasticsearch/common/lib
#sudo chown elasticsearch:elasticsearch /var/opt/elasticsearch/common/lib
#sudo chmod go-rwx /var/opt/elasticsearch/common/lib
# specify an alternative path for heap dumps
# ensure the directory exists and has sufficient space
#-XX:HeapDumpPath=/heap/dump/path
-XX:HeapDumpPath=/var/opt/elasticsearch/common/lib

Ensuite, il faut modifier l'emplacement du fichier du garbage collector, à l'aide de l'option loggc (version 8 de Java) ou log:gc (version 9). La configuration initiale est la suivante.

## JDK 8 GC logging

8:-XX:+PrintGCDetails
8:-XX:+PrintGCDateStamps
8:-XX:+PrintTenuringDistribution
8:-XX:+PrintGCApplicationStoppedTime
8:-Xloggc:logs/gc.log
8:-XX:+UseGCLogFileRotation
8:-XX:NumberOfGCLogFiles=32
8:-XX:GCLogFileSize=64m

# JDK 9+ GC logging
9-:-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m
# due to internationalization enhancements in JDK 9 Elasticsearch need to set the provider to COMPAT otherwise
# time/date parsing will break in an incompatible way for some date patterns and locals
9-:-Djava.locale.providers=COMPAT

La configuration est modifiée ainsi dans le cadre de cette installation, afin de créer le fichier dans le répertoire /var/log/elasticsearch

## JDK 8 GC logging

8:-XX:+PrintGCDetails
8:-XX:+PrintGCDateStamps
8:-XX:+PrintTenuringDistribution
8:-XX:+PrintGCApplicationStoppedTime
#8:-Xloggc:logs/gc.log
8:-Xloggc:/var/log/elasticsearch/gc.log
8:-XX:+UseGCLogFileRotation
8:-XX:NumberOfGCLogFiles=32
8:-XX:GCLogFileSize=64m

# JDK 9+ GC logging
#9-:-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m
9-:-Xlog:gc*,gc+age=trace,safepoint:file=/var/log/elasticsearch/gc.log:utctime,pid,tags:filecount=32,filesize=64m
# due to internationalization enhancements in JDK 9 Elasticsearch need to set the provider to COMPAT otherwise
# time/date parsing will break in an incompatible way for some date patterns and locals
9-:-Djava.locale.providers=COMPAT

Folder-icon.png Emplacements

La seconde partie de configuration concerne les emplacements des fichiers traces, option path.logs, et des données, option path.data, dans le fichier elasticsearch.yml dans le répertoire config de la distribution.

Dans le paquet pour une distribution Debian, la configuration est la suivante.

# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /var/lib/elasticsearch
#
# Path to log files:
#
path.logs: /var/log/elasticsearch

Pour cet article, les données seront placées dans /var/opt/elasticsearch/common/datas, préalablement créé.

#sudo mkdir /var/opt/elasticsearch/common/datas
#sudo chown elasticsearch:elasticsearch /var/opt/elasticsearch/common/datas
#sudo chmod go-rwx /var/opt/elasticsearch/common/datas

Afin de spécialisation les permissions, la commande setfacl est utilisée pour forcer les permissions pour les fichiers et répertoire créé sous le répertoire.

#sudo setfacl -dm g::0,o::0 /var/opt/elasticsearch/common/datas

Celle-ci permet de supprimer les droits d'accès pour l'ensemble des utilisateurs. Les permissions affectées au propriétaire, lecture sur fichiers et lecture + exécution sur répertoires, sont suffisantes dans ce cas.

Ainsi, les permissions sont spécifiées ainsi.

#sudo getfacl /var/opt/elasticsearch/common/datas
getfacl : suppression du premier « / » des noms de chemins absolus
# file: var/opt/elasticsearch/common/datas
# owner: elasticsearch
# group: elasticsearch
user::rwx
group::---
other::---
default:user::rwx
default:group::---
default:other::---

Dans le cas où des données sont déjà générées dans ce répertoire, il est possible d'affecter les droits à toute la hiérarchie.

#sudo setfacl -Rdm g::0,o::0 /var/opt/elasticsearch/common/datas

Il peut être nécessaire de modifier de nouveau les sécurités.

#sudo chmod -R go-rwx /var/opt/elasticsearch/common/datas


L'emplacement des fichiers traces est configuré avec la valeur /var/log/elasticsearch, qui est créé dans les précédents paragraphes.

Le fichier elasticsearch.yml est modifié ainsi.

# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
#path.data: /path/to/data
path.data: /var/opt/elasticsearch/common/datas
#
# Path to log files:
#
#path.logs: /path/to/logs
path.logs: /var/log/elasticsearch

Start-icon.png Installation service

Viewer icon.png Voir aussi

Documentation officielle: https://www.elastic.co/guide/en/elasticsearch/reference/6.2/zip-targz.html

Installation paquet Debian: https://www.elastic.co/guide/en/elasticsearch/reference/6.2/deb.html