Installation service ElasticSearch
ElasticSearch
a été installé depuis les binaires fournis pour Linux
. Le déploiement a été réalisé dans le répertoire /var/opt/elasticsearch
.
Cet article présente la mise en place d'un service avec systemd, qui est facilitée lors de l'installation d'un paquet Debian
.
Sommaire
Votre avis
Nobody voted on this yet
|
|
Répertoire exécution
Lors de l'exécution d'ElasticSearch
, un fichier PID
peut être créé. Dans le cadre de cette installation, ce fichier est créé dans le répertoire /var/run/elasticsearch
. La création de ce répertoire sera mise en place lors de la déclaration du service.
L'option RuntimeDirectory
permet d'indiquer le nom du répertoire, soit kibana
pour cette installation.
L'option RuntimeDirectoryMode
permet de spécifier les permissions qui seront affectés à ce répertoire, La valeur par défaut étant 766
, cela correspond au besoin de cette installation, et l'option n'est pas configurée.
Le répertoire sera alors automatiquement créé lors du démarrage du service, mais également supprimé lors de son arrêt. Le fichier PID
sera alors automatiquement supprimé lors de l'arrêt, ce qui évitera des messages d'avertissement lors du démarrage pour informer qu'un fichier est déjà existant.
Ce principe est mis en place par défaut dans les fichiers du paquet.
Paramétrages
Les fichiers de paramétrage mis en place s'inspire du contenu du paquet Debian
.
Configuration par défaut
Attention, cette organisation est reprise même si cela est redondant avec la configuration du service, décrite dans le prochain paragraphe.
Un premier fichier elasticsearch
de configuration est mis à disposition dans le répertoire /etc/default
, afin de personnaliser l'instance. Un exemple est fourni dans les source, https://github.com/elastic/elasticsearch/blob/master/distribution/packages/src/common/env/elasticsearch.
Le contenu du fichier est modifié pour changer l'option ES_PATH_CONF
avec le nouvel emplacement du répertoire de configuration.
################################
# Elasticsearch
################################
# Elasticsearch home directory
#ES_HOME=/usr/share/elasticsearch
# Elasticsearch Java path
#JAVA_HOME=
# Elasticsearch configuration directory
#ES_PATH_CONF=/etc/elasticsearch
ES_PATH_CONF=/var/opt/elasticsearch/common/config
# Elasticsearch PID directory
#PID_DIR=/var/run/elasticsearch
# Additional Java OPTS
#ES_JAVA_OPTS=
# Configure restart on package upgrade (true, every other setting will lead to not restarting)
#RESTART_ON_UPGRADE=true
################################
# Elasticsearch service
################################
# SysV init.d
#
# The number of seconds to wait before checking if Elasticsearch started successfully as a daemon process
ES_STARTUP_SLEEP_TIME=5
################################
# System properties
################################
# Specifies the maximum file descriptor number that can be opened by this process
# When using Systemd, this setting is ignored and the LimitNOFILE defined in
# /usr/lib/systemd/system/elasticsearch.service takes precedence
#MAX_OPEN_FILES=65536
# The maximum number of bytes of memory that may be locked into RAM
# Set to "unlimited" if you use the 'bootstrap.memory_lock: true' option
# in elasticsearch.yml.
# When using systemd, LimitMEMLOCK must be set in a unit file such as
# /etc/systemd/system/elasticsearch.service.d/override.conf.
#MAX_LOCKED_MEMORY=unlimited
# Maximum number of VMA (Virtual Memory Areas) a process can own
# When using Systemd, this setting is ignored and the 'vm.max_map_count'
# property is set at boot time in /usr/lib/sysctl.d/elasticsearch.conf
#MAX_MAP_COUNT=262144
Les permissions sont modifiées comme lors de l'installation pour restreindre l'accès au compte de service.
#sudo chown root:root /etc/default/elasticsearch #sudo chmod 644 /etc/default/elasticsearch
Configuration du service
On déclare ensuite le service systemd dans le fichier elasticsearch.service
dans le répertoire /lib/systemd/system
. Un exemple est fourni dans les source, https://github.com/elastic/elasticsearch/blob/master/distribution/packages/src/common/systemd/elasticsearch.service.
La configuration mise en place est la suivante, permettant de référencer les emplacements spécifiques.
[Unit]
Description=Elasticsearch
Documentation=http://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
RuntimeDirectory=elasticsearch
#Environment=ES_HOME=/usr/share/elasticsearch
Environment=ES_HOME=/var/opt/elasticsearch/installed
#Environment=ES_PATH_CONF=/etc/elasticsearch
Environment=ES_PATH_CONF=/var/opt/elasticsearch/common/config
Environment=PID_DIR=/var/run/elasticsearch
EnvironmentFile=-/etc/default/elasticsearch
#WorkingDirectory=/usr/share/elasticsearch
WorkingDirectory=/var/opt/elasticsearch/installed
User=elasticsearch
Group=elasticsearch
#ExecStart=/usr/share/elasticsearch/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet
ExecStart=/var/opt/elasticsearch/installed/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet
# StandardOutput is configured to redirect to journalctl since
# some error messages may be logged in standard output before
# elasticsearch logging system is initialized. Elasticsearch
# stores its logs in /var/log/elasticsearch and does not use
# journalctl by default. If you also want to enable journalctl
# logging, you can simply remove the "quiet" option from ExecStart.
StandardOutput=journal
StandardError=inherit
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Specifies the maximum number of processes
LimitNPROC=4096
# Specifies the maximum size of virtual memory
LimitAS=infinity
# Specifies the maximum file size
LimitFSIZE=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0
# SIGTERM signal is used to stop the Java process
KillSignal=SIGTERM
# Send the signal only to the JVM rather than its control group
KillMode=process
# Java process is never killed
SendSIGKILL=no
# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
A noter le contenu de la variable d'environnement
EnvironmentFile
avec -/etc/default/elasticsearch
qui permet de charger le fichier si il existe. Dans le cadre de cette installation, ce dernier aurait pu ne pas être mis en place, car il définit la variable ES_PATH_CONF
qui est également mis en place dans la déclaration du service.
Le paramètre
RuntimeDirectory
a été rajouté par rapport à la configuration du paquet, afin de gérer le répertoire d'exécution comme expliqué au début de l'article.
Les permissions sont modifiées comme lors de l'installation pour restreindre l'accès au compte de service.
#sudo chown root:root /lib/systemd/system/elasticsearch.service #sudo chmod 644 /lib/systemd/system/elasticsearch.service
Création service
La déclaration du service s'effectue via la commande systemctl enable
en fournissant l'emplacement du fichier, créant tous les liens nécessaires.
#sudo systemctl enable /lib/systemd/system/elasticsearch.service Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /lib/systemd/system/elasticsearch.service.
Pour le démarrer il suffit alors d'exécuter la commande systemctl
avec l'argument start
.
#sudo systemctl start elasticsearch
Voir aussi
Sources installation service : https://github.com/elastic/elasticsearch/tree/master/distribution/packages/src