ventajas tutorial requerimientos puertos logs instalar español desventajas comandos aplicaciones elasticsearch

tutorial - requerimientos elasticsearch



Cómo agregar un nuevo nodo a mi clúster de Elasticsearch (5)

Mi clúster tiene un estado yellow , ya que solo tiene un único nodo, por lo que las réplicas permanecen sin firmar simplemente porque no hay ningún otro nodo disponible para contenerlas.

Así que quiero crear / agregar otro nodo para que Elasticsearch pueda comenzar a asignarle réplicas. Solo tengo una máquina y estoy ejecutando ES como un servicio .

He encontrado toneladas de sitio con algo de información, pero ninguno de ellos me da claramente cómo puedo agregar otro nodo a ES.

¿Alguien me puede explicar qué archivos debo editar y qué comandos debo iniciar para crear otro nodo en mi clúster? ¿Tengo que ejecutar dos instancias ES? ¿Cómo puedo hacer esto?

Gracias por adelantado.


CONSEJOS PARA AGREGAR OTRO NODO:

1) VERSIONES:

Es un buen consejo revisar todos los nodos para ver el estado: http://elastic-node1:9200/

Tenga en cuenta que, en la mayoría de los casos, la versión debe ser la misma, incluso menor.

{ "name" : "node2", "cluster_name" : "xxxxxxxxxxx", "cluster_uuid" : "n-xxxxxxxxxxxxxxx", "version" : { "number" : "5.2.2", "build_hash" : "xxxx", "build_date" : "20-02-24T17:26:45.835Z", "build_snapshot" : false, "lucene_version" : "6.4.1" }, "tagline" : "You Know, for Search" }

Tenga en cuenta que si ve un número de versión diferente en el nodo 1, por ejemplo

"number" : "5.2.1"

tienes que actualizar tu nodo en ese caso a la versión 5.2.2 (igual que node1).

2) NODOS Y REPLICA:

¿Cuál es el caso de uso del nodo? Para 3 nodos haría esto:

curl -XPUT ''localhost:9200/_cluster/settings?pretty'' -H ''Content-Type: application/json'' -d'' { "transient": { "discovery.zen.minimum_master_nodes": 3 } } ''

Aún mejor es cambiar la configuración en el archivo de configuración de Elasticsearch:

/etc/elasticsearch/elasticsearch.yml # need to be changed on each node (has to be unique for each node): node.name: node1 # need to be the same in all nodes: cluster.name: my_cluster discovery.zen.ping.unicast.hosts: ["IP_ADDRESS_OR_HOSTNAME1", "IP_ADDRESS_OR_HOSTNAME2", "IP_ADDRESS_OR_HOSTNAME3"]

Y si tiene 3 nodos, ¿desea dos réplicas y una primaria?

curl -XPUT ''localhost:9200/_settings?pretty'' -H ''Content-Type: application/json'' -d'' { "index" : { "number_of_replicas" : 2 } }''

3) ASEGÚRESE DE QUE LOS NODOS ESTÁN HABILITADOS

Hay una manera de patear un nodo:

curl -XPUT localhost:9200/_cluster/settings -d ''{ "transient" :{ "cluster.routing.allocation.exclude._ip" : "NODE_TO_REMOVE_IP_ADDRESS_OR_HOSTNAME" } }'';echo

Entonces, si hizo eso, y ahora desea agregar el nodo nuevamente: https://www.elastic.co/guide/en/elasticsearch/guide/current/_rolling_restarts.html

puede hacerlo con la siguiente solicitud (lea el enlace mencionado anteriormente):

curl -XPUT localhost:9200/_cluster/settings -d ''{ "transient" :{ "cluster.routing.allocation.enable" : "all" } }'';echo

4) NUNCA OLVIDAR, LA REDES

Cortafuegos, red ... ¿Puede llegar al nuevo nodo en el puerto 9200? ¿Puedes verlo en tu navegador web?

Puedes

curl http://your-elasticsearch-hostname:9200/

?

CONSEJOS PARA ELIMINAR NODO DEL GRUPO:

1) QUITAR CON API

curl -XPUT ''http://localhost:9200/_cluster/settings?pretty'' -d '' { "transient" : { "cluster.routing.allocation.exclude._name" : "node3" } }''

2) COMPRUEBE SU ARCHIVO DE CONFIGURACIÓN

Verifique el archivo de configuración en: /etc/elasticsearch/elasticsearch.yml

y deja solo los nodos que quieras conservar:

discovery.zen.ping.unicast.hosts:["IP_ADDRESS_OR_HOSTNAME1", "IP_ADDRESS_OR_HOSTNAME2"]

* VERIFIQUE SU ESTADO *

Consulte http://elk-pipeline:9200/_cat/shards ¿Cuál es su estado? Puede ver: INICIALIZANDO Eso probablemente significa que los datos se transfieren. Entonces, si sus datos son grandes, (y no en SSD), espere.

NO OLVIDES

Puede ver si sus datos se están moviendo actualmente escribiendo:

[watch] du /var/lib/elasticsearch/

Eso es todo por ahora. Intentaré agregar más información aquí de vez en cuando.

Por favor, siéntase libre de cambiar / agregar.


Los pasos completos en Windows Box son:

  1. descomprima elástico, digamos, a C: / ELK / elastic / run command bin/service install elastic-search-x64-node01 que creará un servicio llamado elastic-search-x64-node01
  2. Editar archivo de configuración elasticsearch.yml :

    cluster.name: Animals node.name: Snake node.master: true node.data: true path.data: C:/ELK/storage/data path.logs: C:/ELK/storage/logs http.port: 9200 discovery.zen.ping.multicast.enabled: false discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

  3. ejecute el service manager elastic-search-x64-node01 y configure sus reglas de servicios e inicie el servicio

  4. descomprima elástico, digamos, a C: / ELK / elastic2 / run comando bin/service install elastic-search-x64-node02 que creará un servicio llamado elastic-search-x64-node02

  5. Editar archivo de configuración elasticsearch.yml :

    cluster.name: Animals node.name: Baboon node.master: false node.data: true path.data: C:/ELK/storage/data path.logs: C:/ELK/storage/logs http.port: 9201 discovery.zen.ping.multicast.enabled: false discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

  6. ejecute el service manager elastic-search-x64-node02 y configure sus reglas de servicios e inicie el servicio

En este punto, tiene 2 nodos separados (almacenan datos en la misma carpeta, pero estoy demasiado relajado para editar path.data para el segundo nodo) como 2 Servicios de Windows separados y GET http://localhost:9200/_cluster/health muestra algo como:

{ "cluster_name": "Animals", "status": "green", "timed_out": false, "number_of_nodes": 2, "number_of_data_nodes": 2, "active_primary_shards": 4, "active_shards": 8, "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 }


No tengo claro cuál es tu pregunta aquí. Hay dos posibilidades para las que vas.

1) Tiene dos nodos y desea que se puedan ver entre sí. Hay una gran cantidad de documentación para esto por todas partes. Si este es el caso, sugeriría que realice una prueba para asegurarse de que cada host pueda hablar con el otro, es decir, ssh en el host A e intente curlear el host B: 9200, y viceversa. También querrá asegurarse de que las configuraciones estén configuradas correctamente.

2) Desea configurar un ''clúster'' en su máquina local. En este caso, necesitará dos archivos de configuración separados, y deberá iniciar elasticsearch utilizando un archivo de configuración específico para su segundo ''nodo'' (así como modificar la segunda configuración para usar diferentes puertos, etc.). Es posible que desee revisar este enlace: http://www.concept47.com/austin_web_developer_blog/elasticsearch/how-to-run-multiple-elasticsearch-nodes-on-one-machine/

Pero sí, en última instancia, debe ejecutar los procesos de elasticsearch, ya sea que ambos estén en la misma máquina, o si depende de dos máquinas diferentes.


Primero, puede eliminar las réplicas para volver a un estado verde, puede hacerlo incluso después de haber creado el índice y agregado documentos.

Así es como establece el recuento de réplicas en 0:

curl -XPUT ''localhost:9200/my_index/_settings'' -d '' { "index" : { "number_of_replicas" : 0 } }''

Si desea simplemente agregar otro nodo a su grupo, deberá editar el elasticsearch.yml , preferiblemente en ambos nodos con estos cambios:

cluster.name: my-cluster node.name: node01 discovery.zen.ping.multicast.enabled: false discovery.zen.ping.unicast.hosts: ["192.168.0.5"]

Configure los hosts de unidifusión en cada nodo para que hagan referencia al otro, establezca que el nombre del clúster sea el mismo en ambos nodos y asigne un nombre único a cada nodo, luego reinicie ambas instancias de ES y su clúster debe estar en línea.


Si está ejecutando Elasticsearch n local, vaya a otro terminal y ejecute elasticsearch nuevamente. De esta manera tendrás dos instancias.

Verá el siguiente mensaje en la instancia recién ejecutada:

[Black Widow] detected_master [N''Garai]

En instancia ya en ejecución ( master node)

[N''Garai] added {[Black Widow]

Suponiendo que [N''Garai] y {[Black Widow] sean nombres de nodo aleatorios.