Entrar ou criar conta

ULC Lab · implementação reproduzível

Laboratório: Pipeline Kafka com Integração PostgreSQL

Você implementará um pipeline de dados real-time usando Apache Kafka, integrando um produtor, um consumidor e uma base PostgreSQL. O laboratório leva cerca de 2 horas e meia.

Apache Kafka do zero à integração
Ligado ao treinamento Apache Kafka do zero à integração
ULC-LAB-DADO-0002 · Status de validaçãoNão validado pela Upnetix: roteiro derivado da documentação oficial, para você executar e validar
Duração estimada
150 min
Passos
14
Validações
4
Versões da documentação consultada
Apache Kafka 3.6.0 · Apache ZooKeeper 3.8.3 · PostgreSQL 15 · Kafka Connect JDBC consulte a documentação · OpenJDK 17
Objetivo

Este laboratório ensina como instalar e operar um cluster Kafka de nó único, criar tópicos, enviar e consumir mensagens, e integrar com um banco PostgreSQL usando Kafka Connect. O objetivo é demonstrar, em ambiente controlado, como dados podem fluir de uma aplicação para um banco via Kafka, simulando cenários comuns em redes de fibra dedicadas como a da Upnetix.

Topologia

Três máquinas virtuais (ou três containers): uma para o Kafka e ZooKeeper, uma para o PostgreSQL, e uma para o produtor/consumidor de mensagens. O produtor envia dados para o Kafka, que repassa ao consumidor e ao PostgreSQL via Kafka Connect. Endereços de exemplo: Kafka/ZooKeeper (192.168.56.10), PostgreSQL (192.168.56.11), Cliente (192.168.56.12).


+----------------+       +-----------+       +----------------+
|  Produtor CLI  |-----> |   Kafka   |-----> |   Consumidor   |
| (192.168.56.12)|       |(192.168.56.10)|   | (192.168.56.12)|
+----------------+       +-----------+       +----------------+
                               |
                               v
                        +-------------+
                        | PostgreSQL  |
                        |(192.168.56.11)|
                        +-------------+

Equipamentos e software

ItemRequisito, licença ou versão
Máquina virtual para Kafka/ZooKeeper2 vCPU, 2GB RAM, porta 9092 e 2181 abertas, Ubuntu 22.04 ou similar
Máquina virtual para PostgreSQL1 vCPU, 1GB RAM, porta 5432 aberta, Ubuntu 22.04 ou similar
Máquina virtual para cliente1 vCPU, 1GB RAM, Ubuntu 22.04 ou similar
Apache KafkaApache 2.0 · 3.6.0
Apache ZooKeeperApache 2.0 · 3.8.3
PostgreSQLPostgreSQL · 15
Kafka Connect JDBCApache 2.0 · consulte a documentação
OpenJDKGPLv2 + Classpath Exception · 17

Roteiro

  1. Preparar ambiente e hosts

    Configure as três VMs ou containers com os endereços IP privados sugeridos. Garanta conectividade de rede entre elas.

    O que você deve ver: Ping entre as máquinas responde normalmente.

  2. Instalar Java (OpenJDK 17) em todas as VMs

    O Kafka e o Kafka Connect rodam sobre JVM. Instale o OpenJDK 17.

    sudo apt update && sudo apt install openjdk-17-jdk -y

    O que você deve ver: java -version retorna versão 17.

  3. Instalar e configurar ZooKeeper

    O Kafka depende do ZooKeeper para coordenação. Instale e inicie o serviço.

    sudo apt install zookeeperd -y
    sudo systemctl enable --now zookeeper

    O que você deve ver: systemctl status zookeeper mostra o serviço ativo.

  4. Instalar Apache Kafka

    Baixe e extraia o Kafka na VM designada. Não use pacotes do sistema, prefira o binário oficial.

    wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz
    tar -xzf kafka_2.13-3.6.0.tgz
    cd kafka_2.13-3.6.0

    O que você deve ver: Diretório kafka_2.13-3.6.0 criado com binários.

  5. Configurar e iniciar o Kafka

    Edite o server.properties para ajustar o listeners ao IP da VM. Inicie o Kafka apontando para o ZooKeeper.

    nano config/server.properties
    # Altere listeners=PLAINTEXT://192.168.56.10:9092
    bin/kafka-server-start.sh -daemon config/server.properties

    O que você deve ver: netstat -tulnp | grep 9092 mostra o Kafka ouvindo.

  6. Instalar PostgreSQL e criar banco/tabela

    No host do PostgreSQL, instale o banco e crie um banco de testes e tabela para ingestão.

    sudo apt install postgresql -y
    sudo -u postgres psql -c "CREATE DATABASE kafkatest;"
    sudo -u postgres psql -d kafkatest -c "CREATE TABLE messages (id SERIAL PRIMARY KEY, content TEXT);"

    O que você deve ver: \dt no psql mostra a tabela messages.

  7. Testar conexão do Kafka com PostgreSQL

    Garanta que a porta 5432 está acessível do host Kafka.

    psql -h 192.168.56.11 -U postgres -d kafkatest

    O que você deve ver: Conexão estabelecida sem erro.

  8. Instalar Kafka Connect e plugin JDBC

    Kafka Connect permite integração com bancos. Baixe o conector JDBC e extraia em plugins.

    cd kafka_2.13-3.6.0
    mkdir plugins
    # Baixe o JDBC Connector (consulte a documentação para a versão):
    wget https://packages.confluent.io/maven/io/confluent/kafka-connect-jdbc/ # complete o link conforme a versão
    unzip kafka-connect-jdbc-*.zip -d plugins/

    O que você deve ver: plugins/kafka-connect-jdbc-* criado com arquivos .jar.

  9. Iniciar Kafka Connect

    Inicie o Kafka Connect standalone apontando para o plugin JDBC.

    bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties

    O que você deve ver: Kafka Connect inicializa e aguarda jobs.

  10. Criar tópico Kafka

    Crie um tópico chamado test-messages para o pipeline.

    bin/kafka-topics.sh --create --topic test-messages --bootstrap-server 192.168.56.10:9092 --partitions 1 --replication-factor 1

    O que você deve ver: Mensagem de sucesso de criação do tópico.

  11. Configurar Kafka Connect Sink para PostgreSQL

    Crie um arquivo JSON de configuração para o conector JDBC apontando para o PostgreSQL.

    nano jdbc-sink.json
    # Exemplo básico:
    {
      "name": "jdbc-sink",
      "config": {
        "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
        "tasks.max": "1",
        "topics": "test-messages",
        "connection.url": "jdbc:postgresql://192.168.56.11:5432/kafkatest",
        "connection.user": "postgres",
        "connection.password": "<senha>",
        "auto.create": "true",
        "insert.mode": "insert",
        "table.name.format": "messages"
      }
    }
    curl -X POST -H "Content-Type: application/json" --data @jdbc-sink.json http://localhost:8083/connectors

    O que você deve ver: Retorno JSON com status do conector.

  12. Produzir mensagens via CLI

    No host cliente, envie mensagens para o tópico usando o console producer.

    bin/kafka-console-producer.sh --broker-list 192.168.56.10:9092 --topic test-messages
    > Olá Kafka
    > Mensagem 2

    O que você deve ver: Mensagens aceitas sem erro.

  13. Consumir mensagens via CLI

    No host cliente, consuma mensagens do tópico para validar o fluxo.

    bin/kafka-console-consumer.sh --bootstrap-server 192.168.56.10:9092 --topic test-messages --from-beginning

    O que você deve ver: Mensagens enviadas aparecem no terminal.

  14. Validar ingestão no PostgreSQL

    No PostgreSQL, confira se as mensagens chegaram na tabela.

    sudo -u postgres psql -d kafkatest -c "SELECT * FROM messages;"

    O que você deve ver: Linhas com o conteúdo das mensagens produzidas.

Como saber que funcionou

TesteComandoCritério
Kafka está ouvindo na porta 9092netstat -tulnp | grep 9092Porta 9092 em LISTEN
Tópico criado com sucessobin/kafka-topics.sh --list --bootstrap-server 192.168.56.10:9092test-messages aparece na lista
Produtor envia e consumidor recebe mensagensbin/kafka-console-consumer.sh --bootstrap-server 192.168.56.10:9092 --topic test-messages --from-beginningMensagens digitadas no producer aparecem no consumer
Mensagens gravadas no PostgreSQLsudo -u postgres psql -d kafkatest -c "SELECT * FROM messages;"Mensagens aparecem como linhas na tabela

Troubleshooting

SintomaCausa provávelCorreção
Kafka não iniciaConfiguração do listeners errada ou porta em usoVerifique server.properties e se a porta 9092 está livre
Kafka Connect não encontra plugin JDBCDiretório de plugins não configurado corretamenteConfirme o caminho e permissões dos arquivos .jar
Conector JDBC retorna erro de autenticaçãoUsuário ou senha do PostgreSQL incorretosAjuste as credenciais no arquivo de configuração do conector
Mensagens não aparecem no PostgreSQLConector não está ativo ou tópico erradoVerifique status do conector e nome do tópico
Produtor não conecta ao KafkaFirewall ou listeners incorretosConfirme IP/porta e regras de firewall

Segurança e hardening

  • Não use senhas padrão em produção
  • Restrinja acesso às portas 9092, 2181 e 5432 apenas às máquinas necessárias
  • Remova arquivos de configuração sensíveis após o uso
  • Considere TLS e autenticação SASL para Kafka em ambientes reais

Checklist final

Referências

  1. Apache Kafka Quickstart · Apache Software Foundation (Kafka) (kafka.apache.org)
  2. Kafka Connect JDBC Connector · Confluent (docs.confluent.io)
  3. Apache ZooKeeper Documentation · Apache Software Foundation (ZooKeeper) (zookeeper.apache.org)
Verificação editorial
Publicado
09/09/2026
Última revisão
09/09/2026
Versão do conteúdo
1.0
Referências
3 oficiais
Revisão técnica
redação e revisão por IA, URLs conferidas na publicação
Status
Atual
Encontrou um erro? Escreva para comercial@upnetix.com.br com o endereço da página. A revisão semestral por IA nunca altera comandos ou configurações sem passar pela fila de revisão.