Installation ElasticSearch
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.
Sommaire
Votre avis
Nobody voted on this yet
|
|
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.
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
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
.
#sudo wget -P /var/opt/elasticsearch https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz
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
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
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
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
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/
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.
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
.
Attention, il peut être nécessaire de modifier la configuration des fichiers trace, dans le fichier
metricbeat.yml
, comme explicité dans l'article suivant.
Configuration
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
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
Installation service
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