Replicar dados do Kafka para o Serviço gerenciado para Apache Kafka

Se você precisar mover dados de um tópico do Apache Kafka de código aberto para o Serviço Gerenciado para Apache Kafka, use um modelo do Dataflow. É possível usar o console do Google Cloud , a API REST ou a Google Cloud CLI. As mensagens no tópico do Kafka precisam ser publicadas usando o esquema e a codificação AVRO ou JSON.

Este documento ajuda você a configurar o modelo Kafka para Kafka Dataflow usando o console Google Cloud .

Google Cloud produtos usados

O modelo do Dataflow do Kafka para Kafka usa os seguintes produtos Google Cloud faturáveis. Use a calculadora de preços para gerar uma estimativa de custo com base no uso previsto.

  • Dataflow: é um serviço de processamento de dados totalmente gerenciado. O modelo Kafka para Kafka Dataflow usa o Dataflow para criar um pipeline que lê dados do seu tópico externo do Kafka e os grava em um tópico do Serviço Gerenciado para Apache Kafka. O escalonamento automático e os recursos de recuperação automática do Dataflow garantem que seu pipeline seja executado de forma confiável e eficiente.
  • Cloud Storage: oferece armazenamento de objetos. Ele só é usado se você usar a autenticação TLS para sua origem externa do Kafka. Você armazena os arquivos de keystore e truststore que contêm certificados TLS no Cloud Storage, e o pipeline do Dataflow os acessa no Cloud Storage.
  • Secret Manager: o Secret Manager é um serviço de gerenciamento de credenciais e secrets.O produto é usado somente se você escolher a autenticação TLS ou SASL_PLAIN para sua origem externa do Kafka. Ele armazena suas credenciais de autenticação, como nomes de usuário, senhas e certificados. Essas credenciais são usadas para se conectar ao cluster externo do Kafka com segurança.

Além disso, a solução também usa o Serviço Gerenciado para Apache Kafka.

  • Serviço gerenciado para Apache Kafka: um serviço Google Cloud que ajuda você a executar o Apache Kafka. Nesta solução, o Serviço Gerenciado para Apache Kafka é usado como destino dos seus dados. Você transmite dados de um tópico externo do Kafka para um tópico no cluster do Serviço Gerenciado para Apache Kafka. Para mais informações sobre os preços do Serviço Gerenciado para Apache Kafka, consulte o guia de preços.

Antes de começar

Antes de iniciar o modelo Kafka para Kafka do Dataflow, verifique se você concluiu o seguinte:

  1. Crie um cluster e um tópico do Serviço Gerenciado para Apache Kafka.

    Uma maneira de criar um cluster e um tópico é seguir o início rápido do Serviço Gerenciado para Apache Kafka.

    Se o tópico tiver registros Avro, consulte Configurar o formato de mensagem do Kafka para ver outros requisitos de recursos.

  2. Ative as seguintes APIs Google Cloud :

    • Dataflow

    • Secret Manager (somente se você usar a autenticação SASL_PLAIN ou TLS para sua origem externa do Kafka)

    • Cloud Storage (somente se você usar a autenticação TLS para sua origem externa do Kafka)

    gcloud services enable dataflow.googleapis.com \
    secretmanager.googleapis.com storage.googleapis.com
    

Preparar os recursos de autenticação SASL_PLAIN

Siga as instruções desta seção se você planeja usar suas credenciais de autenticação SASL_PLAIN para sua origem externa do Kafka.

  1. No console Google Cloud , navegue até o Secret Manager.

    Acessar o Secret Manager

  2. Crie dois secrets: um para seu nome de usuário e outro para sua senha do Kafka.

    Para cada secret, forneça um nome descritivo, como "kafka-username" e "kafka-password".

Para mais informações sobre como criar um secret, incluindo as funções e permissões necessárias, consulte Criar um secret.

Preparar os recursos de autenticação TLS

Siga as instruções desta seção se você planeja usar suas credenciais de autenticação TLS para sua origem externa do Kafka.

  1. No console Google Cloud , navegue até o Secret Manager.

    Acessar o Secret Manager

  2. Verifique se o arquivo Keystore (formato JKS) contém o certificado TLS e a chave privada necessários para autenticar o cliente com o cluster do Kafka.

  3. Verifique se o arquivo Truststore (formato JKS) contém os certificados confiáveis necessários para verificar a identidade do agente Kafka.

  4. Faça upload dos arquivos de keystore e truststore para o Cloud Storage.

    Para mais informações sobre como fazer upload de arquivos para o Cloud Storage, consulte Fazer upload de objetos de um sistema de arquivos.

  5. Crie três secrets para sua configuração TLS:

    • Senha do truststore: armazena a senha usada para acessar o arquivo do truststore.

    • Senha do keystore: armazena a senha usada para acessar o arquivo do keystore.

    • Senha da chave privada: armazena a senha usada para acessar a chave privada no arquivo do keystore.

    Dê um nome descritivo para cada secret.

Para mais informações sobre como criar um secret, incluindo as funções e permissões necessárias, consulte Criar um secret.

Conceda o papel de cliente do Kafka gerenciado à conta de serviço do worker do Dataflow

Para conectar seu job do Dataflow ao serviço gerenciado do Google Cloud para Apache Kafka, conceda permissões específicas à conta de serviço do worker do Dataflow. Essa conta de serviço é a identidade usada para todas as VMs de worker no seu job do Dataflow, e todas as solicitações feitas dessas VMs utilizam essa conta.

Para permitir o acesso aos recursos do Kafka, conceda o papel roles/managedkafka.client à conta de serviço do worker do Dataflow. Esse papel inclui a permissão managedkafka.clusters.connect necessária para estabelecer conexões.

Para mais informações sobre a conta de serviço do worker, consulte Segurança e permissões para pipelines no Google Cloud.

Para conceder o papel de cliente do Kafka gerenciado à conta de serviço do Dataflow, siga estas etapas:

Console

  1. No console do Google Cloud , acesse a página IAM.
    Acessar o IAM
  2. Verifique se o projeto está definido como o projeto de consumidor que o cliente do Serviço gerenciado para Apache Kafka acessaria.
  3. Clique em Conceder acesso.
  4. Na nova página, em Adicionar principais, insira o endereço de e-mail da conta de serviço do worker do Dataflow que você está usando.
  5. Em Atribuir papéis, selecione o papel Cliente gerenciado do Kafka.
  6. Clique em Salvar.

CLI da gcloud

  1. No console do Google Cloud , ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte de baixo do console Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Execute o comando gcloud projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
      --role roles/managedkafka.client

    Substitua:

    • PROJECT_ID é o ID do projeto.

    • SERVICE_ACCOUNT_EMAIL é o endereço de e-mail da conta de serviço do worker do Dataflow.

Iniciar o modelo do Dataflow do Kafka para Kafka

É possível iniciar o modelo Dataflow do Kafka para o Kafka na página de detalhes do cluster no console.

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

    Acessar Clusters

    Os clusters criados em um projeto são listados.

  2. Para acessar a página de detalhes do cluster, clique no nome dele.
  3. Na página de detalhes do cluster, clique em Importar dados.

    A página Criar um job do Dataflow usando o modelo "Kafka para Kafka" será aberta.

Configure os campos no modelo de acordo com as informações incluídas nas seções a seguir.

Insira um nome para o job

No campo Nome do job, insira um nome para o job do Dataflow.

O nome precisa ser exclusivo entre todos os jobs em execução no projeto.

Escolher um endpoint regional para seu pipeline

No campo Endpoint regional, defina o endpoint regional como o local do cluster do Kafka para minimizar as taxas de transferência de dados entre regiões.

Os workers do Dataflow podem ser executados independentemente da região do cluster do Kafka. No entanto, você vai ter custos de saída inter-regional se iniciar workers fora da região do seu cluster do Kafka.

Para conferir a localização do cluster, siga as etapas em Listar seus clusters do Serviço gerenciado para Apache Kafka.

Configurar origem

  1. Em Origem, selecione Kafka autogerenciado ou externo.

  2. Em Servidor de inicialização do Kafka, insira o endereço do servidor de inicialização do cluster externo do Kafka.

  3. Em Servidor de inicialização e tópico do Kafka de origem, insira o endereço externo do servidor de inicialização e do tópico do Kafka.

  4. Em Modo de autenticação de origem do Kafka, selecione o modo de autenticação entre as opções disponíveis. Para o Kafka externo, você tem três opções:

    • SASL_PLAIN

    • TLS

    • Nenhum

Para autenticação de origem do Kafka SASL_PLAIN

Antes de continuar com esta seção, consulte Preparar os recursos de autenticação SASL_PLAIN.

Se você selecionar SASL_PLAIN como a autenticação de origem do Kafka, preencha os seguintes campos adicionais.

  1. Em ID da versão do secret para o nome de usuário SASL/PLAIN do Kafka, insira o ID da versão do nome de usuário.

  2. Em ID da versão do secret para senha SASL/PLAIN do Kafka, insira o ID da versão da senha.

Para autenticação de origem do Kafka TLS

Antes de continuar com esta seção, consulte Preparar os recursos de autenticação TLS.

Se você selecionar TLS como a autenticação de origem do Kafka, preencha os seguintes campos adicionais.

  1. Em Localização do keystore, insira o caminho do Cloud Storage para o arquivo Java Keystore (JKS). Esse arquivo contém o certificado TLS e a chave privada necessários para autenticar seu pipeline com o cluster Kafka. Por exemplo: gs://your-bucket/keystore.jks

  2. No campo Local do arquivo Truststore, insira o caminho do Cloud Storage para o arquivo Java Truststore (JKS). Esse arquivo contém os certificados confiáveis usados para verificar a identidade do agente Kafka.

  3. Em ID da versão do secret para senha do Truststore, forneça o ID do secret do Secret Manager que armazena a senha para acessar o arquivo JKS do Truststore.

  4. Em ID da versão do secret da senha do keystore, informe o ID do secret do Secret Manager que armazena a senha para acessar o arquivo JKS.

  5. No campo ID da versão secreta da senha da chave privada, se a chave privada no keystore tiver uma senha separada, insira o ID secreto do Secret Manager que contém essa senha.

Confirmar deslocamentos no Kafka

Essa configuração controla como o pipeline acompanha quais mensagens da origem externa do Kafka são processadas. Ativar essa configuração ajuda a garantir que seu pipeline processe mensagens de maneira confiável e evite erros ao reiniciar.

O Kafka acompanha as mensagens usando deslocamentos. Pense neles como favoritos, lembrando o lugar do pipeline em cada fluxo de mensagens. Quando você ativa a configuração, o pipeline salva regularmente os favoritos no Kafka. Se o pipeline for reiniciado devido a um erro, uma atualização ou uma manutenção planejada, ele poderá usar os favoritos salvos para continuar de onde parou. Isso evita que ele perca mensagens ou processe acidentalmente a mesma mensagem duas vezes.

  1. Ative a opção Confirmar deslocamentos para o Kafka.

  2. Forneça um ID do grupo de consumidores. É um nome que identifica seu pipeline para o Kafka.

  3. Em Deslocamento inicial padrão do Kafka, escolha uma das seguintes opções:

    • Mais antiga: processa mensagens desde o início do tópico do Kafka.

    • Mais recente: processa mensagens a partir da mais recente.

Configurar destino

  1. Em "Destino", escolha Serviço gerenciado para Apache Kafka.

  2. Em Cluster do Kafka, escolha um cluster que você já criou.

  3. Você pode escolher um tópico existente ou criar um.

  4. Em Método de autenticação de destino do Kafka, selecione Application Default Credentials.

Configurar criptografia

Por padrão, todos os dados em repouso e em trânsito são criptografados por um Google-owned and Google-managed encryption key. Se você tiver chaves de criptografia gerenciadas pelo cliente (CMEK), poderá selecionar suas próprias chaves. Para mais informações sobre como configurar uma CMEK, consulte Configurar a criptografia de mensagens.

Configurar rede

É preciso especificar a rede e a sub-rede do cluster no modelo do Dataflow. A seção Parâmetros opcionais do modelo permite definir a rede para os workers do Dataflow.

O modelo Dataflow do Kafka para o Kafka provisiona workers do Dataflow na rede padrão do seu projeto por padrão. Para permitir que o cluster externo do Kafka envie dados ao Serviço gerenciado para Apache Kafka pelo Dataflow, verifique se os workers do Dataflow podem acessar a rede do cluster.

Recomendamos que, se o cluster do Kafka não estiver conectado a uma sub-rede na rede padrão do projeto, use a rede padrão do projeto para o cluster do Kafka.

Para mais informações sobre como configurar a rede com seu pipeline do Dataflow, consulte o seguinte:

Se você tiver dificuldades para configurar a rede do Dataflow, consulte o guia de solução de problemas de rede do Dataflow.

Configurar parâmetros opcionais do Dataflow

Configure os parâmetros opcionais do Dataflow somente se você souber o impacto da configuração nos workers do Dataflow. Configurações incorretas podem afetar o desempenho ou o custo. Para explicações detalhadas de cada opção, consulte Parâmetros opcionais.

Monitoramento

O modelo do Dataflow para Kafka no Serviço Gerenciado para Apache Kafka oferece uma experiência de monitoramento que permite explorar registros, métricas e erros no console. Esse pacote de ferramentas de monitoramento está disponível como parte da interface do usuário do Dataflow.

Na guia Métricas do job, é possível criar painéis personalizados. Para o modelo do Kafka para o Serviço Gerenciado para Apache Kafka, recomendamos configurar um painel de métricas de job que monitore o seguinte:

  • Capacidade de processamento: o volume de dados processados a qualquer momento. Isso é útil para monitorar o fluxo de dados no job e identificar possíveis problemas de desempenho.

    Para mais informações, consulte Monitoramento da capacidade de processamento do Dataflow.

  • Atualização de dados: a diferença em segundos entre o carimbo de data/hora no elemento de dados e o horário em que o evento é processado no pipeline. Isso ajuda a identificar gargalos de desempenho e de fonte de dados ou novas tentativas frequentes.

    Para mais informações, consulte: Monitoramento de atualização do Dataflow.

  • Backlog: a quantidade de bytes aguardando processamento. Essas informações orientam as decisões de escalonamento automático.

Para mais informações sobre o monitoramento do Dataflow, consulte a documentação do Dataflow.

Solução de problemas

Se você encontrar problemas de performance com seu pipeline do Dataflow, o Dataflow oferece um conjunto abrangente de ferramentas de diagnóstico e solução de problemas.

Confira dois cenários comuns e os respectivos guias de solução de problemas:

Para uma visão geral da depuração de pipelines do Dataflow, consulte Resolver problemas e depurar pipelines do Dataflow.

A seguir