Revert "retrait de mentions à Git et apt update"

This reverts commit abc497e1d3.
This commit is contained in:
Jérémy Lecour 2016-09-28 11:45:01 +02:00 committed by Jérémy Lecour
parent abc497e1d3
commit c9afbe04a8
2 changed files with 51 additions and 41 deletions

View file

@ -17,7 +17,7 @@ Elasticsearch est un serveur de base de donnée qui dispose d'une interface REST
~~~
# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -
# echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | tee -a /etc/apt/sources.list.d/elastic.list
# apt install elasticsearch openjdk-7-jre openjdk-7-jre-headless
# apt update && apt install elasticsearch openjdk-7-jre openjdk-7-jre-headless
~~~
## Configuration de base
@ -47,13 +47,17 @@ Plus détails sur la bonne configuration d'Elasticsearch sont sur [HowtoElasticS
# chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/plugins/
~~~
~~~
# cd /etc; git add -A; git commit -m "Install Elasticsearch"
~~~
## Démarrage
~~~
# systemctl start elasticsearch
~~~
Pour que le démon soit géré automatiquement par SystemD :
Pour que le démon soit géré automatiquement par systemd :
~~~
# systemctl enable elasticsearch
@ -76,7 +80,8 @@ Documentation officielle : <https://www.elastic.co/guide/en/logstash/2.4/index.h
~~~
# echo "deb http://packages.elastic.co/logstash/2.4/debian stable main" | tee -a /etc/apt/sources.list.d/elastic.list
# apt install logstash
# apt update && apt install logstash
# cd /etc; git add -A; git commit -m "Install Logstash"
~~~
Dans `/etc/default/logstash` il faut penser à ajuster la ram allouée.
@ -90,7 +95,7 @@ Voir <https://www.elastic.co/guide/en/logstash/current/configuration.html>
# systemctl start logstash
~~~
Pour que le démon soit géré automatiquement par SystemD :
Pour que le démon soit géré automatiquement par systemd :
~~~
# systemctl enable logstash
@ -107,7 +112,7 @@ Documentation officielle : <https://www.elastic.co/guide/en/kibana/4.6/index.htm
~~~
# echo "deb http://packages.elastic.co/kibana/4.6/debian stable main" | tee -a /etc/apt/sources.list.d/elastic.list
# apt install kibana
# apt update && apt install kibana
# /opt/kibana/bin/kibana plugin --install elastic/sense
# chown -R kibana: /opt/kibana
~~~
@ -125,13 +130,17 @@ Documentation officielle : <https://www.elastic.co/guide/en/kibana/4.6/index.htm
}
~~~
~~~
# cd /etc; git add -A; git commit -m "Install Kibana"
~~~
## Démarrage
~~~
# systemctl start kibana
~~~
Pour que le démon soit géré automatiquement par SystemD :
Pour que le démon soit géré automatiquement par systemd :
~~~
# systemctl enable kibana

View file

@ -17,18 +17,13 @@ Nous utilisons les paquets Debian distribués par Elasticsearch, les paquets off
~~~
# echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -
# aptitude install elasticsearch openjdk-7-jre
# apt update
# apt install elasticsearch openjdk-7-jre
~~~
Il faut penser à mettre `http://packages.elastic.co/.*` dans la whitelist de Squid si nécessaire.
Pour que le démon soit géré automatiquement par SysV init :
~~~
# update-rc.d elasticsearch defaults 95 10
~~~
Pour systemd :
Pour que le démon soit géré automatiquement par systemd :
~~~
# systemctl enable elasticsearch
@ -36,10 +31,10 @@ Pour systemd :
## Configuration
Il est conseillé de ne pas activer le logging stdout vers la console. Mais de conserver seulement vers les logs. (/var/log/elasticsearch).
Il est conseillé de ne pas activer le logging stdout vers la console, mais de conserver seulement vers les logs. (`/var/log/elasticsearch`).
Dans `/etc/elasticsearch/logging.yml`
~~~
~~~{.diff}
-rootLogger: ${es.logger.level}, console, file
+rootLogger: ${es.logger.level}, file
~~~
@ -73,12 +68,14 @@ Assurez-vous de créer le répertoire :
https://github.com/lmenezes/elasticsearch-kopf
~~~
/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
~~~
## Mode cluster
Exemples avec 3 instances nommés **elastic1**, **elastic2** et **elastic3**. Avec le mode d'auto découverte.
_Paragraphe à revoir car l'auto-découverte et le multicast ont changé._
Exemples avec 3 instances nommés **elastic1**, **elastic2** et **elastic3**.
Spécifier un nom de cluster dans `elasticsearch.yml` sur chaque machine.
@ -133,10 +130,8 @@ On peut consulter le status en faisant des requêtes de types RESTFul. :
curl 'http://localhost:9200/_nodes?pretty=true'
~~~
Si le master passe en DOWN, un autre est élu.
~~~
[2013-10-03 16:15:53,892][INFO ][discovery.zen ] [elastic2] master_le
ft [[elastic1][3tn7uHSHR8-donXO6JXFRA][inet[/192.168.4.201:9300]]], reason [shut
@ -158,40 +153,46 @@ discovery.zen.ping.unicast.hosts: ["elastic2", "elastic3"]
## Check Nagios
On check sur la page `/_cluster/health` si le status n'est pas en **red**.
On check sur la page `/_cat/health` si le status n'est pas en **red**.
~~~
/usr/lib/nagios/plugins/check_http -H localhost -u /_cluster/health -p 9200 -r '"status":"red",' --invert-regex
/usr/lib/nagios/plugins/check_http -I 127.0.0.1 -u /_cat/health?h=st -p 9200 -r 'red' --invert-regex
~~~
## Backup
Une sauvegarde simple peut être de sauvegarder `/var/lib/elasticsearch/`
La sauvegarde se fait par snapshots, dans un ou plusiers dépôts.
Il est néanmoins conseillé de désactiver/flusher les translogs avant la sauvegarde, puis de les réactiver :
On crée le dépôt sur le filesystem :
~~~
$ curl -s -X PUT 'localhost:9200/_settings' -d '{"index.translog.disable_flush": true}' >/dev/null
$ curl -s 'localhost:9200/_flush' | grep -qe '"ok":true'
$ if [ $? -eq 0 ]; then
rsync -a --delete /var/lib/elasticsearch/ /home/backup/elasticsearch/
else
echo "Error when flushing ES translog indexes."
fi
$ curl -s -XPUT 'localhost:9200/_settings' -d '{"index.translog.disable_flush": false}' > /dev/null
# mkdir /home/backup-elasticsearch
# chown elasticsearch: /home/backup-elasticsearch
~~~
Une sauvegarde plus avancée est d'utiliser les snaphosts, un exemple :
NB : en cas de cluster multi-nœuds, il faut penser que le filesystem doit être partagé (via NFS ou autre) car chaque nœud ne gère que ses propres données.
Le dépôt doit être référencé dans la configuration `/etc/elasticsearch/elasticsearch.yml` :
~~~
$ cd /srv/snapshots
$ for i in $(ls -1d snapshot-* | head -n -10 | sed s'/snapshot-snapshot_//g'); do curl -s -XDELETE "localhost:9200/_snapshot/backup/snaps hot_${i}"; done
$ date=$(date +%Y-%m-%d)
$ curl -s -XDELETE "localhost:9200/_snapshot/backup/snapshot_${date}" | grep -v acknowledged..true
$ curl -s -XPUT "localhost:9200/_snapshot/backup/snapshot_${date}?wait_for_completion=true" -o /tmp/es_snapshot_${date}.log
path.repo: ["/home/backup-elasticsearch"]
~~~
Attention, en mode cluster il faut gérer des montages NFS sur les nœuds slaves car chacun écrit uniquement les données qu'il a !
Après restart d'Elasticsearch on lui fait créer le snapshot **evobackup** :
~~~
# curl -XPUT 127.0.0.1:9200/_snapshot/evobackup -d '{"type": "fs", "settings": {"location": "/home/backup-elasticsearch/evobackup", "compress": true}}'
~~~
Enfin, dans un script qui tourne régulièrement, on provoque la fixation d'un snapshot :
~~~
date=$(date +%H)
curl -s -X DELETE "127.0.0.1:9200/_snapshot/evobackup/h${date}" | grep -v acknowledged..true
curl -s -X PUT "127.0.0.1:9200/_snapshot/evobackup/h${date}?wait_for_completion=true" -o /tmp/es_snapshot_h${date}.log
~~~
Ici, on crée un snapshot portant le numéro de l'heure courante. Il est supprimé avant d'être recréé afin d'avoir des snapshots "roulants".
## Principe de fonctionnement
@ -231,7 +232,7 @@ curl -X PUT localhost:9200/planet
Créer un type de donnée nommé « hacker ».
~~~
curl -X PUT localhost:9200/planet/hacker/_mapping -d @- <<< '
curl -X PUT localhost:9200/planet/hacker/_mapping -d '
{
"hacker": {
"properties": {
@ -250,7 +251,7 @@ curl -X PUT localhost:9200/planet/hacker/_mapping -d @- <<< '
Créer un document de type hacker avec l'ID 1.
~~~
curl -X PUT localhost:9200/planet/hacker/1 -d @- <<< '{"handle": "jean-michel", "age": 18}'
curl -X PUT localhost:9200/planet/hacker/1 -d '{"handle": "jean-michel", "age": 18}'
~~~
Voir son contenu.