À 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:
- Para simplificar a configuração, use o fornecido AWS CloudFormation modelo. Este modelo criará o cluster provisionado do Amazon MSK necessário e os recursos necessários para esta postagem. Você pode criar um cluster MSK Serverless usando o console do Amazon MSK e usá-lo nesta solução. Este é um modelo de amostra, não está pronto para produção e Gerenciamento de identidade e acesso da AWS (IAM) devem ser implementadas utilizando as melhores práticas e o princípio do menor privilégio. Para mais detalhes, consulte Comece a usar as políticas gerenciadas pela AWS e avance para permissões com privilégios mínimos. Uma instância EC2 será criada como parte deste modelo. O cluster MSK e a instância EC2 serão criados em uma única nuvem privada digital (VPC); no entanto, você pode instalar o Terraform em uma conta diferente ou em uma VPC diferente. Para mais detalhes, consulte Conecte aplicativos cliente Kafka com segurança ao cluster do Amazon MSK a partir de diferentes VPCs e contas da AWS.
- Para esta postagem, usamos o mais recente Terraforma versão (1.10.x) e Plug-ins Terraform – provedor Mongey/Kafka. No Terraform, plugins são executáveis binários responsáveis por implementar tipos de recursos e provedores. Os plug-ins são instalados automaticamente quando inicializamos uma configuração do Terraform usando o terraform init
- Você precisa de acesso a uma conta da AWS com permissões suficientes para criar e gerenciar recursos, incluindo funções IAM e clusters MSK. Para obter mais informações, consulte Controle de acesso IAM.
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.
- Execute os seguintes comandos para instalar o Terraform:
- Execute o seguinte comando para verificar a instalação:
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:
- 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 obootstrap_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. - Adicione endpoints de servidores de inicialização IAM em um formato de lista separada por vírgulas:
- 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.
- 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á.
- Se o plano parecer correto, execute o comando
terraform apply
para aplicar a configuração. - 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.
- Depois do
terraform apply
o comando for concluído, verifique se a infraestrutura foi criada com a ajuda do utilitário kafka-topics.sh:
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:
- Verifique o número de partições no tópico usando o
--describe
comando:
Este comando mostrará 50 partições no sampleTopic
tópico.
- Modifique o arquivo Terraform
major.tf
e altere o valor do parâmetro partições para 10: - Execute o comando
terraform plan
para revisar o plano de execução.
- Se o plano mostrar as alterações, execute o comando
terraform apply
para aplicar a configuração. - 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.
- Verifique o número alterado de partições no tópico e execute novamente o
--describe
comando:
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.
- Execute o comando
terraform destroy
para remover o tópico. - Quando for solicitada uma confirmação antes de continuar, digite
sure
.
O Terraform excluirá o sampleTopic
tópico do seu cluster MSK.
- Para verificar, execute novamente o
--list
comando:
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.