Suponiendo que tengo 5 máquinas en las que quiero ejecutar un clúster de búsqueda elástica, y todas están conectadas a una unidad compartida. Puse una única copia de elasticsearch en esa unidad compartida para que los tres puedan verla. ¿Debo iniciar la búsqueda elástica en esa unidad compartida en todas mis máquinas y la agrupación en clúster funcionará automáticamente? ¿O tendría que configurar ajustes específicos para que elasticsearch se dé cuenta de que se está ejecutando en 5 máquinas? Si es así, ¿cuáles son las configuraciones relevantes? ¿Debo preocuparme por la configuración de réplicas o se maneja automáticamente?
elasticsearch
Rolando
fuente
fuente
Respuestas:
es super fácil.
Necesitará que cada máquina tenga su propia copia de ElasticSearch (simplemente copie la que tiene ahora); la razón es que cada máquina / nodo mantendrá sus propios archivos que están fragmentados en todo el clúster.
Lo único que realmente necesita hacer es editar el archivo de configuración para incluir el nombre del clúster.
Si todas las máquinas tienen el mismo nombre de clúster, elasticsearch hará el resto automáticamente (siempre que las máquinas estén todas en la misma red)
Lea aquí para comenzar: https://www.elastic.co/guide/en/elasticsearch/guide/current/deploy.html
Cuando crea índices (dónde van los datos), define en ese momento cuántas réplicas desea (se distribuirán por el clúster)
fuente
Suele tratarse de forma automática.
Si el descubrimiento automático no funciona. Edite el archivo de configuración de búsqueda elástica habilitando el descubrimiento de unidifusión
Nodo 1:
Nodo 2:
y así sucesivamente para el nodo 3,4,5. Convierta el nodo 1 en maestro y el resto solo como nodos de datos.
Editar: tenga en cuenta que, según la regla ES, si tiene
N
nodos, por convención, losN/2+1
nodos deben ser maestros para los mecanismos de conmutación por error. Sin embargo, pueden o no ser nodos de datos.Además, en caso de que el descubrimiento automático no funcione, la razón más probable es que la red no lo permita (y por lo tanto esté deshabilitado). Si se producen demasiados pings de detección automática en varios servidores, los recursos para administrar esos pings evitarán que otros servicios se ejecuten correctamente.
Por ejemplo, piense en un clúster de 10,000 nodos y los 10,000 nodos haciendo los pings automáticos.
fuente
Probé los pasos que sugirió @KannarKK en ES 2.0.2, sin embargo, no pude poner el clúster en funcionamiento. Evidentemente, descubrí algo, ya que había configurado el número de puerto tcp en el maestro, en la configuración del esclavo discovery.zen.ping.unicast.hosts necesita el número de puerto del maestro junto con la dirección IP (número de puerto tcp) para el descubrimiento. Entonces, cuando intento seguir la configuración, me funciona.
Nodo 1
Nodo 2
fuente
Elastic Search 7 cambió las configuraciones para la inicialización del clúster. Lo que es importante tener en cuenta es que las instancias de ES se comunican internamente utilizando la capa de transporte (TCP) y no el protocolo HTTP que normalmente se utiliza para realizar operaciones en los índices. A continuación se muestra la configuración de muestra para el clúster de 2 máquinas.
cluster.name: cluster-new node.name: node-1 node.master: true node.data: true bootstrap.memory_lock: true network.host: 0.0.0.0 http.port: 9200 transport.host: 102.123.322.211 transport.tcp.port: 9300 discovery.seed_hosts: [“102.123.322.211:9300”,"102.123.322.212:9300”] cluster.initial_master_nodes: - "node-1" - "node-2”
Configuración de la máquina 2: -
cluster.name: debe ser el mismo en todas las máquinas que van a formar parte de un clúster.
node.name: Identificador de la instancia ES. Por defecto, el nombre de la máquina si no se proporciona.
node.master: especifica si esta instancia de ES va a ser maestra o no
node.data : especifica si esta instancia de ES va a ser un nodo de datos o no (retener datos)
bootsrap.memory_lock: deshabilita el intercambio. Puede iniciar el clúster sin configurar este indicador. Pero se recomienda configurar el bloqueo.Más información: https://www.elastic.co/guide/en/elasticsearch/reference/master/setup-configuration-memory.html
network.host: 0.0.0.0 si desea exponer la instancia de ES a través de la red. 0.0.0.0 es diferente de 127.0.0.1 (también conocido como localhost o dirección de loopback). Significa todas las direcciones IPv4 en la máquina. Si la máquina tiene varias direcciones IP con un servidor escuchando en 0.0.0.0, el cliente puede llegar a la máquina desde cualquiera de las direcciones IPv4.
http.port: puerto en el que esta instancia de ES escuchará las solicitudes HTTP
transport.host: la dirección IPv4 del host (se utilizará para comunicarse con otras instancias de ES que se ejecutan en diferentes máquinas). Más información: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-transport.html
transport.tcp.port: 9300 (el puerto donde la máquina aceptará las conexiones tcp)
discovery.seed_hosts: esto fue cambiado en versiones recientes. Inicialice todas las direcciones IPv4 con el puerto TCP (importante) de las instancias ES que van a formar parte de este clúster. Esto será igual en todas las instancias de ES que forman parte de este clúster.
cluster.initial_master_nodes: nombres de nodo (node.name) de las máquinas ES que van a participar en la elección maestra. (Toma de decisiones basada en quórum: - https://www.elastic.co/guide/en/elasticsearch/reference/current /modules-discovery-quorums.html#modules-discovery-quorums )
fuente