Como Configurar Seu Primeiro Cluster Elasticsearch para Desenvolvimento

Aprenda os passos essenciais para implantar e configurar rapidamente um cluster Elasticsearch básico de nó único ou multi-nó, adaptado para desenvolvimento local. Este guia abrange o download de binários, a configuração do `elasticsearch.yml` para desabilitar a segurança para testes, a inicialização de nós e a verificação da saúde do cluster usando ferramentas simples de linha de comando.

40 visualizações

Como Configurar Seu Primeiro Cluster Elasticsearch para Desenvolvimento

Começar com o Elasticsearch pode parecer assustador devido à sua natureza distribuída, mas configurar um cluster básico para desenvolvimento local é simples. Este guia o guiará pelas etapas essenciais necessárias para implantar e configurar rapidamente um cluster Elasticsearch funcional, quer você opte por uma configuração simples de nó único ou um ambiente de múltiplos nós mais representativo. Compreender esta configuração inicial é crucial para indexar, consultar e explorar seus dados de forma integrada, utilizando os poderosos recursos de busca e análise do Elasticsearch.

Focaremos nos aspectos centrais de configuração necessários para um ambiente de desenvolvimento, garantindo que você tenha uma base sólida antes de passar para considerações de produção.

Pré-requisitos

Antes de começar, certifique-se de que os seguintes pré-requisitos foram atendidos:

  1. Java Development Kit (JDK): O Elasticsearch requer um JDK compatível instalado em seu sistema. Versões do Elasticsearch 7.x e posteriores geralmente exigem JDK 11 ou posterior.
  2. Baixar Elasticsearch: Obtenha a distribuição binária da versão desejada do Elasticsearch no site oficial da Elastic.
  3. Recursos do Sistema: Para testes básicos de desenvolvimento, 2GB de RAM são geralmente suficientes, embora mais seja recomendado para testes com múltiplos nós.

Etapa 1: Baixando e Extraindo o Elasticsearch

Após o download (geralmente como um arquivo .zip ou .tar.gz), extraia o arquivo para um diretório onde você deseja hospedar os arquivos do seu cluster (por exemplo, ~/elasticsearch-8.12.0). Este diretório é referido como o Diretório Raiz do Elasticsearch.

Etapa 2: Configurando um Cluster de Nó Único (Padrão de Desenvolvimento)

Por padrão, quando você executa o Elasticsearch pela primeira vez, ele tenta iniciar como um cluster de nó único. No entanto, versões modernas frequentemente exigem configuração explícita, especialmente em relação à segurança e configurações de memória, mesmo para desenvolvimento local.

Os arquivos de configuração estão localizados no diretório config/ dentro do seu Diretório Raiz do Elasticsearch.

Configuração Essencial (config/elasticsearch.yml)

O arquivo de configuração principal é o elasticsearch.yml. Para uma configuração local de nó único, você deve configurar pelo menos o nome do cluster e o nome do nó.

# Configuração do cluster
cluster.name: dev-cluster

# Configuração do nó
node.name: node-1

# Configurações de rede (Use localhost para desenvolvimento)
network.host: 127.0.0.1

# Porta HTTP (O padrão é 9200)
http.port: 9200

# Importante para desenvolvimento: Desabilite a segurança inicialmente (Use com cautela em produção!)
xpack.security.enabled: false

Aviso sobre Segurança: Desabilitar xpack.security.enabled é comum para configuração inicial de desenvolvimento para simplificar os testes. Nunca execute esta configuração em um ambiente acessível publicamente. Para versões modernas do Elasticsearch (7.x+), você frequentemente precisará executar comandos de configuração primeiro para gerar senhas iniciais se a segurança permanecer habilitada.

Iniciando o Nó Único

Navegue até a raiz do seu diretório extraído e execute o script de inicialização apropriado. No Linux/macOS:

./bin/elasticsearch

No Windows (usando PowerShell):

.in\elasticsearch.bat

Espere os logs indicarem que o nó foi iniciado com sucesso, geralmente mostrando uma mensagem como started.

Etapa 3: Verificando o Status do Cluster

Uma vez que o processo esteja em execução, você pode verificar o status do cluster usando curl na porta HTTP padrão (9200).

Verificando a Saúde do Cluster

Este comando verifica a saúde geral do cluster:

curl -X GET "http://localhost:9200/_cat/health?v"

Trecho de Saída Esperada:

epoch      timestamp cluster     status node.total node.data shards prio initialized
1678886400 10:00:00  dev-cluster green    1          1        0   0           1

O campo status deve ser green, indicando um cluster de nó único saudável.

Verificando Informações do Nó

Você também pode verificar as informações do nó:

curl -X GET "http://localhost:9200/_cat/nodes?v"

Etapa 4: Configurando um Cluster de Múltiplos Nós (Para Testes Realistas)

Para desenvolvimento ou testes mais realistas de alocação de shards, você precisa de pelo menos dois nós. Isso requer a execução de múltiplas instâncias separadas do Elasticsearch, cada uma com configurações distintas.

Estrutura de Diretórios

Crie diretórios separados para cada nó dentro da sua área de trabalho principal (por exemplo, es_data/node1, es_data/node2). Copie a distribuição base do Elasticsearch para cada um desses diretórios, ou crie links para a instalação principal.

Diferenças de Configuração do Nó

Para cada nó, crie um arquivo config/elasticsearch.yml exclusivo:

Configuração do Nó 1 (es_data/node1/config/elasticsearch.yml)

cluster.name: dev-cluster
node.name: node-1
network.host: 127.0.0.1
http.port: 9200
path.data: node1_data  # Caminho de dados exclusivo
xpack.security.enabled: false
# Esta linha diz ao nó 1 como encontrar outros membros
cluster.initial_master_nodes: ["node-1", "node-2"]

Configuração do Nó 2 (es_data/node2/config/elasticsearch.yml)

cluster.name: dev-cluster
node.name: node-2
network.host: 127.0.0.1
http.port: 9201  # Deve usar uma porta HTTP diferente
path.data: node2_data  # Caminho de dados exclusivo
xpack.security.enabled: false
# Esta linha diz ao nó 2 como encontrar outros membros
cluster.initial_master_nodes: ["node-1", "node-2"]

Iniciando o Cluster de Múltiplos Nós

  1. Inicie o Nó 1: Navegue até es_data/node1 e execute ./bin/elasticsearch.
  2. Inicie o Nó 2: Navegue até es_data/node2 e execute ./bin/elasticsearch.

Verificando o Cluster de Múltiplos Nós

Verifique a contagem de nós usando a API contra qualquer porta HTTP em execução (por exemplo, 9200):

curl -X GET "http://localhost:9200/_cat/nodes?v"

Trecho de Saída Esperada:

ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1    15           50       0   0.01    0.02    0.01    mdi        *      node-1
127.0.0.1    16           51       0   0.00    0.01    0.01    mdi        -      node-2

Se você vir duas entradas em name, seu cluster de múltiplos nós está corretamente formado.

Melhores Práticas para Ambientes de Desenvolvimento

  • Use Caminhos de Dados Dedicados: Sempre configure path.data explicitamente para cada nó, especialmente em configurações de múltiplos nós, para evitar contaminação acidental de dados entre instâncias.
  • Portas Efêmeras: Use portas HTTP exclusivas (http.port) para cada nó, para que não haja conflitos ao executar localmente.
  • Bloqueio de Memória: Para desenvolvimento, certifique-se de não estar encontrando limitações de tamanho de heap. Se você encontrar erros de inicialização relacionados à memória, talvez precise ajustar o tamanho do heap da JVM no arquivo jvm.options (embora os padrões geralmente sejam suficientes para testes básicos).

Próximos Passos: Indexando Dados

Com seu cluster em execução, o próximo passo lógico é criar um índice e mapear configurações. Por exemplo, para criar um índice simples chamado products:

curl -X PUT "http://localhost:9200/products?pretty"

Esta configuração fundamental permite que você comece a interagir com o Elasticsearch usando bibliotecas cliente ou Kibana.