Automatize o provisionamento e a configuração de tópicos usando o Terraform com o Amazon MSK


À medida que as organizações implantam Amazon Managed Streaming para Apache Kafka (Amazon MSK) em vários casos de uso, o gerenciamento handbook de configurações de tópicos pode ser um desafio. Isso pode levar a vários problemas:

  • Ineficiência – A configuração handbook é demorada e propensa a erros, especialmente para implantações grandes. Manter a consistência em diversas configurações pode ser difícil. Para evitar isso, os administradores do Kafka geralmente definem a propriedade create.matters.allow nos corretores, o que leva à ineficiência da operação do cluster.
  • Erro humano – A configuração handbook aumenta o risco de erros que podem interromper o fluxo de dados e afetar aplicativos que dependem do Amazon MSK.
  • Desafios de escalabilidade – Dimensionar um ambiente Amazon MSK com configuração handbook é complicado. Adicionar novos tópicos ou modificar os existentes requer intervenção handbook, dificultando a agilidade.

Esses desafios destacam a necessidade de uma abordagem mais automatizada e robusta para o gerenciamento de configuração de tópicos MSK.

Neste put up, abordamos esse problema usando Terraform para otimizar a configuração de tópicos MSK. Esta solução oferece suporte a clusters MSK provisionados e sem servidor.

Visão geral da solução

Os clientes desejam uma maneira melhor de gerenciar a sobrecarga de tópicos e suas configurações. O tratamento handbook de configurações de tópicos pode ser complicado e sujeito a erros, dificultando o acompanhamento de alterações e atualizações.

Para enfrentar esses desafios, você pode usar Terraformauma ferramenta de infraestrutura como código (IaC) da HashiCorp. O Terraform permite gerenciar e provisionar infraestrutura de forma declarativa. Ele usa arquivos de configuração legíveis escritos em HashiCorp Configuration Language (HCL) para definir o estado desejado dos recursos de infraestrutura. Esses recursos podem abranger máquinas virtuais, redes, bancos de dados e uma vasta gama de ofertas específicas de provedores de nuvem.

O Terraform oferece uma solução atraente para os desafios da configuração handbook de tópicos Kafka. O Terraform permite definir e gerenciar seus tópicos Kafka por meio de código. Essa abordagem oferece vários benefícios importantes:

  • Automação – Terraform automatiza a criação, modificação e exclusão de tópicos MSK.
  • Consistência e repetibilidade – As configurações do Terraform fornecem estruturas e configurações de tópicos consistentes em todo o ambiente do Amazon MSK. Isso simplifica o gerenciamento e reduz a probabilidade de desvios de configuração.
  • Escalabilidade – O Terraform permite provisionar e gerenciar um grande número de tópicos MSK, facilitando o crescimento do seu ambiente Amazon MSK.
  • Controle de versão – As configurações do Terraform são armazenadas em sistemas de controle de versão, permitindo rastrear alterações, reverter se necessário e colaborar de forma eficaz em sua infraestrutura do Amazon MSK.

Ao usar o gerenciamento de configuração de tópicos do Terraform para MSK, você pode simplificar suas operações, minimizar erros e ter um ambiente Amazon MSK robusto e escalável.

Nesta postagem, fornecemos um guia completo para usar o Terraform para gerenciar configurações do Amazon MSK. Exploramos o processo de instalação do Terraform em Amazon Elastic Compute Nuvem (Amazon EC2), definindo e descentralizando configurações de tópicos e implantando e atualizando configurações de maneira automatizada.

Pré-requisitos

Antes de prosseguir com a solução, certifique-se de ter os seguintes recursos e acesso:

Ao certificar-se de ter esses pré-requisitos em vigor, você estará pronto para agilizar as configurações de seus tópicos com o Terraform.

Instale o Terraform em sua máquina cliente

Quando o cluster e a máquina cliente estiverem prontos, faça SSH na máquina cliente (Amazon EC2) e instale o Terraform.

  1. Execute os seguintes comandos para instalar o Terraform:
    sudo yum replace -y
    sudo yum set up -y yum-utils shadow-utils
    sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
    sudo yum -y set up terraform

  2. Execute o seguinte comando para verificar a instalação:

Automatize o provisionamento e a configuração de tópicos usando o Terraform com o Amazon MSK

Isso indica que a instalação do Terraform foi bem-sucedida e você está pronto para automatizar a configuração do tópico MSK.

Provisione um tópico MSK usando Terraform

Para provisionar o tópico MSK, conclua as etapas a seguir:

  1. Crie um novo arquivo chamado major.tf e copie o código a seguir neste arquivo, substituindo as informações BOOTSTRAP_SERVERS e AWS_REGION pelos detalhes do seu cluster. Para obter instruções sobre como recuperar o bootstrap_servers informações para autenticação IAM do seu cluster MSK, consulte Obtendo os agentes de inicialização para um cluster do Amazon MSK. Esse script é comum para Amazon MSK provisionado e MSK Serverless.
    terraform {
    required_providers {
    kafka = {
    supply = "Mongey/kafka" }}}
    supplier "kafka" {
    bootstrap_servers = ({BOOTSTRAP_SERVERS})
    tls_enabled       = true
    sasl_mechanism    = "aws-iam"
    sasl_aws_region   ={AWS_REGION}
    sasl_aws_profile  = "dev" }
    useful resource "kafka_topic" "sampleTopic" {
    title               = "sampleTopic"
    replication_factor = 1
    partitions         = 50 }

  2. Adicione endpoints de servidores de inicialização IAM em um formato de lista separada por vírgulas:
    BOOTSTRAP_SERVERS = ("b-2.mskcluster…. ","b-3.mskcluster…. ","b-1.mskcluster…. ")

  3. Execute o comando terraform init para inicializar o Terraform e baixar os provedores necessários.

O terraform init O comando inicializa um diretório de trabalho contendo arquivos de configuração do Terraform (major.tf). Este é o primeiro comando que deve ser executado após escrever uma nova configuração do Terraform.

  1. Execute o comando terraform plan para revisar o plano de execução.

Este comando mostra as alterações que o Terraform fará na infraestrutura com base na configuração fornecida. Esta etapa é opcional, mas geralmente é usada como uma prévia das alterações que o Terraform fará.

  1. Se o plano parecer correto, execute o comando terraform apply para aplicar a configuração.
  2. Quando for solicitada uma confirmação antes de continuar, digite sure.

O terraform apply comando executa as ações propostas em um Terraform plan. Terraform criará o sampleTopic tópico em seu cluster MSK.

  1. Depois do terraform apply o comando for concluído, verifique se a infraestrutura foi criada com a ajuda do utilitário kafka-topics.sh:
    kafka/bin/kafka-topics.sh 
    --bootstrap-server "b-1…..amazonaws.com:9098" 
    --command-config ./kafka/bin/shopper.properties  
    --list

Você pode usar a ferramenta kafka-toipcs.sh com o --list opção para recuperar uma lista de tópicos associados ao seu cluster MSK. Para obter mais informações, consulte o documentação de criação de tópico.

Atualize a configuração do tópico MSK usando Terraform

Para atualizar a configuração do tópico MSK, vamos supor que queremos alterar o número de partições de 50 para 10 em nosso tópico. Precisamos realizar as seguintes etapas:

  1. Verifique o número de partições no tópico usando o --describe comando:
    kafka/bin/kafka-topics.sh 
    --bootstrap-server "b-1…...amazonaws.com:9098" 
    --command-config ./kafka/bin/shopper.properties  
    --describe 
    --topic sampleTopic

Este comando mostrará 50 partições no sampleTopic tópico.

  1. Modifique o arquivo Terraform major.tf e altere o valor do parâmetro partições para 10:
    useful resource "kafka_topic" "sampleTopic" {
    title               = " sampleTopic "
    replication_factor = 1
    partitions         = 10 }

  2. Execute o comando terraform plan para revisar o plano de execução.

  1. Se o plano mostrar as alterações, execute o comando terraform apply para aplicar a configuração.
  2. Quando for solicitada uma confirmação antes de continuar, digite sure.

O Terraform irá descartar e recriar o sampleTopic tópico com a configuração alterada.

  1. Verifique o número alterado de partições no tópico e execute novamente o --describe comando:
    kafka/bin/kafka-topics.sh 
    --bootstrap-server "b-1…...amazonaws.com:9098" 
    --command-config ./kafka/bin/shopper.properties  
    --describe --topic sampleTopic

Agora, este comando mostrará 10 partições no sampleTopic tópico.

Exclua o tópico MSK usando Terraform

Quando não precisar mais da infraestrutura, você poderá remover todos os recursos criados pelo seu arquivo Terraform.

  1. Execute o comando terraform destroy para remover o tópico.
  2. Quando for solicitada uma confirmação antes de continuar, digite sure.

O Terraform excluirá o sampleTopic tópico do seu cluster MSK.

  1. Para verificar, execute novamente o --list comando:
    kafka/bin/kafka-topics.sh 
    --bootstrap-server "b-1…..amazonaws.com:9098" 
    --command-config ./kafka/bin/shopper.properties  
    --list

Agora, este comando não mostrará o sampleTopic tópico.

Conclusão

Nesta postagem, abordamos os desafios comuns associados ao gerenciamento handbook de configuração de tópicos MSK e apresentamos uma solução robusta baseada em Terraform. Usar o Terraform para provisionamento e configuração automatizados de tópicos agiliza seus processos, promove escalabilidade e aumenta a flexibilidade. Além disso, facilita implantações automatizadas e gerenciamento centralizado.

Incentivamos você a explorar o Terraform como um meio de otimizar as configurações do Amazon MSK e desbloquear mais eficiência em seus pipelines de dados de streaming.


Sobre o autor

Vijay Kardile é gerente técnico sênior de contas com suporte empresarial, Índia. Com mais de duas décadas de experiência em consultoria e engenharia de TI, é especialista em serviços de Analytics, principalmente Amazon EMR e Amazon MSK. Ele capacitou vários clientes empresariais, facilitando a adoção de vários serviços da AWS e oferecendo orientação especializada para alcançar a excelência operacional.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *