Produzir e consumir mensagens com as ferramentas de linha de comando do Kafka

Saiba como usar as ferramentas de linha de comando do Kafka para se conectar a um cluster do Serviço Gerenciado para Apache Kafka, produzir e consumir mensagens.

Antes de começar

Antes de iniciar este tutorial, crie um cluster do Serviço Gerenciado para Apache Kafka. Se você já tiver um cluster, pule esta etapa.

Como criar um cluster

Console

  1. Acesse a página Serviço Gerenciado para Apache Kafka > Clusters.

    Acessar Clusters

  2. Clique em Criar.
  3. Na caixa Nome do cluster, insira um nome para o cluster.
  4. Na lista Região, selecione um local para o cluster.
  5. Em Configuração de rede, configure a sub-rede em que o cluster está acessível:
    1. Em Projeto, selecione o projeto.
    2. Em Rede, selecione a rede VPC.
    3. Em Sub-rede, selecione a sub-rede.
    4. Clique em Concluído.
  6. Clique em Criar.

Depois de clicar em Criar, o estado do cluster será Creating. Quando o cluster estiver pronto, o estado será Active.

gcloud

Para criar um cluster do Kafka, execute o managed-kafka clusters create comando.

gcloud managed-kafka clusters create KAFKA_CLUSTER \
--location=REGION \
--cpu=3 \
--memory=3GiB \
--subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
--async

Substitua:

  • KAFKA_CLUSTER: um nome para o cluster do Kafka
  • REGION: o local do cluster
  • PROJECT_ID: ID do projeto;
  • SUBNET_NAME: a sub-rede em que você quer criar o cluster, por exemplo, default

Para informações sobre os locais com suporte, consulte Locais do Serviço Gerenciado para Apache Kafka.

O comando é executado de forma assíncrona e retorna um ID de operação:

Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.

Para acompanhar o progresso da operação de criação, use o gcloud managed-kafka operations describe comando:

gcloud managed-kafka operations describe OPERATION_ID \
  --location=REGION

Quando o cluster estiver pronto, a saída desse comando incluirá a entrada state: ACTIVE. Para mais informações, consulte Monitorar a operação de criação do cluster.

Funções exigidas

Para ter as permissões necessárias para criar e configurar uma VM cliente, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando personalizados papéis ou outros predefinidos papéis.

Criar uma VM cliente

Crie uma instância de máquina virtual (VM) do Linux no Compute Engine que possa acessar o cluster do Kafka. Ao configurar a VM, defina as seguintes opções:

  • Região. Crie a VM na mesma região do cluster do Kafka.

  • Sub-rede. Crie a VM na mesma rede VPC que a sub-rede usada na configuração do cluster do Kafka. Para mais informações, consulte Visualizar as sub-redes de um cluster.

  • Escopos de acesso. Atribua o https://www.googleapis.com/auth/cloud-platform escopo de acesso à VM. Esse escopo autoriza a VM a enviar solicitações à API Managed Kafka.

As etapas a seguir mostram como definir essas opções.

Console

  1. No Google Cloud console do, acesse a página Criar uma instância.

    Criar uma instância

  2. No painel Configuração da máquina, faça o seguinte:

    1. No campo Nome, especifique um nome para a instância. Saiba mais em Convenção de nomenclatura de recursos .

    2. Na lista Região, selecione a mesma região do cluster do Kafka.

    3. Na lista Zona, selecione uma zona.

  3. No menu de navegação, clique em Rede. No painel Rede exibido, faça o seguinte:

    1. Acesse a seção Interfaces de rede.

    2. Para expandir a interface de rede padrão, clique na seta.

    3. No campo Rede, escolha a rede VPC.

    4. Na lista Sub-rede, selecione a sub-rede.

    5. Clique em Concluído.

  4. No menu de navegação, clique em Segurança. No painel Segurança exibido, faça o seguinte:

    1. Para Escopos de acesso, selecione Definir acesso para cada API.

    2. Na lista de escopos de acesso, encontre a lista suspensa Cloud Platform e selecione Ativado.

  5. Clique em Criar para criar a VM.

gcloud

Para criar a instância de VM, use o gcloud compute instances create comando.

gcloud compute instances create VM_NAME \
  --scopes=https://www.googleapis.com/auth/cloud-platform \
  --subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET \
  --zone=ZONE

Substitua:

  • VM_NAME: o nome da VM
  • PROJECT_ID: ID do projeto
  • REGION: a região em que você criou o cluster do Kafka, por exemplo us-central1
  • SUBNET: uma sub-rede na mesma rede VPC que a sub-rede usada na configuração do cluster
  • ZONE: uma zona na região em que você criou o cluster, por exemplo us-central1-c

Para mais informações sobre como criar uma VM, consulte Criar uma instância de VM em uma sub-rede específica.

Conceder papéis do IAM

Conceda os seguintes papéis do Identity and Access Management (IAM) à conta de serviço padrão do Compute Engine:

  • Cliente Kafka gerenciado (roles/managedkafka.client)
  • Criador do token da conta de serviço (roles/iam.serviceAccountTokenCreator)
  • Criador do token OpenID da conta de serviço (roles/iam.serviceAccountOpenIdTokenCreator)

Console

  1. No Google Cloud console, acesse a página IAM.

    Acessar IAM

  2. Encontre a linha da conta de serviço padrão do Compute Engine e clique em Editar principal.

  3. Clique em Adicionar outro papel e selecione o papel Cliente Kafka gerenciado. Repita essa etapa para os papéis Criador do token da conta de serviço e Criador do token OpenID da conta de serviço.

  4. Clique em Salvar.

gcloud

Para conceder papéis do IAM, use o gcloud projects add-iam-policy-binding comando.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role=roles/managedkafka.client

gcloud projects add-iam-policy-binding PROJECT_ID\
  --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role=roles/iam.serviceAccountTokenCreator

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role=roles/iam.serviceAccountOpenIdTokenCreator

Substitua:

  • PROJECT_ID: ID do projeto

  • PROJECT_NUMBER: o ID do seu projeto

Para receber o número do projeto, execute o gcloud projects describe comando:

gcloud projects describe PROJECT_ID

Para mais informações, consulte Encontrar o nome, o número e o ID do projeto.

Conectar-se à VM

Use SSH para se conectar à instância de VM.

Console

  1. Acesse a página Instâncias da VM.

    Acesse a página Instâncias de VM

  2. Na lista de instâncias de VM, encontre o nome da VM e clique em SSH.

gcloud

Para se conectar à VM, use o gcloud compute ssh comando.

gcloud compute ssh VM_NAME \
  --project=PROJECT_ID \
  --zone=ZONE

Substitua:

  • VM_NAME: o nome da VM
  • PROJECT_ID: ID do projeto
  • ZONE: a zona em que você criou a VM

Uma configuração extra pode ser necessária para o uso do SSH pela primeira vez. Para mais informações, consulte Sobre conexões SSH.

Instalar as ferramentas de linha de comando do Kafka

Na sessão SSH, execute os comandos a seguir para instalar as ferramentas de linha de comando do Kafka.

  1. Instale o Java, que é necessário para executar as ferramentas de linha de comando do Kafka, e o wget para ajudar a fazer o download das dependências. Os comandos a seguir pressupõem que você esteja usando um ambiente Linux Debian.

    sudo apt-get install default-jre wget
    
  2. Instale as ferramentas de linha de comando do Kafka.

    wget -O kafka_2.13-3.7.2.tgz https://archive.apache.org/dist/kafka/3.7.2/kafka_2.13-3.7.2.tgz
    tar xfz kafka_2.13-3.7.2.tgz
    
  3. Configure as variáveis de ambiente a seguir:

    export KAFKA_HOME=$(pwd)/kafka_2.13-3.7.2
    export PATH=$PATH:$KAFKA_HOME/bin
    export CLASSPATH=$CLASSPATH:$KAFKA_HOME/libs/release-and-dependencies/*:$KAFKA_HOME/libs/release-and-dependencies/dependency/*
    

Configurar a autenticação

Na sessão SSH, siga as etapas abaixo para configurar a biblioteca de autenticação do Serviço Gerenciado para Apache Kafka.

  1. Faça o download da biblioteca e instale-a localmente.

    wget https://github.com/googleapis/managedkafka/releases/download/v1.0.5/release-and-dependencies.zip
    sudo apt-get install unzip
    unzip -n -j release-and-dependencies.zip -d $KAFKA_HOME/libs/
    

    Esse comando instala a biblioteca no diretório lib do diretório de instalação do Kafka. As ferramentas de linha de comando do Kafka procuram dependências Java nesse diretório.

  2. Usando um editor de texto, crie um arquivo chamado client.properties e cole o seguinte:

    security.protocol=SASL_SSL
    sasl.mechanism=OAUTHBEARER
    sasl.login.callback.handler.class=com.google.cloud.hosted.kafka.auth.GcpLoginCallbackHandler
    sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;
    

    Salve o arquivo. Esse arquivo configura um cliente do Kafka com as seguintes configurações:

    • Use SASL_SSL para comunicação segura com o cluster do Kafka.

    • Use tokens de portador do OAuth 2.0 para autenticação.

    • Use a classe fornecida pela biblioteca GcpLoginCallbackHandler como o gerenciador de callback de login para receber tokens do OAuth 2.0.

Produzir e consumir mensagens

Na sessão SSH, execute os comandos a seguir para produzir e consumir mensagens do Kafka.

  1. Defina o endereço de inicialização como uma variável de ambiente.

    export BOOTSTRAP=$(gcloud managed-kafka clusters describe CLUSTER_ID \
     --location=LOCATION \
     --project=PROJECT_ID\
     --format="value(bootstrapAddress)"
    )
    

    Substitua:

    • CLUSTER_ID: o nome do cluster.
    • LOCATION: onde você criou o cluster.
    • PROJECT_ID: ID do projeto;

    Para mais informações, consulte Receber o endereço de inicialização.

  2. Liste os tópicos no cluster.

    kafka-topics.sh --list \
      --bootstrap-server $BOOTSTRAP \
      --command-config client.properties
    
  3. Escreva uma mensagem em um tópico.

    echo "hello world" | kafka-console-producer.sh \
      --topic KAFKA_TOPIC_NAME \
      --bootstrap-server $BOOTSTRAP \
      --producer.config client.properties
    

    Substitua KAFKA_TOPIC_NAME pelo nome do tópico.

  4. Consuma mensagens do tópico.

    kafka-console-consumer.sh \
      --topic KAFKA_TOPIC_NAME \
      --from-beginning \
      --bootstrap-server $BOOTSTRAP \
      --consumer.config client.properties
    

    Para interromper o consumo de mensagens, insira Ctrl+C.

  5. Execute um teste de desempenho do produtor.

    kafka-producer-perf-test.sh \
      --topic KAFKA_TOPIC_NAME \
      --num-records 1000000 --throughput 1000 --print-metrics --record-size 1024 \
      --producer-props bootstrap.servers=$BOOTSTRAP \
      --producer.config client.properties
    

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.

Console

  1. Exclua a instância de VM.

    1. Acesse a página Instâncias da VM.

      Acesse a página Instâncias de VM

    2. Selecione a VM e clique em Excluir.

  2. Exclua o cluster do Kafka.

    1. Acesse a página Serviço Gerenciado para Apache Kafka > Clusters.

      Acessar Clusters

    2. Selecione o cluster do Kafka e clique em Excluir.

gcloud

  1. Para excluir a VM, use o gcloud compute instances delete comando.

    gcloud compute instances delete VM_NAME --zone=ZONE
    
  2. Para excluir o cluster do Kafka, use o gcloud managed-kafka clusters delete comando.

    gcloud managed-kafka clusters delete CLUSTER_ID \
      --location=REGION --async
    

A seguir

Apache Kafka® é uma marca registrada da The Apache Software Foundation ou afiliadas nos Estados Unidos e/ou em outros países.