Poner a correr Elasticsearch

3/16

Lectura

Paso 1 - Instalar Postman

Para instalar Postman accedes a la URL https://www.postman.com/downloads/ la cual te provee con el instalador de tu sistema operativo.

Windows

Para la instalaci贸n en Windows, bajamos el archivo *.exe. Luego lo abrimos y finalizamos la instalaci贸n.

image6.png
Postman soporta Windows desde la versi贸n 7 en adelante en las arquitecturas x86 y x64.

Mac

image2.png
La versi贸n m铆nima soportada es MacOS 10.9.

Para la instalaci贸n en Mac bajamos el archivo *.zip que contiene el instalador. Luego descomprimes este archivo y te queda un instalador llamado Postman 2.

image5.png

Haces doble clic sobre instalador y aparece una ventana recordando que es un ejecutable bajado de internet, le das clic en abrir.

image4.png

Luego el instalador te pregunta si quieres mover la aplicaci贸n al folder de Applications, le das que s铆 quieres moverla y enseguida tendr谩s la aplicaci贸n abierta y lista para usar.

image3.png

Paso 2 - Crear archivo de configuraci贸n

Para crear el archivo de configuraci贸n te recomiendo utilices un directorio personalizado para este curso, en el cual puedas guardar todos los archivos que usar谩s. Entonces lo primero ser谩 crear este directorio y entrar en 茅l.

Nota: los siguientes comandos se deben ejecutar en una terminal

$ mkdir curso-elastic-platzi
$ cd curso-elastic-platzi

Ahora abres un editor de texto (te recomiendo Visual Studio Code) y creas un archivo dentro de este directorio. El nombre del archivo es docker-compose.yml

image1.png

Una vez creado el archivo, le vas a agregar la siguiente configuraci贸n:

version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - cluster.initial_master_nodes=es01
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic

volumes:
  data01:
    driver: local

networks:
  elastic:
    driver: bridge

Este archivo es basado en las configuraciones recomendadas para correr Elasticsearch con Docker. Esta gu铆a se puede consultar en https://www.elastic.co/guide/en/elasticsearch/reference/7.6/docker.html.

Ac谩 un breve repaso de lo que hace este archivo:

  1. Le dice a Docker que use la imagen de Elasticsearch con versi贸n 7.6.0. Esta es la versi贸n que vas a usar durante el curso.
  2. Le dice que el nombre del contenedor ser谩 es01.
  3. Le indica unas configuraciones para crear el cluster y el nodo por defecto.
  4. Le indica que el puerto sobre el que corre Elasticsearch es el 9200. A su vez le dice que exponga ese mismo puerto a tu m谩quina para que puedas usar el servicio bajo el puerto est谩ndar.

Por 煤ltimo guardamos el archivo.

Paso 3 - Levantar el servicio

Luego de tener el archivo listo, le dices a Docker que levante el servicio ejecutando el siguiente comando:

$ docker-compose up

Este comando se encarga de ejecutar las directivas que especificamos en el archivo dejando el servicio de Elasticsearch funcionando correctamente en el puerto 9200. Esto puede tomar unos segundos mientras se configura el contenedor y se levanta el servicio.

Para comprobar que Elasticsearch ya est谩 corriendo sobre tu m谩quina, abres Postman y ejecutas un GET sobre la url http://localhost:9200. Si todo sali贸, correctamente ver谩s un resultado similar a este:

image7.png

隆Listo! te veo en la siguiente clase.

Aportes 31

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Si alguien tiene GNU/Linux y le sale un error como este al intentar levantar el servicio con docker-compose:

es01    | [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
es01    | ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/es-docker-cluster.log
es01    | {"type": "server", "timestamp": "2020-06-26T01:04:28,625Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "es-docker-cluster", "node.name": "es01", "message": "stopping ..." }
es01    | {"type": "server", "timestamp": "2020-06-26T01:04:28,649Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "es-docker-cluster", "node.name": "es01", "message": "stopped" }
es01    | {"type": "server", "timestamp": "2020-06-26T01:04:28,649Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "es-docker-cluster", "node.name": "es01", "message": "closing ..." }
es01    | {"type": "server", "timestamp": "2020-06-26T01:04:28,666Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "es-docker-cluster", "node.name": "es01", "message": "closed" }
es01    | {"type": "server", "timestamp": "2020-06-26T01:04:28,668Z", "level": "INFO", "component": "o.e.x.m.p.NativeController", "cluster.name": "es-docker-cluster", "node.name": "es01", "message": "Native controller process has stopped - no new native processes can be started" }
es01 exited with code 78

Es por falta de memoria en el host, para solucionar el problema deben aumentar la memoria disponible en el host de la corriendo el siguiente comando en consola:

sudo sysctl -w vm.max_map_count=262144

S铆, ya s茅 que modificar el host mata por completo el prop贸sito de estar usando Docker pero es justamente lo que recomiendan en la p谩gina oficial de elasticsearch, espero modifiquen su postura en el futuro.

Para el problema vm.max_map_count is too low en Windows con docker desktop me funcion贸 la siguiente soluci贸n:
(btw, hay que tener wsl activo)

Usando Powershell ejecuto el siguiente comando para que use la distribuci贸n de docker-desktop :

wsl -d docker-desktop

Consulto el valor de memoria asignada actual (debe ser 65530) con el comando:

wsl -d docker-desktop cat /proc/sys/vm/max_map_count

Luego el reasigno el valor con:

wsl -d docker-desktop sysctl -w vm.max_map_count=262144

Repito el paso dos para confirmar el valor reasignado, debe ser 262144. Luego vuelvo a ejecutar el comando con docker-compose up. En mi caso no fue necesario reiniciar el docker desktop pero si no ejecuta prueben esta opci贸n y ya me ejecuta la petici贸n en Postman.

segui la ayuda de @jamarin_ y deje el docker-compose.yml de la siguiente forma y funciono:

version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - bootstrap.memory_lock=true
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic

volumes:
  data01:
    driver: local

networks:
  elastic:
    driver: bridge

En Windows he tenido problemas para arrancar ElasticSearch sobre docker. He podido arrancarlo al modificar el environment con los siguientes par谩metros:
` - node.name=es01

  • cluster.name=es-docker-cluster
  • bootstrap.memory_lock=true
  • discovery.type=single-node
  • 鈥淓S_JAVA_OPTS=-Xms1G -Xmx1G鈥漙

B谩sicamente he eliminado cluster.initial_master_nodes=es01 y he a帽adido discovery-type=single-node, para hacer que ElasticSearch utilice cl煤ster de un solo nodo en su almacenamiento.

He visto que varias personas han tenido problemas para poner a correr Elasticsearch en Windows, les paso un tutorial que hice sobre otra manera que encontre de hacerlo, espero les sirva https://platzi.com/tutoriales/1912-intro-elasticsearch/9839-otra-forma-de-usar-elasticsearch-en-windows/ c:

Nota personal, no olvides que docker debe estar funcionando antes de docker-compose up

Hola, si alguien tiene problemas con las ultimas versiones de elastic comparto esta configuraci贸n que me funcion贸.

version: "3.7"
services:
    es01:
        image: elasticsearch:7.4.2
        container_name: es01
        environment:
            - node.name=es01
            - cluster.name=es-docker-cluster
            - discovery.type=single-node
        volumes:
            - elastic:/usr/share/elasticsearch/data
        networks:
            - elastic
        ports:
            - 9200:9200
            - 9300:9300
networks:
  elastic:
    driver: bridge
volumes:
  elastic:

Saludos, no me funciona. Dic de 2020.
Hice todos los pasos, al momento de ejecutar el docker, no aparece nada en el localhost 9200 y en la consola docker no quiere subir, intenta, pero luego aparece inactivo. No aparecen errores.
Yo creo que falt贸 un video con estos pasos, no puedo avanzar en el curso ahora.

Perfect.

Gracias!

Aca les dejo una version simplificada del docker-compose鈥

version: '3.1'

services:
  elastic:
    image: elasticsearch:7.14.2
    container_name: elastic
    environment:
      - discovery.type=single-node
    volumes:
      - ./data:/usr/share/elasticsearch/data
    ports:
      - 9300:9300
      - 9200:9200
    networks:
      - elastic

networks:
  elastic:
    driver: bridge

Esto es siguiendo la doc de la imagen oficial en DockerHub

para ejecutar esto solo necesitar crear una carpeta data jutno a su archivo docker-compose.yml y darle permisos de acceso de la siguiente forma:

mkdir data && sudo chmod -R 777 data

Despues podran ejecutar docker-compose up sin ningun problema.

Solucion al error al compilar en Windows/Linux en 3 simples pasos:

  1. Si tenes Windows, instala la terminal GNU/Linux que prefieras:

Ubuntu 20.04 LTS
openSUSE Leap 15.1
SUSE Linux Enterprise Server 15 SP1
Kali Linux
Debian GNU/Linux

  1. Corre el codigo:
sudo sysctl -w vm.max_map_count=262144
  1. Compila.

Saludos xD

Si os da un error de memoria (es01 exited with code 78)
probar lo que pone en la documentaci贸n:
https://www.elastic.co/guide/en/elasticsearch/reference/7.12/docker.html#_set_vm_max_map_count_to_at_least_262144

$ sudo sysctl -w vm.max_map_count=262144
$ sudo docker-compose up

Hola!
Yo tuve problemas para realizar la instalaci贸n y encontr茅 la soluci贸n poniendo este docker-compose, espero sea de utilidad:

version: '2.2'

services:

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0
    container_name: elasticsearch
    environment:
      - node.name=elasticsearch
      - discovery.seed_hosts=elasticsearch
      - cluster.initial_master_nodes=elasticsearch
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200

  kibana:
    image: docker.elastic.co/kibana/kibana:7.8.0
    container_name: kibana
    environment:
      ELASTICSEARCH_URL: ""
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch

volumes:
  esdata1:
    driver: local

Para ello tuve que borrar todas las im谩genes ya hechas anteriormente y luego correrlo con docker-compose up

Complet茅 todos los pasos, pero no he podido levantar el servicio. Prob茅 algunas soluciones de otros compa帽eros, pero ninguna me funcion贸. 驴Alguien que me ayude?

Para detener el servicio:

docker stop es01

Para subir el servicio:

docker start es01

Funcionando en w10 sin problemas

si necesitan correr ES solo usando docker run, solo cambien a su versi贸n favorita:
docker run -d -p 9200:9200 -e 鈥渉ttp.host=0.0.0.0鈥 -e 鈥渢ransport.host=127.0.0.1鈥 -e 鈥渪pack.security.enabled=false鈥 docker.elastic.co/elasticsearch/elasticsearch:6.0.1

Para que funcione en MAC con Chip M1 tuve que hacer algunas modificaciones al archivo de Docker.

version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2-arm64
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - cluster.initial_master_nodes=es01
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic

volumes:
  data01:
    driver: local

networks:
  elastic:
    driver: bridge

Aqu铆 les comparto unas urls para consultar el estado del servicio de Elasticsearch:

  • Clusters: localhost:9200/_cat/nodes?v&pretty
  • Disk space usage: localhost:9200/_cat/allocation?v&pretty
  • Nodes & shards: localhost:9200/_cat/shards?v&pretty


Por cierto, configuraci贸n del servicio en Mac exitosa (ENE-2022).

localhost:9200/_cat/nodes?v&pretty

con esta ruta pueden ver el mensaje en postman formateado

Estaba tratando de ejecutar docker-compose up conecada a una VPN y obten铆a

Creating network "cursoelasticplatzi_elastic" with driver "bridge"

Simplemente me desconect茅

Buen d铆a, alguien tendr谩 la forma de realizar esta instalaci贸n mas simplificada, estoy intentando seguir los pasos pero no se como continuar.

Hola a todos.

mi sistema operativo (Windows 8) no soporta Docker. Alguien me puede por favor ayudar a buscar una alternativa

馃憤馃憤馃憤馃憤馃憤馃憤馃憤馃憤

Estoy habilitando un servidor en la nube, como puedo hacer para restringir el acceso? en este momento cualquier persona que averigue la IP puede conectarse.

Perfecto lo instale sin problemas.

hola, tengo un problema, cuando ejecuto el ultimo codigo (docker-compose up ) este ( Can鈥檛 find a suitable configuration file in this directory or any parent. Are you in the right directory? ), me sale este esto alguien sabria como podria solucionarlo?

Todo ok.

{
  "name": "es01",
  "cluster_name": "es-docker-cluster",
  "cluster_uuid": "g-TwtD0vSmGlyMXKuWeL2g",
  "version": {
    "number": "7.6.0",
    "build_flavor": "default",
    "build_type": "docker",
    "build_hash": "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
    "build_date": "2020-02-06T00:09:00.449973Z",
    "build_snapshot": false,
    "lucene_version": "8.4.0",
    "minimum_wire_compatibility_version": "6.8.0",
    "minimum_index_compatibility_version": "6.0.0-beta1"
  },
  "tagline": "You Know, for Search"
}```

Todo funcion贸 perfecto en MacOS.
2020-07-30

MI configuraci贸n de docker compose

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION}
    container_name: es01
    env_file: ./.env
    environment:
      - node.name=${ELASTIC_NODE_NAME}
      - cluster.name=${ELASTIC_CLUSTER_NAME}
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms${ELASTICSEARCH_HEAP} -Xmx${ELASTICSEARCH_HEAP}"
      - ELASTIC_USERNAME=${ELASTIC_USERNAME}
      - ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 200000
        hard: 200000
    restart: unless-stopped
    volumes:
      - esdata01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      - elastic

隆Funcionando bien en Mac!