Apache Kafka

O Apache Kafka é uma plataforma distribuída de streaming de dados que pode publicar, inscrever-se, armazenar e processar fluxos de registros em tempo real. Ele foi projetado para lidar com fluxos de dados de várias fontes e entregá-los a vários consumidores. Este aplicativo configura automaticamente um cluster Kafka de um único nó, para que você possa gastar menos tempo configurando-o e mais tempo desenvolvendo o software que o utiliza.

Observação: Este aplicativo não deve ser usado em ambientes de produção. Como consiste em um cluster de um único nó, ele não oferece alta disponibilidade, escalabilidade ou qualquer forma de prevenção de perda de dados. Este aplicativo serve para fornecer uma maneira fácil de começar em ambientes de desenvolvimento.

Software Incluído

Apache Kafka - 3.5.0

OpenJDK - 11

Primeiros passos após implantar o APACHE KAFKA

Permita as portas no firewall apenas para SSH (porta 22, com limite de taxa) e Apache Kafka (porta 9093). Conforme Como criar Regras de Firewall.

Você será desconectado da instância e verá a mensagem abaixo até que a instância seja implantada. NÃO FAÇA LOGIN NA INSTÂNCIA POR 2 MINUTOS APÓS A CRIAÇÃO.

Please wait until the installation is completed....Connection to $IPADDRESS closed.

Depois que o APACHE KAFKA for implantado:

Você pode fazer login na instância como "ubuntu" usando a senha que você definiu ao criar a instância ou com uma chave SSH, caso tenha adicionado uma durante a criação.

Em seguida, você pode alternar para o usuário "root" sem precisar digitar uma senha, inserindo o seguinte comando:

sudo su

As credenciais de login do usuário do shell do Kafka são armazenadas em /root/.shell_user_passwords.

Antes de começar, substitua o IP privado nos seguintes arquivos pelo IP público da instância:

/opt/kafka/ssl/example.librdkafka.config

bootstrap.servers=$PRIVATE_IPADDRESS:9093

/opt/kafka/config/server.properties

advertised.listeners=INTERNAL_PLAINTEXT://127.0.0.1:9092,PUBLIC_SSL://$PRIVATE_IPADDRESS:9093

Reinicie os serviços usando o comando abaixo para aplicar as alterações:

systemctl restart kafka.service zookeeper.service

Seu servidor Kafka está configurado com dois listeners:

127.0.0.1:9092 - PLAINTEXT e sem autenticação necessária

0.0.0.0:9093 - TLS/SSL usando um certificado autoassinado e autenticação SCRAM-SHA-256

As conexões PLAINTEXT são uma maneira fácil de começar, mas transmitir dados em PLAINTEXT, especialmente credenciais de login, pela internet pública deixa suas informações vulneráveis. Por motivos de segurança, as conexões PLAINTEXT só podem ser estabelecidas de dentro do servidor:

  1. Conecte-se à sua instância usando SSH e alterne para root
  2. Crie um tópico
/opt/kafka/bin/kafka-topics.sh \
  --create \
  --topic quickstart \
  --bootstrap-server localhost:9092

       3. Produza seu primeiro evento echo

echo 'Hello, CloudPortal!' | /opt/kafka/bin/kafka-console-producer.sh \
  --topic quickstart \
  --bootstrap-server localhost:9092

       4. Consuma o Evento

/opt/kafka/bin/kafka-console-consumer.sh \
  --from-beginning \
  --max-messages 1 \
  --topic quickstart \
  --bootstrap-server localhost:9092

A configuração para esse broker do Kafka pode ser encontrada em /opt/kafka/config/server.properties.

O certificado da autoridade de certificação (CA) do servidor é autoassinado. O certificado da CA deve ser explicitamente confiável pelo cliente para verificar corretamente a identidade do servidor.

       1. Copie a configuração de exemplo e o certificado raiz da CA da sua nova instância para sua máquina local

scp root@$IPADDRESS:'/opt/kafka/ssl/{ca.crt,example.librdkafka.config}' .

       2. Instale o kafkacat na sua máquina local com base no sistema operacional. O comando abaixo é usado no Ubuntu

apt install kafkacat -y

       3. Produza uma mensagem

echo 'Hello, CloudPortal TLS!' | kafkacat -P -b $IPADDRESS:9093 \
  -F ./example.librdkafka.config \
  -X ssl.ca.location=./ca.crt \
  -t quickstart

       4. Consuma a mensagem

kafkacat -C -b $IPADDRESS:9093 \
  -F ./example.librdkafka.config \
  -X ssl.ca.location=./ca.crt \
  -t quickstart

Saia do consumidor pressionando Ctrl+C.

O diretório /opt/kafka/ssl contém o seguinte:

FileContents
.keystore_passwordPassword for Java KeyStores in this directory
ca.crtSelf-signed CA root certificate
ca.keySelf-signed CA root certificate
example.librdkafka.configClient authentication configuration
kafka.crtKafka server certificate signed by CA
kafka.keystore.jksJava KeyStore Containing ca.crt and kafka.crt