Como conectar-se ao Apache Kafka no Heroku

Como conectar-se ao Apache Kafka no Heroku

Como conectar-se ao Apache Kafka no Heroku
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


O Apache Kafka é usado para criar pipelines de dados em tempo real e aplicativos de streaming. É escalável horizontalmente, tolerante a falhas e incrivelmente rápido. E, quando associados ao Heroku e ao MuleSoft, os desenvolvedores podem publicar e consumir dados com facilidade, sem escrever nenhum código.

Neste artigo, mostraremos o processo de configuração do conector MuleSoft Kafka para conectar-se ao Apache Kafka no Heroku por SSL. Usando o MuleSoft Kafka Connector, os desenvolvedores podem otimizar os processos de negócios e mover dados entre o Kafka e aplicativos e serviços corporativos.

Este artigo pressupõe que você tenha uma conta Heroku com o complemento Apache Kafka no Heroku já adicionado e configurado. Este artigo também pressupõe que você tenha o Anypoint Studio 7.x instalado em sua máquina local e tenha alguma experiência na criação de fluxos.

Para começar, precisamos configurar o Apache Kafka no Heroku para termos um tópico que possamos publicar e consumir no fluxo do Mule. Também precisamos gerar os arquivos de armazenamento de chaves para conectar-se ao Kafka sobre SSL.

1. Configurando o Apache Kafka no Heroku

Supondo que você já adicionou o complemento ao seu aplicativo no Heroku, você deve ter Apache Kafka em Heroku na sua lista de complementos sob o Recursos seção.

Caso contrário, siga este link e clique no botão de instalação no canto superior direito para provisionar uma instância para o seu aplicativo Heroku.

Depois que o Kafka for provisionado, clique no nome do complemento para abrir o console em uma nova guia do navegador. Se você já possui um tópico, pode pular esta seção e pular para a seção 2. Caso contrário, role para baixo e clique em Adicionar tópico.

Atribua um nome ao seu tópico (por exemplo, “mule-app”) e defina o Partições campo. Acabei de configurá-lo para 1 para o meu projeto, mas você pode definir isso da maneira que precisar. Deixei todos os outros campos com seus valores padrão e cliquei em Criar tópico.

Com o tópico criado, precisamos configurar um grupo de consumidores no Kafka. Infelizmente, não encontrei uma maneira de configurar isso na interface do console da web. Você precisará instalar a CLI Heroku e executar o comando do complemento Kafka para adicionar um grupo de consumidores. Você pode descobrir como configurar a CLI Heroku aqui. Depois de configurar a CLI Heroku, você precisa instalar o plugin para o Kafka. Você pode seguir as instruções aqui sobre como configurar o plugin.

Como já provisionamos o Kafka, você não precisa provisioná-lo a partir da CLI. Mas ainda precisamos configurar o grupo de consumidores para Kafka. Execute o seguinte comando para configurar isso com os itens destacados em vermelho com seus próprios nomes:

heroku kafka: grupos de consumidores: criar -uma

A execução do comando a seguir mostrará a lista de grupos em sua instância Kafka

heroku kafka: grupos de consumidores -a

Agora que está configurado, a próxima seção mostrará como reunir os URLs SSL e os certificados. Também mostrará como converter os certificados PEM fornecidos no Heroku em JKS, necessários para o MuleSoft Kafka Connector.

2. Convertendo certificados PEM e chaves privadas em JKS

O Kafka no Heroku suporta SSL para criptografar e autenticar conexões, e este é o único modo de conexão suportado no Common Runtime. Nos Espaços Privados, as conexões de texto sem formatação podem opcionalmente ser usadas, mas este artigo abordará apenas as conexões SSL.

Heroku fornece os certificados para conectar ao Kafka no formato PEM. O MuleSoft Kafka Connector requer que os certificados estejam no formato JKS. Portanto, precisamos converter os certificados e chaves PEM em um arquivo PKCS12 antes de convertê-los em JKS. Vamos usar openssl por isso. Mas primeiro, vamos percorrer o processo de onde obter esses certificados e chave privada.

De volta ao console Heroku para seu aplicativo, clique no Configurações seção. Uma vez lá, clique no Revelar Vars de configuração no Config Vars seção.

o Config Vars A seção será expandida e mostrará várias seqüências de configuração para os complementos do seu aplicativo Heroku. Precisamos coletar as seguintes variáveis ​​de configuração.

  • KAFKA_PREFIX
  • KAFKA_URL
    • Uma lista separada por vírgula de URLs SSL para os intermediários Kafka que compõem o cluster. Você precisará dessa sequência para o campo Servidores de Bootstrap no Kafka Connector.

As seguintes propriedades na tabela abaixo contêm os certificados e as chaves para autenticação. Copie e cole-os em arquivos com os nomes listados ao lado deles. Você deve salvá-los na mesma pasta.

  • KAFKA_CLIENT_CERT – cert.pem
  • KAFKA_CLIENT_CERT_KEY – key.pem
  • KAFKA_TRUSTED_CERT – trust_cert.pem

Em seguida, abra uma janela do terminal e navegue até essa pasta. Execute o seguinte comando para gerar um pkcs12 arquivo do cert.pem e key.pem Arquivo.

openssl pkcs12 -export -out cert.pkcs12 -in cert.pem -inkey key.pem

O comando solicitará uma senha de exportação. Não se esqueça de escrever isso. Você precisará dele para a próxima etapa e também para a configuração do Kafka Connector.

Feito isso, você precisa converter o pkcs12 arquivo para um JKS. Jetty vem com um utilitário chamado PKCS12Import isso fará isso por você. Você pode baixar isso jarra arquivo (jetty-6.1.7.jar) a partir daqui. Copie esse arquivo na mesma pasta em que você criou o pkcs12 arquivo e execute o seguinte comando.

java -cp jetty-6.1.7.jar org.mortbay.jetty.security.PKCS12Import cert.pkcs12 keystore.jks

O comando solicitará a senha de exportação usada anteriormente. Depois que o comando for concluído, você deverá ter os seguintes arquivos nessa pasta.

Em seguida, você precisará importar o certificado para o seu armazenamento confiável. Nós precisamos do trust_cert.pem arquivo para isso. Exporte o certificado como um DER usando o seguinte comando:

openssl x509 -em confiável_cert.pem -out cert.der -outform der

Em seguida, importe-o para o armazenamento confiável usando o seguinte comando. Certifique-se de manter uma nota da senha. Você precisará disso quando configurar o Kafka Connector:

keytool -importcert -alias mula -file cert.der -keystore truststore.jks -storepass senha

Quando o comando solicitar que você confie neste certificado, digite ‘yes’. Você verá a seguinte saída:

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Na pasta, agora você deve ter os seguintes arquivos.

o keystore.jks e a truststore.jks arquivos são o que precisamos para a próxima seção.

3. Crie um aplicativo Mule

Suponho que você já esteja familiarizado com o Anypoint Studio, portanto, deixarei as etapas de como criar o fluxo a seguir abaixo. Existem dois fluxos para este aplicativo simples. Um fluxo publica uma mensagem para o tópico. O outro escuta o tópico e grava a mensagem no log do console.

Aqui está o XML de configuração do Mule para os fluxos:

As subseções a seguir fornecem detalhes sobre as configurações dos componentes do projeto.

Elemento de configuração do ouvinte HTTP

Eu mantive a configuração do ouvinte HTTP com os valores padrão.

Elemento de propriedades de configuração

Ao criar seu projeto, você também precisa criar um arquivo de configuração com as seguintes variáveis. Você pode copiar e colar no seguinte conteúdo:

kafka: ssl.endpoint.identification.algorithm: ”” topic: “.“GroupId:”.

O KAFKA_PREFIX é da Seção 1 e é definido quando você provisionou o Kafka no Heroku. O nome do tópico também foi configurado na Seção 1. Você pode ver um exemplo da minha instância na captura de tela abaixo.

E da Seção 2, copie e cole o keystore.jks e truststore.jks arquivos no src / main / recursos pasta do seu projeto. Estes serão referenciados a partir dos elementos de configuração do consumidor e produtor.

Configuração do produtor Kafka

Esta seção o guiará pelas configurações da configuração do produtor.

  1. Altere o valor suspenso para Conexão Kafka SSL Producer.
  2. Na Seção 2, copie e cole o arquivo KAFKA_URL string para o Servidores de autoinicialização campo. É uma lista separada por vírgula de URLs apontando para os servidores (por exemplo, kafka + ssl: //ec2-35-173-52-55.compute-1.amazonaws.com: 9096, kafka + ssl: // ec2-34-234 -254-237.compute-1.amazonaws.com:9096…)
  3. Mudar o Propriedades Adicionais desça para Editar em linha e adicione os seguintes pares de chave / valor:
    1. security.protocol – SSL
    2. ssl.endpoint.identification.algorithm – $ {kafka.ssl.endpoint.identification.algorithm}
  4. Colocou o Localização principal da loja e Local da loja confiável ao jks arquivos que criamos na Seção 2 e colamos no projeto. Preencha também as senhas para o Senha do armazenamento de chaves e Senha da loja confiável.

Quando tudo estiver preenchido, clique em Conexão de teste. Você deve ver a seguinte janela.

Configuração do Consumidor Kafka

  1. Altere o valor suspenso para Conexão de consumidor Kafka SSL.
  2. Defina isso para .. O nome do grupo é o que você configura na Heroku CLI na Seção 1.
  3. Na Seção 2, copie e cole o arquivo KAFKA_URL string para o Servidores de autoinicialização campo. Esta é a mesma lista da configuração do Producer. É uma lista separada por vírgula de URLs apontando para os servidores. (por exemplo, kafka + ssl: //ec2-35-173-52-55.compute-1.amazonaws.com: 9096, kafka + ssl: //ec2-34-234-254-237.compute-1.amazonaws. com: 9096…)
  4. Mudar o Propriedades Adicionais desça para Editar em linha e adicione os seguintes pares de chave / valor:
    1. security.protocol – SSL
    2. ssl.endpoint.identification.algorithm – $ {kafka.ssl.endpoint.identification.algorithm}
  5. Colocou o Localização principal da loja e Local da loja confiável ao jks arquivos que criamos na Seção 2 e colamos no projeto. Preencha também as senhas para o Senha do armazenamento de chaves e Senha da loja confiável.

Quando tudo estiver preenchido, clique em Conexão de teste. Você deve ver a seguinte janela.

4. Execute o aplicativo

Com tudo configurado, clique com o botão direito na tela e clique em Executar projeto …

O log do console terá a seguinte aparência:

Abra uma janela do navegador e navegue para http: // localhost: 8081 / publish.

O projeto não gera nada para o navegador, mas quando você voltar para o Anypoint Studio, verá a seguinte mensagem nos logs do console. Isso mostra que a mensagem foi gravada no tópico e, em seguida, o fluxo do Consumidor selecionou a mensagem do tópico e a gravou nos logs.

Por fim, se você voltar ao Apache Kafka em Heroku console, você verá os dados mostrando que uma mensagem foi recebida e consumida.

Sumário

Usando o MuleSoft Kafka Connector e juntamente com o Apache Kafka no Heroku, os desenvolvedores podem otimizar os processos de negócios e mover dados entre o Kafka e os aplicativos e serviços corporativos de maneira rápida e fácil.

Visite o Anypoint Exchange da MuleSoft para ver ainda mais conectores disponíveis na plataforma Anypoint.


cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Luiz Presso
Luiz Presso