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:
- Conecte-se à sua instância usando SSH e alterne para root
- 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:
File | Contents |
---|---|
.keystore_password | Password for Java KeyStores in this directory |
ca.crt | Self-signed CA root certificate |
ca.key | Self-signed CA root certificate |
example.librdkafka.config | Client authentication configuration |
kafka.crt | Kafka server certificate signed by CA |
kafka.keystore.jks | Java KeyStore Containing ca.crt and kafka.crt |