Guia de tecnologias

Instalar Apache ZooKeeper no Ubuntu 18.04

7 min read DevOps Atualizado 18 Oct 2025
Instalar Apache ZooKeeper no Ubuntu 18.04
Instalar Apache ZooKeeper no Ubuntu 18.04

Diagrama conceitual do Apache ZooKeeper

O Apache ZooKeeper é um serviço centralizado de código aberto para gerenciar informações de configuração, nomeação, sincronização distribuída e provisão de serviços de grupo. Escrito em Java, ZooKeeper permite que você foque na lógica da aplicação sem se preocupar com detalhes de distribuição. A arquitetura do ZooKeeper oferece alta disponibilidade por meio de serviços redundantes. Ele expõe um namespace hierárquico comum para coordenar processos distribuídos e fornece alto débito, baixa latência e controle de acesso aos znodes. ZooKeeper é ideal para armazenar estado, configurações, informações de localização e outros metadados necessários para aplicações distribuídas.

Neste tutorial vamos configurar um cluster ZooKeeper de nó único no Ubuntu 18.04. Este é um ambiente de teste/validação; para produção consulte a seção sobre clusters multi-nó e práticas de segurança abaixo.

O que você vai precisar

  • Um servidor com Ubuntu 18.04 em execução
  • Acesso root ou um usuário com privilégios sudo
  • Conexão à internet para baixar pacotes

Breve explicação técnica

ZooKeeper mantém um conjunto de dados leve e consistente em memória e persiste mudanças em disco. Os clientes se conectam via porta 2181 (por padrão) e interagem com nós chamados znodes. Em produção, ZooKeeper é executado em quorum (múltiplos nós) para tolerância a falhas; aqui veremos um nó único para fins de teste.

Termos chave

  • znode: nó de dados no namespace hierárquico do ZooKeeper
  • tickTime: unidade de tempo usada pelo ZooKeeper para heartbeats
  • quorum: conjunto de nós que formam o serviço em modo distribuído

Recomendação inicial

Important: usar um nó único é aceitável apenas para testes, desenvolvimento ou validação. Em produção use ao menos 3 nós em quorum para tolerância a falhas.

Atualizar o sistema

Primeiro atualize o sistema para as últimas versões dos pacotes:

apt-get update -y  
apt-get upgrade -y

Depois de concluir a atualização, é recomendável reiniciar o servidor para aplicar alterações de kernel e serviços, se necessário.

Instalar Java

ZooKeeper é escrito em Java, portanto o servidor precisa ter o JRE/JDK instalado. No Ubuntu 18.04 a versão Oracle pode não estar nos repositórios oficiais, então o exemplo original adiciona um PPA e instala o pacote oracle-java11-set-default.

Adicionar PPA:

add-apt-repository ppa:linuxuprising/java

Atualizar e instalar Java 11:

apt-get update -y  
apt-get install oracle-java11-set-default

Verificar a versão do Java:

java --version

Exemplo de saída esperada:

java 11.0.2 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+7-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+7-LTS, mixed mode)

Nota: se preferir OpenJDK, troque o pacote por openjdk-11-jre-headless e adapte conforme política da sua organização.

Criar usuário dedicado para ZooKeeper

É boa prática executar serviços com um usuário pouco privilegiado.

Criar usuário e definir shell:

useradd zookeeper -m  
usermod --shell /bin/bash zookeeper

Definir senha:

passwd zookeeper

Adicionar ao grupo sudo se você precisar de acesso administrativo para o usuário:

usermod -aG sudo zookeeper

Com o usuário criado, prossiga para instalar o ZooKeeper.

Instalar ZooKeeper

ZooKeeper precisa persistir dados de estado em disco, portanto criaremos um diretório apropriado e ajustaremos permissões.

Criar diretório de dados:

mkdir -p /data/zookeeper

Conceder propriedade ao usuário zookeeper:

chown -R zookeeper:zookeeper /data/zookeeper

Baixar e instalar o ZooKeeper no diretório /opt. O tutorial original utiliza a versão 3.4.9 do arquivo de arquivamento oficial.

cd /opt  
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

Extrair e renomear:

tar -xvzf zookeeper-3.4.9.tar.gz
mv zookeeper-3.4.9 zookeeper

Ajustar propriedade:

chown -R zookeeper:zookeeper /opt/zookeeper

Observação: versões mais recentes do ZooKeeper existem; verifique compatibilidade com sua aplicação antes de atualizar.

Configurar ZooKeeper

Crie o arquivo de configuração principal:

nano /opt/zookeeper/conf/zoo.cfg

Adicione as linhas básicas necessárias para um nó único:

tickTime=2500
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=80

Salve e feche o arquivo.

Iniciando o servidor ZooKeeper manualmente

Inicie o serviço diretamente a partir do diretório de instalação:

cd /opt/zookeeper  
bin/zkServer.sh start

Saída esperada:

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

Conectar-se ao servidor local com o cliente de linha de comando:

bin/zkCli.sh -server 127.0.0.1:2181

Ao conectar, você verá o prompt do cliente:

[zk: 127.0.0.1:2181(CONNECTED) 1]

Digite help no prompt para listar os comandos disponíveis, por exemplo create, get, set, ls.

Comandos úteis no cliente:

help
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    get path [watch]
    create [-s] [-e] path data acl
    quit

Para sair, digite quit.

Parar o ZooKeeper manualmente:

bin/zkServer.sh stop

Saída esperada:

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

Criar unidade systemd para ZooKeeper

Gerenciar o serviço via systemd facilita inicialização automática e monitoramento.

Criar arquivo de unidade:

nano /etc/systemd/system/zookeeper.service

Adicionar o conteúdo abaixo:

[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target

[Service]    
Type=forking
WorkingDirectory=/opt/zookeeper
User=zookeeper
Group=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure

[Install]
WantedBy=default.target

Salvar e fechar o arquivo. Em seguida recarregue o daemon systemd e habilite o serviço:

systemctl daemon-reload
systemctl start zookeeper  
systemctl enable zookeeper

Verificar status:

systemctl status zookeeper

Exemplo de saída esperada indicando que o serviço está ativo e em execução.

Checagens rápidas

  • Verifique se a porta 2181 está escutando: sudo ss -ltnp | grep 2181
  • Verifique logs em /opt/zookeeper/logs ou conforme configurado
  • Verifique permissões do diretório /data/zookeeper

Guia de troubleshooting comum

  • Problema: ZooKeeper não inicia

    • Verifique logs para erros de Java ou permissão
    • Confirme que java –version funciona para o usuário zookeeper
    • Confirme que dataDir existe e pertence ao usuário zookeeper
  • Problema: cliente não conecta

    • Confirme que firewall permite porta 2181
    • Verifique se o serviço está escutando na interface esperada
  • Problema: arquivo zoo.cfg mal formado

    • Erros de sintaxe no arquivo podem impedir a inicialização; valide que não existam linhas em branco com espaços estranhos

Segurança e práticas recomendadas

  • Não exponha a porta 2181 na Internet. Use redes privadas ou VPNs.
  • Configure regras de firewall (ufw/iptables) para limitar acesso a hosts confiáveis.
  • Habilite autenticação e ACLs em ambientes multi-cliente.
  • Monitore SLI/SLO básicos: disponibilidade do serviço e latência de operações críticas.

Escalando para multi-nó (breve)

Para produção, crie um cluster com número ímpar de nós (3, 5, …). Em cada nó, além de zoo.cfg, você precisa adicionar linhas server.N=host:peerPort:leaderPort e um arquivo myid no dataDir contendo o id do nó.

Exemplo de entradas no zoo.cfg para um cluster de 3 nós:

server.1=zk1.example.com:2888:3888
server.2=zk2.example.com:2888:3888
server.3=zk3.example.com:2888:3888

Em /data/zookeeper/myid coloque apenas o número do servidor (por exemplo 1). Reinicie os nós para formar o quorum.

Checklist para migrar de nó único para produção

  • Planejar topologia com mínimo 3 nós
  • Fazer backups do dataDir antes de qualquer mudança
  • Sincronizar versões do ZooKeeper e Java entre nós
  • Configurar monitoring e alerting (logs, métricas, disponibilidade)
  • Testar falhas simuladas para validar failover

Cheatsheet de comandos úteis

  • Iniciar: systemctl start zookeeper
  • Parar: systemctl stop zookeeper
  • Reiniciar: systemctl restart zookeeper
  • Status: systemctl status zookeeper
  • Cliente: /opt/zookeeper/bin/zkCli.sh -server HOST:2181
  • Logs: verificar /opt/zookeeper/logs ou pasta de logs configurada

Modelos e decisões rápidas

Se o objetivo é desenvolvimento local ou CI, um nó único pode ser suficiente. Para produção com requisitos de alta disponibilidade, sempre usar quorum e separar dados/partições de disco com IOPS adequados.

Pequeno glossário

  • znode: item de dados no namespace do ZooKeeper
  • quorum: conjunto mínimo de nós que concordam sobre o estado
  • tickTime: tempo base do heartbeat

Perguntas frequentes rápidas

  • Posso usar OpenJDK? Sim. Use uma versão compatível suportada por sua aplicação.
  • Posso atualizar para ZooKeeper 3.5+ sem mudanças? Verifique notas de versão; 3.5 introduziu mudanças em configuração e SSL.

Conclusão

Você instalou e configurou com sucesso um servidor Apache ZooKeeper de nó único no Ubuntu 18.04. Para produção, converta este ambiente em um cluster multi-nó com quorum, reforce segurança e implemente monitoramento. Se precisar de ajuda para configurar um cluster de 3 nós, ajustar ACLs ou integrar com sua aplicação, pergunte quais são seus requisitos e posso orientar os próximos passos.

Критерии приёмки

  • ZooKeeper em execução e respondendo na porta 2181
  • Sistemad gerencia o serviço e inicia automaticamente
  • Diretório de dados acessível pelo usuário zookeeper

Resumo

  • ZooKeeper foi instalado em /opt/zookeeper e configurado para usar /data/zookeeper
  • Serviço gerenciado via systemd com unidade customizada
  • Notas incluídas sobre segurança, scaling e troubleshooting

Important: este guia usa ZooKeeper 3.4.9 como exemplo. Antes de usar em produção, avalie versões mais recentes e aplique políticas de segurança e alta disponibilidade.

Autor
Edição

Materiais semelhantes

Abrir Steps Recorder no Windows 11
Guias

Abrir Steps Recorder no Windows 11

Como agendar corridas no Uber
Mobilidade

Como agendar corridas no Uber

Corrigir: Field 'browser' alias inválido
Desenvolvimento

Corrigir: Field 'browser' alias inválido

Recuperar dados de pendrive USB grátis
Recuperação de Dados

Recuperar dados de pendrive USB grátis

2FA no OpenVPN AS com WiKID
Segurança VPN

2FA no OpenVPN AS com WiKID

Listas de verificação no app Notas: iOS, OS X e iCloud
Tutoriais

Listas de verificação no app Notas: iOS, OS X e iCloud