= ELK: Elasticserch (instalación y configuración)
{{ :info:cursos:openwebinars:elk:elasticsearch:1.2_instalacion_y_configuracion.pdf |}}
* matriz OS/JVMs: [[https://www.elastic.co/support/matrix/show_os]]
* oracle JVM 1.8.0_131 o superior
* recomendable 64 bits
* la misma versión en todos los nodos
== instalación
* Java:sudo add-apt-repository ppa:webupd8team/java # obsoleto?
sudo apt update
sudo apt install oracle-java8-installer
...
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
* ''source /etc/environment''
* Elasticsearch:wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt isntall apt-transport-https
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt update && sudo apt install elasticsearch
update-rc.d elasticsearch defaults 95 10
service elasticsearch status
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
* rutas:
* HOME: **/usr/share/elasticsearch**
* BIN: **/usr/share/elasticsearch/bin**
* CONF: **/etc/elasticsearch**
* ENV: **/etc/default/elasticsearch**
* DATA: **/var/lib/elasticsearch**
* LOGS: **/var/log/elasticsearch**
* PLUGINS: **/usr/share/elasticsearch/plugins**
curl -XGET http://localhost:9200
== configuración
* JVM Options (reserva memoria ):
* elasticsearch.yml: ''bootstrap.memory_lock=true''
* jvm.options: ''-Xms2g, -Xmx2G'' (aproximadamente la mitad de la memoria)
* /etc/default/elasticsearch: ''MAX_LOCKED_MEMORY=unlimited'' <- cogerá la máxima indicada en el parámetro anterior
* /usr/lib/systemd/system/elasticsearch.service: ''LimitMEMLOCK=infinity''
* ''sudo systemctl daemon-reload''
* deshabilitar SWAP (en /etc/fstab)
* Paths (/etc/elasticsearch/elasticsearch.yml)
* ''path.data=/var/lib/elasticsearch''
* podría haber múltiples rutas, se usarán todas.
* Los datos de un shard se almacena en la misma ruta
* ''path.logs=/var/log/elasticsearch''
* ''cluster.name=elasticsearch''
* ''node.name=<7 primeros caracteres del UUID (generado aleatoriamente)>''
* también se podría usar el nombre de la máquina (${HOSTNAME})
* ''network.host=127.0.0.1''
* para cluster, añadir IP "pública"
* varias direcciones: ''["IP","IP"]'' -> ''["127.0.0.1","192.168.100.10"]''
* ''discovery.zen.ping.unicast.hosts'': lista de nodos.
* Por defecto usará desde el puerto 9300 a 9305 intentando conectar con otros nodos (auto-clustering) -> ''["IP_nodo1","IP_nodo2","IP_nodo3"]''
* ''discovery.zen.minimum_master_nodes''
* no configurado correctamente, puede provocar un split brain (separación del cluster)
* (master_elegible_nodes/2)+1
* ''curl -XGET http://localhost:9200/_cluster/health?pretty''
{{:info:cursos:openwebinars:elk:elasticsearch:pasted:20211129-124856.png}}
== tips
* VMs con 2 interfaces (para trabajar, otra interna)
* asignar las mismas IPs a las mismas máquinas