A instalação e configuração do Elasticsearch em sistemas operacionais baseados em Linux requerem uma série de passos, desde a preparação do ambiente até os ajustes finos dos parâmetros do serviço. É fundamental que o Java Development Kit (JDK) versão 8 ou supeiror esteja previamente instalado e configurado no sistema para que o Elasticsearch funcione corretamente.
Obtenção do Software Elasticsearch
O primeiro passo é adquirir o pacote binário do Elasticsearch. Recomenda-se baixar a versão mais recente diretamente do portal oficial da Elastic. Para este guia, consideraremos um arquivo .tar.gz, como elasticsearch-7.x.x-linux-x86_64.tar.gz, que será descompactado no sistema.
Processo de Instalação e Configuração Inicial
1. Descompactação do Pacote
Após transferir o arquivo .tar.gz para o seu servidor Linux, utilize o comando tar para extrair seu conteúdo para um diretório apropriado, como /opt/. O uso de /opt/ é uma prática comum para software de terceiros:
sudo tar -zxvf elasticsearch-7.x.x-linux-x86_64.tar.gz -C /opt/
Para simplificar o gerenciamento e evitar o versionamento no caminho, renomeie o diretório descompactado:
sudo mv /opt/elasticsearch-7.x.x /opt/elasticsearch
2. Criação de Usuário Dedicado
Para garantir a segurança e a estabilidade do sistema, o Elasticsearch não deve ser executado com privilégios de root. Crie um usuário de sistema específico para o Elasticsearch:
sudo useradd es_user
sudo passwd es_user
Você será solicitado a definir e confirmar uma senha para o novo usuário es_user.
3. Atribuição de Permissões de Diretório
Conceda ao usuário es_user as permissões de acesso e modificação necessárias sobre o diretório de instalação do Elasticsearch:
sudo chown -R es_user:es_user /opt/elasticsearch
4. Alternando para o Usuário do Elasticsearch
Mude para o usuário es_user para prosseguir com as etapas de configuração e inicialização do serviço. Todos os comandos subsequentes para o Elasticsearch devem ser executados sob este usuário:
su - es_user
5. Início Rápido do Elasticsearch (Modo Foreground)
Para uma verificação inicial e rápida do funcionamento, você pode iniciar o Elasticsearch em primeiro plano, utilizando as configurações padrão. Isso exibirá os logs diretamente no terminal:
/opt/elasticsearch/bin/elasticsearch
Para parar o serviço neste modo, pressione Ctrl+C.
6. Confirmação de Operação
Enquanto o Elasticsearch estiver rodando (em um terminal separado, se estiver em primeiro plano), abra uma nova sessão de terminal e execute o seguinte comando para confirmar que o serviço está acessível:
curl -X GET 'http://localhost:9200'
Uma resposta em formato JSON, contendo informações sobre a versão do Elasticsearch e o cluster, indicará que o serviço está funcionando corretamente.
Configuração Detalhada do Elasticsearch
Para uma implantação em ambiente de produção, é essencial personalizar as configurações do Elasticsearch. O arquivo de configuração principle é elasticsearch.yml, localizado no diretório /opt/elasticsearch/config/.
1. Edição de elasticsearch.yml
Acesse o diretório de configuração como es_user e edite o arquivo elasticsearch.yml:
cd /opt/elasticsearch/config
vim elasticsearch.yml
Ajuste as seguintes propriedades conforme necessário. As linhas comentadas (#) no arquivo original fornecem contexto útil:
# Nome do cluster para identificação
cluster.name: meu_cluster_producao
# Nome único para este nó
node.name: no_servidor_alpha
# Caminhos para armazenar dados e logs do Elasticsearch.
# Assegure-se de que estes diretórios existam e que 'es_user' tenha permissão de escrita.
path.data: /home/es_user/dados/elastic_data
path.logs: /home/es_user/logs/elastic_logs
# Configurações de rede
# network.host: 0.0.0.0 permite que o Elasticsearch seja acessível de qualquer interface de rede.
# Em produção, considere restringir isso a IPs específicos e usar um firewall.
network.host: 0.0.0.0
http.port: 9200
# Lista inicial de nós mestres elegíveis para descoberta de cluster.
# Isso ajuda na formação do cluster ao iniciar.
cluster.initial_master_nodes: ["no_servidor_alpha"]
# Habilitação de CORS (Cross-Origin Resource Sharing) para acesso de aplicações web.
# O uso de "*" permite acesso de qualquer origem, o que pode ser inseguro em produção.
http.cors.enabled: true
http.cors.allow-origin: "*"
# Definição dos papéis deste nó no cluster.
node.master: true
node.data: true
Crie os diretórios de dados e logs especificados e atribua as permissões corretas ao es_user:
mkdir -p /home/es_user/dados/elastic_data
mkdir -p /home/es_user/logs/elastic_logs
2. Otimização dos Parâmetros JVM
Os parâmetros de memória da Java Virtual Machine (JVM) para o Elasticsearch são configurados no arquivo jvm.options, localizado em /opt/elasticsearch/config/. É uma prática recomendada alocar aproximadamente metade da memória RAM disponível do sistema para o Elasticsearch, mas nunca excedendo 30GB e sempre deixando memória suficiente para o sistema operacional e o cache de disco.
Para um exemplo de redução de memória em ambientes de desenvolvimento ou com recursos limitados:
# Edite /opt/elasticsearch/config/jvm.options
# Altere as configurações de -Xms e -Xmx para valores como 512m ou 1g,
# dependendo da sua RAM disponível.
-Xms512m
-Xmx512m
3. Ajustes de Limites do Sistema Operacional
O Elasticsearch exige que alguns limites do sistema operacional sejam ajustados para garantir sua operação eficiente e evitar erros. Saia do usuário es_user e volte para root para realizar essas modificações:
exit
sudo vim /etc/security/limits.conf
Adicione as seguintes linhas ao final do arquivo /etc/security/limits.conf, substituindo es_user pelo nome do seu usuário dedicado:
es_user - nofile 65536
es_user - nproc 4096
Além disso, é necessário aumentar o limite de vm.max_map_count. Edite o arquivo /etc/sysctl.conf:
sudo vim /etc/sysctl.conf
Adicione ou modifique a seguinte linha:
vm.max_map_count = 262144
Após salvar /etc/sysctl.conf, aplique as novas configurações imediatamente:
sudo sysctl -p
Iniciando o Serviço Elasticsearch em Segundo Plano
Com todas as configurações aplicadas, inicie o Elasticsearch como um processo em segundo plano (daemon) sob o usuário es_user:
su - es_user
/opt/elasticsearch/bin/elasticsearch -d
Para verificar se o processo do Elasticsearch está ativo, você pode usar o comando jps (se o JDK estiver configurado corretamente e o usuário tiver permissão para executá-lo) ou ps aux | grep elasticsearch:
jps
A presença de um processo Java que inclui "Elasticsearch" na listagem indica que o serviço foi iniciado com sucesso.