Installation

Pour installer un serveur Elasticsearch, il est nécessaire de rajouter les dépôts fournis par l'editeur:

wget -qO - https://artifacts.elastic.co/GPG-KEY-Elasticsearch | apt-key add -
apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-6.x.list
aptitude update
aptitude install vim openjdk-8-jdk openjdk-8-jre
aptitude install Elasticsearch

Configuration

Standard

La configuration du Elasticsearch se fait dans le fichier /etc/Elasticsearch/Elasticsearch.yml.

Dans ce fichier on va configurer plusieurs éléments:

  • Les paramètres du cluster (nom, nodes, nombre minimal de masters nodes)
  • Le nom du node
  • Les répertoires de stockage des données et des logs
  • L'adresse d'écoute

Le fichier se résume à ça:

/etc/elasticsearch/elasticsearch.yaml
cluster.name: CIS-ELK-Cluster
node.name: CIS-ELK-Elasticsearch01
path.data: /Data/Elasticsearch
path.logs: /var/log/Elasticsearch
network.host: 10.40.30.103
discovery.zen.ping.unicast.hosts: ["10.40.30.103", "10.40.30.104", "10.40.30.105"]
discovery.zen.minimum_master_nodes: 2

On a changé le chemin du répertoire ou seront stockées les données pour /Data/Elasticsearch, ce répertoire doit être accessible en lecture et écriture par l'utilisateur Elasticsearch

chown -R Elasticsearch:Elasticsearch /Data

On active Elasticsearch au démarrage et on le redémarre pour prendre en compte les nouveaux paramètres:

systemctl enable Elasticsearch.service
service Elasticsearch restart

On peut voir l'état du cluster avec la commande suivante:

curl -XGET '10.40.30.103:9200/_cluster/health?pretty'
{
  "cluster_name" : "CIS-ELK-Cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

Avancée

Dès lors que Elasticsearch est utilisé en environnement de production, il devient nécessaire de prendre en compte certains éléments supplémentaires lors de la configuration, il s’agit principalement de configurations système permettant d’avoir de meilleures performances et une plus grande fiabilité.

Parmi les recommandation, on a la désactivation de la swap. Pour cela, on va modifier le fichier /etc/sysctl.conf afin d'y rajouter la ligne suivante:

echo "vm.swapiness = 1" >> /etc/sysctl.conf

Cette option va réduire la tendance du kernel à utiliser la swap, et le fera qu’en cas de nécessité absolue.

Elasticsearch utilise un grand nombre de files descriptors, le fait de ne plus en avoir de disponible peut entrainer une perte de données, on va donc avec la commande suivante, augmenter le nombre de files descriptors utilisables jusqu'a 65536

echo "Elasticsearch - nofile 65536" >> /etc/security/limits.conf

Pour différentes applications, Elasticsearch utilise un certain nombre de processus, il est important qu’il puisse en créer dès qu’il en a besoin, le nombre minimal de processus qu’il doit être en mesure de créer est de 4096. Ceci peut être fait avec la commande

echo "Elasticsearch - nproc 4096" >> /etc/security/limits.conf

Par défaut, la taille du tas (heap) de la JVM est définie à 1 Go. Pour un environnement de production, il est recommandé d’augmenter cette taille, il y a pour autant des règles à respecter : *Avoir une taille maximale(Xmx) et minimale(Xms) équivalente *Plus le tas est grand, plus le cache sera grand *Ne pas définir la taille maximale a plus de 50% de la mémoire totale *Ne pas dépasser 32 Go

Pour cela, il faut ajouter ou modifier les lignes (Xms et Xmx) dans le fichier /etc/Elasticsearch/jvm.options. Ici la taille du tas est définie à 4Go :

SIZE=4;sed -i "/^-Xm.*g/ s/[0-9]\{1,\}/$SIZE/g" /etc/elasticsearch/jvm.options
wiki/ajouter.un.serveur.elasticsearch.txt · Dernière modification: 2018/04/23 19:35 par root
CC0 1.0 Universal
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5