136
Amazon Managed Streaming for Apache Kafka Guia do desenvolvedor

Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon ManagedStreaming for Apache Kafka

Guia do desenvolvedor

Page 2: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Amazon Managed Streaming for Apache Kafka: Guia do desenvolvedorCopyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

As marcas comerciais e imagens de marcas da Amazon não podem ser usadas no contexto de nenhum produtoou serviço que não seja da Amazon, nem de qualquer maneira que possa gerar confusão entre os clientes ou quedeprecie ou desprestigie a Amazon. Todas as outras marcas comerciais que não pertencem à Amazon pertencem aseus respectivos proprietários, que podem ou não ser afiliados, conectados ou patrocinados pela Amazon.

Page 3: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Table of ContentsO que é Amazon MSK? ...................................................................................................................... 1Configuração ...................................................................................................................................... 4

Cadastre-se na AWS .................................................................................................................. 4Fazer download de bibliotecas e ferramentas ................................................................................. 4

Conceitos básicos ............................................................................................................................... 5Etapa 1: Criar uma VPC .............................................................................................................. 5Etapa 2: Ativar a alta disponibilidade e a tolerância a falhas .............................................................. 8Etapa 3: Criar um cluster ............................................................................................................. 9Etapa 4: Criar uma máquina cliente ............................................................................................. 11Etapa 5: Criar um tópico ............................................................................................................ 12Etapa 6: Produzir e consumir dados ............................................................................................ 13Etapa 7: Visualizar métricas ....................................................................................................... 14Etapa 8 Excluir o cluster do ....................................................................................................... 15

Como ele funciona ............................................................................................................................ 16Criação de um cluster ............................................................................................................... 16

Tipos de agente ............................................................................................................... 16Criar um cluster usando aAWS Management Console ............................................................ 17Criar um cluster usando aAWS CLI ..................................................................................... 18Criar um cluster com uma configuração personalizada do MSK usando aAWS CLI ...................... 19Criar um cluster usando a API ............................................................................................ 19

Exclusão de um cluster ............................................................................................................. 19Excluir um cluster usando aAWS Management Console .......................................................... 19Excluir um cluster usando aAWS CLI ................................................................................... 20Excluir um cluster usando a API ......................................................................................... 20

Obter a string de conexão do Apache ZooKeeper .......................................................................... 20Obter a string de conexão do Apache ZooKeeper usando aAWS Management Console ................ 20Obter a string de conexão do Apache ZooKeeper usando aAWS CLI ........................................ 20Obter a string de conexão do Apache ZooKeeper usando a API ............................................... 21

Obter os agentes de bootstrap ................................................................................................... 21Obtendo os corretores de bootstrap usando oAWS Management Console .................................. 21Obtendo os corretores de bootstrap usando oAWS CLI .......................................................... 22Obter os agentes de bootstrap usando a API ........................................................................ 22

Listar clusters do ...................................................................................................................... 22Listando clusters usando oAWS Management Console ........................................................... 22Listando clusters usando oAWS CLI .................................................................................... 22Listar clusters usando a API ............................................................................................... 22

Dimensionar o armazenamento do agente .................................................................................... 23Escalabilidade automática .................................................................................................. 23Escalabilidade manual ....................................................................................................... 24

Atualizando o Tipo de Corretor ................................................................................................... 25Atualizando o tipo de corretor usando oAWS Management Console .......................................... 26Atualizando o tipo de corretor usando oAWS CLI .................................................................. 26Atualizando o tipo de broker usando a API ........................................................................... 27

Atualizar a configuração de um cluster ......................................................................................... 27Atualizar a configuração de um cluster usando aAWS CLI ....................................................... 27Atualizar a configuração de um cluster usando a API ............................................................. 29

Expandir um cluster .................................................................................................................. 29Expandir um cluster usando oAWS Management Console ....................................................... 29Expandir um cluster usando oAWS CLI ................................................................................ 29Expanda um cluster usando a API ...................................................................................... 30

Reinicializar um operador para um cluster .................................................................................... 31Reinicializar um operador usando o operadorAWS Management Console .................................. 31Reinicializar um operador usando o operadorAWS CLI ........................................................... 31Reinicializar um operador usando a API ............................................................................... 31

iii

Page 4: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Marcar um cluster ..................................................................................................................... 32Conceitos básicos de tags ................................................................................................. 32Monitoramento de custos com marcação .............................................................................. 33Restrições de tag .............................................................................................................. 33Atribuição de tags a recursos usando a API do Amazon MSK .................................................. 33

Configuração .................................................................................................................................... 35Configurações personalizadas ..................................................................................................... 35

Configuração dinâmica ...................................................................................................... 41Configuração em nível de tópicos ....................................................................................... 41States ............................................................................................................................. 41

Configuração padrão ................................................................................................................. 41Operações de configuração ........................................................................................................ 43

Criar configuração ............................................................................................................. 44Para atualizar uma configuração do MSK ............................................................................. 44Para excluir uma configuração do MSK ................................................................................ 45Para descrever uma configuração do MSK ........................................................................... 45Como descrever uma revisão da configuração do MSK .......................................................... 45Como listar todas as configurações do MSK em sua conta para a região atual ............................ 47

Segurança ....................................................................................................................................... 48Proteção de dados .................................................................................................................... 48

Criptografia ...................................................................................................................... 49Como começar a usar a criptografia? .................................................................................. 50

Autorização e autenticação de APIs do Amazon MSK .................................................................... 52Como o Amazon MSK funciona com o IAM .......................................................................... 52Exemplos de políticas baseadas em identidade ..................................................................... 55Funções vinculadas ao serviço ........................................................................................... 58Solução de problemas ....................................................................................................... 59

Autorização e autenticação de APIs do Apache Kafka .................................................................... 60Controle de acesso IAM .................................................................................................... 60Autenticação TLS mútuo .................................................................................................... 68Autenticação SASL/SCRAM ............................................................................................... 71ACLs do Apache Kafka ..................................................................................................... 75

Controlar o acesso ao Apache ZooKeeper .................................................................................... 76Para colocar os nós do Apache ZooKeeper em um grupo de segurança separado ....................... 76Usando a segurança TLS com o Apache ZooKeeper ............................................................. 77

Registro em log ........................................................................................................................ 78Logs do agente ................................................................................................................ 78Eventos do CloudTrail ....................................................................................................... 80

Validação de conformidade ........................................................................................................ 82Resiliência ............................................................................................................................... 83Segurança da infraestrutura ....................................................................................................... 83

Conexão a um cluster do MSK ........................................................................................................... 85Emparelhamento de Amazon VPC .............................................................................................. 85AWS Direct Connect ................................................................................................................. 85AWS Transit Gateway ............................................................................................................... 85Conexões VPN ......................................................................................................................... 85Proxies REST .......................................................................................................................... 85Conectividade de várias VPCs em múltiplas regiões ...................................................................... 86EC2-Classic ............................................................................................................................. 86Informações da porta ................................................................................................................ 86

Migração ......................................................................................................................................... 87Migração do cluster do Apache Kafka para o Amazon MSK ............................................................ 87Migração de um cluster do Amazon MSK para outro ...................................................................... 88Práticas recomendadas do MirrorMaker 1.0 .................................................................................. 88Vantagens do MirrorMaker 2.* .................................................................................................... 89

Monitorar um cluster ......................................................................................................................... 90Métricas do Amazon MSK para monitoramento com o CloudWatch .................................................. 90

iv

Page 5: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitoramento de nível DEFAULT ........................................................................................ 90Monitoramento de nível PER_BROKER .................................................................................. 94Monitoramento de nível PER_TOPIC_PER_BROKER ................................................................ 97Monitoramento de nível PER_TOPIC_PER_PARTITION .......................................................... 97

Visualizando métricas do Amazon MSK usando o CloudWatch ........................................................ 98Monitoramento de atraso do consumidor ...................................................................................... 98

Métricas do Consumer Lag para CloudWatch e para Monitoramento Aberto com Prometheus ........ 98Monitoramento de atraso do consumidor com o Burrow .......................................................... 99

Monitoramento aberto com o Prometheus ................................................................................... 102Criar um cluster do Amazon MSK com um monitoramento aberto habilitado ............................. 102Habilitar o monitoramento aberto para um cluster existente do Amazon MSK ............................ 103Configurar um host do Prometheus em uma Instância do Amazon EC2 ................................... 103Métricas do Prometeu ...................................................................................................... 105

Controle de cruzeiros ....................................................................................................................... 106Limites ........................................................................................................................................... 108Recursos ....................................................................................................................................... 109Versões do Apache Kafka ................................................................................................................ 110

Versões compatíveis do Apache Kafka ....................................................................................... 110Apache Kafka versão 2.8.0 ............................................................................................... 110Apache Kafka versão 2.7.1 ............................................................................................... 110Apache Kafka versão 2.6.2 ............................................................................................... 110Apache Kafka versão 2.7.0 ............................................................................................... 110Apache Kafka versão 2.6.1 ............................................................................................... 111Apache Kafka versão 2.6.0 ............................................................................................... 111Apache Kafka versão 2.5.1 ............................................................................................... 111Correção de bugs do Amazon MSK versão 2.4.1.1 .............................................................. 111Apache Kafka versão 2.4.1 (use 2.4.1.1 em vez disso) ......................................................... 112Apache Kafka versão 2.3.1 ............................................................................................... 112Apache Kafka versão 2.2.1 ............................................................................................... 112Apache Kafka versão 1.1.1 (apenas para clusters existentes) ................................................. 112

Atualizar a versão do Apache Kafka .......................................................................................... 112Solução de problemas ..................................................................................................................... 116

Grupo de consumidores preso emPreparingRebalanceestado ................................................... 116Protocolo de associação estática ....................................................................................... 116Identificar e reinicializar .................................................................................................... 117

Erro ao entregar logs de agente ao Amazon CloudWatch Logs ...................................................... 117Nenhum grupo de segurança padrão ......................................................................................... 117O cluster parece estar preso no estado CRIANDO ....................................................................... 118O estado do cluster é alterado de CRIANDO para COM FALHA ..................................................... 118O estado do cluster está ATIVO, mas os produtores não conseguem enviar dados ou os consumidoresnão conseguem receber dados ................................................................................................. 118AWS CLIA não reconhece o Amazon MSK ................................................................................. 118As partições ficam offline ou as réplicas estão fora de sincronia ..................................................... 118O espaço em disco está acabando ............................................................................................ 119A memória está acabando ........................................................................................................ 119O produtor recebe NotLeaderForPartitionException ...................................................................... 119Número de partições com replicação insuficiente (URP) maior que zero .......................................... 119Cluster tem tópicos chamados __amazon_msk_canary e __amazon_msk_canary_state ....................... 119Falha na replicação de partição ................................................................................................ 119Problemas de rede .................................................................................................................. 120

Cliente do Amazon EC2 e cluster MSK na mesma VPC ........................................................ 120Cliente do Amazon EC2 e cluster MSK em diferentes VPCs .................................................. 121Cliente no local ............................................................................................................... 121AWS Direct Connect ........................................................................................................ 121

Melhores práticas ............................................................................................................................ 122Dimensionar o cluster de modo correto ...................................................................................... 122

Número de partições por agente ...................................................................................... 122

v

Page 6: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Número de agentes por cluster ........................................................................................ 122Criar clusters altamente disponíveis ........................................................................................... 122Monitorar uso da CPU ............................................................................................................. 123Monitorar o espaço em disco .................................................................................................... 124Ajustar os parâmetros de retenção de dados .............................................................................. 124Não adicionar agentes que não são do MSK ............................................................................... 125Ativar a criptografia em trânsito ................................................................................................. 125Reatribuir partições ................................................................................................................. 125

Histórico do documento .................................................................................................................... 126AWSGlossário ................................................................................................................................ 129................................................................................................................................................... cxxx

vi

Page 7: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

O que é Amazon MSK?O Amazon Managed Streaming for Apache Kafka (Amazon MSK) é um serviço totalmente gerenciadoque permite criar e executar aplicativos que usam o Apache Kafka para processar dados em streaming.O Amazon MSK fornece as operações do plano de controle, como aquelas para criar, atualizar e excluirclusters. Ele permite usar operações do plano de dados do Apache Kafka, como aqueles para produzir econsumir dados. Ele executa versões de código aberto do Apache Kafka. Isso significa que aplicativos,ferramentas e plug-ins existentes de parceiros e da comunidade Apache Kafka são compatíveis sema necessidade de fazer alterações no código do aplicativo. É possível usar o Amazon MSK para criarclusters que usam qualquer uma das versões do Apache Kafka listadas emthe section called “Versõescompatíveis do Apache Kafka” (p. 110).

O diagrama a seguir fornece uma visão geral sobre como o Amazon MSK funciona.

1

Page 8: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

2

Page 9: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

O diagrama demonstra a interação entre os seguintes componentes:

• Nós de agente— Ao criar um cluster do Amazon MSK, especifique quantos nós de agente você desejaque o Amazon MSK crie em cada zona de disponibilidade. No exemplo de cluster mostrado nestediagrama, há um agente por zona de disponibilidade. Cada zona de disponibilidade tem sua própria sub-rede de nuvem privada virtual (VPC).

• Nós do ZooKeeperO Amazon MSK também cria os nós do Apache ZooKeeper para você. O ApacheZooKeeper é um servidor de código aberto que permite uma coordenação distribuída altamenteconfiável.

• Produtores, consumidores e criadores de tópicosO Amazon MSK permite usar operações do plano dedados do Apache Kafka para criar tópicos e produzir e consumir dados.

• Operações de clusterVocê pode usar oAWS Management Console, oAWS Command LineInterface(AWS CLI) ou as APIs no SDK para executar operações do plano de controle. Por exemplo,é possível criar ou excluir um cluster do Amazon MSK, listar todos os clusters em uma conta, exibir aspropriedades de um cluster e atualizar o número e o tipo de agente em um cluster.

O Amazon MSK detecta e recupera automaticamente dos cenários de falha mais comuns para clusterspara que os aplicativos de produtor e consumidor possam continuar as operações de gravação e leituracom o menor impacto. Quando o Amazon MSK detecta uma falha de agente, ele mitigará a falha ousubstituirá o agente não íntegro ou inacessível por um novo. Além disso, sempre que possível, ele reutilizao armazenamento do agente mais antigo para reduzir os dados que o Apache Kafka precisa replicar.Seu impacto na disponibilidade é limitado ao tempo necessário para o Amazon MSK concluir a detecçãoe a recuperação. Após uma recuperação, os aplicativos de produtor e consumidor podem continuar secomunicando com os mesmos endereços IP do agente usados antes da falha.

Para começar a usar o Amazon MSK, consulteConceitos básicos (p. 5).

Para ver as operações do plano de controle disponíveis pelo Amazon MSK, consulte aReferência da APIdo Amazon MSK.

Depois de criar um cluster, será possível usar o Amazon CloudWatch para monitorá-lo. Para obter maisinformações sobre como monitorar o cluster usando métricas, consulte Monitorar um cluster (p. 90).

3

Page 10: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Cadastre-se na AWS

Configurar o Amazon MSKAntes de usar o Amazon MSK pela primeira vez, conclua as seguintes tarefas.

Tarefas• Cadastre-se na AWS (p. 4)• Fazer download de bibliotecas e ferramentas (p. 4)

Cadastre-se na AWSAo se cadastrar naAWSSua conta da Amazon Web Services será automaticamente cadastrada em todosos serviços daAWS, incluindo o Amazon MSK. Você será cobrado apenas pelos serviços que usar.

Se já tiver uma conta da AWS, passe para a próxima tarefa. Se você ainda não possuir uma conta daAWS, use o procedimento a seguir para criar uma.

Para se cadastrar em uma conta da Amazon Web Services

1. Abra https://portal.aws.amazon.com/billing/signup.2. Siga as instruções online.

Parte do procedimento de cadastro envolve uma chamada telefônica e a digitação de um código deverificação usando o teclado do telefone.

Fazer download de bibliotecas e ferramentasAs seguintes bibliotecas e ferramentas podem ajudar você a trabalhar com o Amazon MSK:

• OAWS Command Line Interface(AWS CLI)O oferece suporte ao Amazon MSK. OAWS CLIA permitecontrolar vários Amazon Web Services na linha de comando e automatizá-los por meio de scripts.Atualize oAWS CLIPara a versão mais recente, a fim de garantir que ela seja compatível com o AmazonMSK. Para obter instruções detalhadas sobre como atualizar oAWS CLI, consulteInstalar aAWSCommand Line Interface.

• OReferência de API Amazon Managed Streaming for KafkaDocumenta as operações de APIcompatíveis com o Amazon MSK.

• Os Amazon Web Services SDKs forGo,Java,JavaScript,.NET,Node.js,PHP,Python, eRubyincluemsuporte e amostras do Amazon MSK.

4

Page 11: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Etapa 1: Criar uma VPC

Conceitos básicos do uso do AmazonMSK

Esta seção mostra um exemplo de como é possível criar um cluster do MSK, produzir e consumir dadose monitorar a integridade do cluster usando métricas. Este exemplo não representa todas as opções quevocê pode escolher ao criar um cluster do MSK. Em diferentes partes deste tutorial, escolhemos as opçõespadrão para facilitar. Isso não significa que são as únicas opções que funcionam para configurar um clusterdo MSK ou instâncias do cliente.

É um tutorial passo a passo que usa o AWS Management Console e a AWS CLI. Se preferir seguir umaabordagem diferente, é possível executar os tipos de operações da AWS descritas neste tutorial usandosomente o AWS Management Console, somente a AWS CLI ou a API da AWS ou uma combinação dostrês ambientes. Como alternativa, você pode usar oAWS CloudFormationpara configurar um cluster MSK.Por algum exemploAWS CloudFormationmodelos, consulteExemplos do Amazon MSK CloudFormation.Para saber mais sobre o uso do Amazon MSK comAWS CloudFormationmodelos, consulte AWSSoluçãode streaming de dados para Amazon MSK: OAWSA solução de streaming de dados para o Amazon MSKforneceAWS CloudFormationmodelos em que os dados fluem através de produtores, armazenamento destreaming, consumidores e destinos.

Prerequisites

Antes de começar, verifique se você tem uma conta da Amazon Web Services e se você tem aAWSCommand Line Interface(AWS CLI) instalado no computador. Para obter mais informações sobre essespré-requisitos, consulte Configuração (p. 4).

Important

Verifique se você tem a versão mais recente da AWS CLI. Versões anteriores podem não ter afuncionalidade completa do Amazon MSK.

Tópicos• Etapa 1: Criar uma VPC para o cluster do MSK (p. 5)• Etapa 2: Ativar a alta disponibilidade e a tolerância a falhas (p. 8)• Etapa 3: Criar um cluster do Amazon MSK (p. 9)• Etapa 4: Criar uma máquina cliente (p. 11)• Etapa 5: Criar um tópico (p. 12)• Etapa 6: Produzir e consumir dados (p. 13)• Etapa 7: Use o Amazon CloudWatch para visualizar métricas do Amazon MSK (p. 14)• Etapa 8 Excluir o cluster do Amazon MSK (p. 15)

Etapa 1: Criar uma VPC para o cluster do MSKNa primeira etapa deConceitos básicos do uso do Amazon MSK (p. 5), você usará oAmazon VirtualPrivate Cloud ConsolePara criar uma Amazon Virtual Private Cloud (Amazon VPC). Criar um cluster doMSK nesta VPC em uma etapa posterior.

5

Page 12: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Etapa 1: Criar uma VPC

Para criar uma VPC

1. Faça login no AWS Management Console e abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.

2. Selecione Launch VPC Wizard (Iniciar o assistente de VPC).

3. SelecioneSelectpara aceitar a configuração padrão da Amazon VPC chamadaVPC com uma únicasub-rede pública.

6

Page 13: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Etapa 1: Criar uma VPC

4. Em VPC name (Nome da VPC), insira AWSKafkaTutorialVPC. Se você copiar este nome e o colarno console, exclua todos os espaços em branco no campo de texto antes do nome.

5. Em Availability Zone (Zona de disponibilidade), escolha us-east-1a.6. Em Subnet name (Nome da sub-rede), insira AWSKafkaTutorialSubnet-1. Se você copiar este

nome e o colar no console, exclua todos os espaços em branco no campo de texto antes do nome.7. Escolha Create VPC (Criar VPC) e OK.8. Na lista de VPCs, localize AWSKafkaTutorialVPC e copie o ID da coluna VPC ID (ID da VPC). Salve

esse ID em algum lugar porque você precisará dele em algumas das etapas a seguir.

Próxima etapa

Etapa 2: Ativar a alta disponibilidade e a tolerância a falhas (p. 8)

7

Page 14: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Etapa 2: Ativar a alta disponibilidade e a tolerância a falhas

Etapa 2: Ativar a alta disponibilidade e a tolerânciaa falhas

Nesta etapa deConceitos básicos do uso do Amazon MSK (p. 5), você habilitará a alta disponibilidadee a tolerância a falhas. Para fazer isso, adicione duas sub-redes à VPC criada com uma sub-rede naetapa anterior. Depois que concluir esta etapa, você terá três sub-redes em três zonas de disponibilidadediferentes.

Como adicionar sub-redes à sua VPC

1. Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.2. No painel de navegação, escolha Subnets (Sub-redes).3. Na lista de sub-redes, localize AWSKafkaTutorialSubnet-1 e localize a coluna chamada Route table

(Tabela de rotas). Copie o valor associado a AWSKafkaTutorialSubnet-1 nessa coluna e salve-o paramais tarde.

4. Escolha Create Subnet (Criar sub-rede).5. Para o Name tag (Nome da tag), insira AWSKafkaTutorialSubnet-2. Se você copiar este nome e o

colar no console, exclua todos os espaços em branco no campo de texto antes do nome.6. Em VPC, escolha AWSKafkaTutorialVPC.7. Em Availability Zone (Zona de disponibilidade), escolha us-east-1b.8. Em IPv4 CIDR block (Bloco CIDR IPv4), insira 10.0.1.0/24.9. Selecione Create (Criar) e, depois, Close (Fechar).10. Escolha AWSKafkaTutorialSubnet-2 na lista de sub-redes, marcando a caixa de seleção ao lado dela.

Certifique-se de que nenhuma outra caixa de seleção na lista esteja marcada.11. Na visualização da sub-rede próxima à parte inferior da página, escolha a guia Route Table (Tabela de

rotas) e escolha Edit route table association (Editar associação da tabela de rotas).

8

Page 15: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Etapa 3: Criar um cluster

12. Na lista Route Table ID (ID da tabela de rotas) escolha a tabela de rotas com o valor que você copiouanteriormente neste procedimento.

13. Escolha Save (Salvar) e Close (Fechar).14. Repita esse procedimento para criar outra sub-rede com o nome AWSKafkaTutorialSubnet-3, na

zona de disponibilidade us-east-1c e com o bloco CIDR IPv4 definido como 10.0.2.0/24. Se vocêcopiar o nome da sub-rede e o colar no console, exclua todos os espaços em branco no campo detexto antes do nome.

15. Edite a tabela de rotas AWSKafkaTutorialSubnet-3 para garantir que ela tenha a mesma tabelade rotas usada para AWSKafkaTutorialSubnet-1 e AWSKafkaTutorialSubnet-2.

Próxima etapa

Etapa 3: Criar um cluster do Amazon MSK (p. 9)

Etapa 3: Criar um cluster do Amazon MSKNesta etapa deConceitos básicos do uso do Amazon MSK (p. 5), você criará um cluster do AmazonMSK na VPC.

Para criar um cluster do Amazon MSK usando oAWS CLI

1. Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.2. No painel de navegação, escolha Subnets (Sub-redes), e copie os IDs de sub-rede das três sub-

redes criadas anteriormente. Salve esses IDs porque você precisará deles posteriormente nesteprocedimento.

3. No painel de navegação, selecione Grupos de segurança. Depois, na tabela de grupos desegurança, localize o grupo para o qual a coluna VPC ID (ID da VPC) tem o ID que você salvou

9

Page 16: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Etapa 3: Criar um cluster

para AWSKafkaTutorialVPC. Copie o ID desse grupo de segurança e salve-o, pois precisará deleposteriormente nesse procedimento.

4. Copie o seguinte JSON e salve-o em um arquivo. Nomeie o arquivo clusterinfo.json.

{ "BrokerNodeGroupInfo": { "BrokerAZDistribution": "DEFAULT", "InstanceType": "kafka.m5.large", "ClientSubnets": [ "AWSKafkaTutorialSubnet-1 Subnet ID", "AWSKafkaTutorialSubnet-2 Subnet ID", "AWSKafkaTutorialSubnet-3 Subnet ID" ], "SecurityGroups": [ "AWSKafkaTutorialVPC Security Group ID" ] }, "ClusterName": "AWSKafkaTutorialCluster", "EncryptionInfo": { "EncryptionAtRest": { "DataVolumeKMSKeyId": "your-CMK" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" } }, "EnhancedMonitoring": "PER_TOPIC_PER_BROKER", "KafkaVersion": "2.2.1", "NumberOfBrokerNodes": 3}

5. No arquivo clusterinfo.json, substitua os espaços reservados para os três IDs das sub-redes e oID do grupo de segurança pelos valores salvos nas etapas anteriores.

6. Em clusterinfo.json, substitua a sua CMK por uma CMK gerenciada pelo cliente. Você tambémpode remover oEncryptionAtReste deixe que o Amazon MSK crie um CMK e use-o em seu nome.ConfigurarInClusterparatrueSignifica que você deseja que o Amazon MSK criptografe seus dadosà medida que eles viajam entre agentes dentro do cluster. Em ClientBroker, é possível escolheruma das seguintes configurações: TLS, TLS_PLAINTEXT ou PLAINTEXT. Neste exercício, usamosTLS para indicar que queremos que os dados sejam criptografados à medida que viajam entre clientese agentes. Para obter mais informações sobre as configurações de criptografia, consulte the sectioncalled “Criptografia” (p. 49).

7. Atualize oAWS CLIPara garantir que ele tenha suporte para o Amazon MSK. Para obter instruçõesdetalhadas sobre como atualizar oAWS CLI, consulteInstalar aAWS Command Line Interface.

8. Execute o seguinte comando da AWS CLI no diretório no qual salvou o arquivo clusterinfo.json.

aws kafka create-cluster --cli-input-json fileb://clusterinfo.json

A saída do comando é semelhante ao JSON a seguir:

{ "ClusterArn": "...", "ClusterName": "AWSKafkaTutorialCluster", "State": "CREATING"}

9. Salve o valor da chave ClusterArn porque você precisará dela mais tarde.

10

Page 17: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Etapa 4: Criar uma máquina cliente

Important

Certifique-se de salvar ClusterArn antes de prosseguir.

Próxima etapa

Etapa 4: Criar uma máquina cliente (p. 11)

Etapa 4: Criar uma máquina clienteNesta etapa deConceitos básicos do uso do Amazon MSK (p. 5), você criará uma máquinacliente. Use essa máquina cliente para criar um tópico que produza e consuma dados. Para simplificar,colocaremos essa máquina cliente na mesma VPC do cluster do Amazon MSK. Mas uma máquina clientenão precisa estar na mesma VPC do cluster.

Como criar uma máquina cliente

1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.2. Escolha Launch Instance (Executar instância).3. Escolha Select (Selecionar) para criar uma instância do Amazon Linux 2 AMI (HVM), SSD Volume

Type (AMI do Amazon Linux 2 (HVM), tipo de volume SSD).4. Escolha o tipo de instância t2.xlarge marcando a caixa de seleção ao lado dela.5. Selecione Next (Próximo): Configurar os detalhes da instância.6. Na lista Network (Rede) escolha AWSKafkaTutorialVPC.7. Na lista Auto-assign Public IP (Atribuir IP público automaticamente), escolha Enable (Habilitar).8. No menu próximo ao topo, selecione5. Adicionar tags.9. Escolha Add Tag.10. Insira Name para a Key (Chave) e AWSKafkaTutorialClient para o Value (Valor).11. Escolha Review and Launch e, em seguida, selecione Launch.12. Escolha Create a new key pair (Criar um novo par de chaves), insira MSKKeyPair em Key pair name

(Nome do par de chaves) e escolha Download Key Pair (Fazer download do par de chaves). Comoalternativa, use um par de chaves existente se preferir.

13. Leia a confirmação, marque a caixa de seleção ao lado dela e escolha Launch Instances (Executarinstâncias).

14. Escolha View Instances (Exibir instâncias). Na coluna Security Groups (Grupos de segurança) escolhao grupo de segurança que está associado à instância AWSKafkaTutorialClient.

15. Copie o valor de Group ID (ID do grupo) (e não o nome do grupo) associado ao grupo de segurança eguarde-o para mais tarde.

16. Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.17. No painel de navegação, selecione Grupos de segurança. NoID DA VPCColuna de segurança dos

grupos de segurança, localize a linha que contém o ID que você salvou para oAwskafKatutorialVPC,e onde oDescriçãocoluna tem o valordefault VPC security group. Escolha esta linha marcando a caixade seleção na primeira coluna.

18. NoRegras de entrada, selecioneEditar regras de entrada.19. Escolha Adicionar regra.20. Na nova regra, escolha All traffic (Todo o tráfego) na coluna Type (Tipo). No segundo campo da

coluna Source (Origem) insira o ID do grupo de segurança da máquina cliente. Este é o ID do grupoque você salvou anteriormente.

21. Escolha Save rules (Salvar regras).

11

Page 18: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Etapa 5: Criar um tópico

Próxima etapa

Etapa 5: Criar um tópico (p. 12)

Etapa 5: Criar um tópicoNesta etapa deConceitos básicos do uso do Amazon MSK (p. 5), você instalará bibliotecas eferramentas do cliente do Apache Kafka na máquina cliente e criará um tópico.

Como criar um tópico na máquina cliente

1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.2. No painel de navegação, escolha Instances (Instâncias) e depois escolha AWSKafkaTutorialClient

marcando a caixa de seleção ao lado dele.3. Escolha Actions (Ações) e Connect (Conectar-se). Siga as instruções para se conectar à máquina

cliente AWSKafkaTutorialClient.4. Instale o Java na máquina cliente executando o seguinte comando:

sudo yum install java-1.8.0

5. Execute o comando a seguir para fazer download do Apache Kafka.

wget https://archive.apache.org/dist/kafka/2.2.1/kafka_2.12-2.2.1.tgz

Note

Se quiser usar um local de espelhamento diferente do usado neste comando, você poderáescolher um local diferente no site do Apache.

6. Execute o comando a seguir no diretório onde você fez download do arquivo TAR na etapa anterior.

tar -xzf kafka_2.12-2.2.1.tgz

7. Acesse o diretório kafka_2.12-2.2.1.8. A criação do cluster pode levar alguns minutos. Para descobrir se o cluster criado está pronto, execute

o comando a seguir, substituindo o ClusterArn pelo nome de recurso da Amazon (ARN) obtido nofinal de the section called “Etapa 3: Criar um cluster” (p. 9).

aws kafka describe-cluster --region us-east-1 --cluster-arn "ClusterArn"

O resultado da execução desse comando se parece com o seguinte JSON:

{ "ClusterInfo": { "BrokerNodeGroupInfo": { "BrokerAZDistribution": "DEFAULT", "ClientSubnets": [ "subnet-0d44a1567c2ce409a", "subnet-051201cac65561565", "subnet-08b4eceb2bd3bd8c2" ], "InstanceType": "kafka.m5.large", "SecurityGroups": [ "sg-041e78b0a8ba7f834" ], "StorageInfo": {

12

Page 19: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorEtapa 6: Produzir e consumir dados

"EbsStorageInfo": { "VolumeSize": 1000 } } }, "ClusterArn": "...", "ClusterName": "AWSKafkaTutorialCluster", "CreationTime": "2018-11-06T01:36:57.451Z", "CurrentBrokerSoftwareInfo": { "KafkaVersion": "2.2.1" }, "CurrentVersion": "K3UN6WX5RRO2AG", "EncryptionInfo": { "EncryptionAtRest": { "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:012345678901:key/a7de6539-7d2e-4e71-a279-aaaa5555878" } }, "EnhancedMonitoring": "DEFAULT", "NumberOfBrokerNodes": 3, "State": "CREATING" }}

Se a saída do comando mostrar que o estado do cluster ainda é CREATING, aguarde alguns minutose execute o comando novamente. Continue executando esse comando depois de aguardar algunsminutos até que o estado mude para ACTIVE. Quando o estado for ACTIVE, o resultado dessecomando describe-cluster incluirá uma chave adicional chamada ZookeeperConnectString.Copie todo o valor associado a essa chave porque você precisará dele para criar um tópico do ApacheKafka no comando a seguir.

9. Execute o comando a seguir, substituindo ZookeeperConnectString pelo valor que você salvoudepois de executar o comando describe-cluster.

bin/kafka-topics.sh --create --zookeeper ZookeeperConnectString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopic

Se o comando tiver êxito, a seguinte mensagem será exibida: Created topicAWSKafkaTutorialTopic.

Próxima etapa

Etapa 6: Produzir e consumir dados (p. 13)

Etapa 6: Produzir e consumir dadosNesta etapa deConceitos básicos do uso do Amazon MSK (p. 5), você produzirá e consumirá dados.

Como produzir e consumir mensagens

1. Neste exemplo, o armazenamento de confiança da JVM é usado para se comunicar com o clusterdo MSK. Para fazer isso, crie primeiramente uma pasta chamada /tmp na máquina cliente. Depois,acesse a pasta bin da instalação do Apache Kafka e execute o comando, substituindo JDKFolderpelo nome da pasta JDK. Por exemplo, o nome da pasta JDK na instância pode ser java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64.

cp /usr/lib/jvm/JDKFolder/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks

13

Page 20: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Etapa 7: Visualizar métricas

2. Enquanto ainda estiver na pasta bin da instalação do Apache Kafka na máquina cliente, crie umarquivo de texto chamado client.properties com o conteúdo a seguir.

security.protocol=SSLssl.truststore.location=/tmp/kafka.client.truststore.jks

3. Execute o comando a seguir, substituindo o ClusterArn pelo nome de recurso da Amazon (ARN)obtido no final de the section called “Etapa 3: Criar um cluster” (p. 9).

aws kafka get-bootstrap-brokers --region us-east-1 --cluster-arn ClusterArn

No resultado JSON do comando, salve o valor associado à string chamada"BootstrapBrokerStringTls" porque você precisará dele nos comandos a seguir.

4. Execute o comando nabinpasta, substituindoBootstrapBrokerStringTlsCom o valor obtidoquando executou o comando anterior.

./kafka-console-producer.sh --broker-list BootstrapBrokerStringTls --producer.config client.properties --topic AWSKafkaTutorialTopic

5. Insira a mensagem que desejar e pressione Enter. Repita esta etapa duas ou três vezes. Toda vezque você inserir uma linha e pressionar Enter, essa linha será enviada para o cluster do Apache Kafkacomo uma mensagem separada.

6. Mantenha a conexão com a máquina cliente aberta e abra uma segunda conexão separada com essecomputador em uma nova janela.

7. No comando a seguir, substituaBootstrapBrokerStringTlsCom o valor que você salvouanteriormente. Depois, acesse a pasta bin e execute o comando usando a segunda conexão com amáquina cliente.

./kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringTls --consumer.config client.properties --topic AWSKafkaTutorialTopic --from-beginning

Você começará a ver as mensagens inseridas anteriormente quando usou o comando do produtor doconsole. Essas mensagens são criptografadas por TLS em trânsito.

8. Insira mais mensagens na janela do produtor e observe-as aparecerem na janela do consumidor.

Próxima etapa

Etapa 7: Use o Amazon CloudWatch para visualizar métricas do Amazon MSK (p. 14)

Etapa 7: Use o Amazon CloudWatch para visualizarmétricas do Amazon MSK

Nesta etapa deConceitos básicos do uso do Amazon MSK (p. 5), veja as métricas do Amazon MSK noAmazon CloudWatch.

Para visualizar métricas do Amazon MSK no CloudWatch

1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.2. No painel de navegação, selecione Metrics (Métricas).3. Escolha a guia All metrics (Todas as métricas) e escolha AWS/Kafka.

14

Page 21: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Etapa 8 Excluir o cluster do

4. Para visualizar métricas no nível de agente, escolha Broker ID, Cluster Name (ID do agente, Nome docluster). Para métricas no nível de cluster, escolha Cluster Name (Nome do cluster).

5. (Opcional) No painel gráfico, selecione uma estatística e um período e, em seguida, crie um alarme doCloudWatch usando essas configurações.

Próxima etapa

Etapa 8 Excluir o cluster do Amazon MSK (p. 15)

Etapa 8 Excluir o cluster do Amazon MSKNa etapa final deConceitos básicos do uso do Amazon MSK (p. 5), você exclui o cluster MSK que vocêcriou noEtapa 3: Criar um cluster do Amazon MSK (p. 9).

Para excluir o cluster do Amazon MSK usando oAWS CLI

1. Execute o comando a seguir no computador em que a AWS CLI está instalada.

aws kafka list-clusters --region us-east-1

2. Na saída do comando list-clusters, procure o nome de recurso da Amazon (ARN) do cluster quecorresponde ao cluster que você deseja excluir. Copie esse ARN.

3. Execute o comando a seguir, substituindo ClusterArn pelo ARN obtido quando você executou ocomando anterior.

aws kafka delete-cluster --region us-east-1 --cluster-arn ClusterArn

15

Page 22: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Criação de um cluster

Amazon MSK: Como ele funcionaUm cluster do Amazon MSK é o recurso principal do Amazon MSK que você pode criar em sua conta. Ostópicos nesta seção descrevem como realizar operações comuns do Amazon MSK. Para obter uma listade todas as operações que você pode realizar em um cluster do MSK, consulte:

• O AWS Management Console• OReferência de API do Amazon MSK• OReferência de comandos da Amazon MSK

Tópicos• Criando um cluster do Amazon MSK (p. 16)• Excluindo um cluster do Amazon MSK (p. 19)• Obter a string de conexão do Apache ZooKeeper para um cluster do Amazon MSK (p. 20)• Obtendo os corretores de bootstrap para um cluster do Amazon MSK (p. 21)• Listagem de clusters do Amazon MSK (p. 22)• Dimensionamento do armazenamento de agente (p. 23)• Atualizando o tipo de corretor (p. 25)• Atualização da configuração de um cluster do Amazon MSK (p. 27)• Expansão de um cluster do Amazon MSK (p. 29)• Reinicializar um operador para um cluster do Amazon MSK (p. 31)• Marcando um cluster do Amazon MSK (p. 32)

Criando um cluster do Amazon MSKAntes de criar um cluster do Amazon MSK, você precisa ter uma VPC e configurar sub-redes dentrodessa VPC. Você precisa de duas sub-redes em duas Zonas de disponibilidade diferentes na regiãoOeste dos EUA (Norte da Califórnia). Em todas as outras regiões em que o Amazon MSK estejadisponível, especifique duas ou três sub-redes. As suas sub-redes devem estar em diferentes zonas dedisponibilidade. Quando você cria um cluster, o Amazon MSK distribui os nós de agente uniformementesobre as sub-redes especificadas. Para obter um exemplo de como configurar uma VPC e sub-redes paraum cluster MSK, consulte??? (p. 5)e??? (p. 8).

Tipos de agenteQuando você cria um cluster do Amazon MSK, especifique o tipo de agentes que deseja que ele tenha. OAmazon MSK oferece suporte aos seguintes tipos de corretora:

• kafka.t3.small• kafka.m5.large, kafkafka.m5.2xlarge, kafkafka.m5.4xlarge, kafkafkafkafkafka.m5.2xlarge,

kafkafka.m5.4xlarge, kafkafka.m5.4xlarge, kafkafkafkafkafkafkafkafkafkafkafkafk

Os agentes M5 têm desempenho de taxa de transferência de linha de base superior aos agentes T3 e sãorecomendados para cargas de trabalho de produção. Os agentes M5 também podem ter mais partiçõespor agente do que os agentes T3. Use os agentes M5 se você estiver executando cargas de trabalho denível de produção maiores ou se exigir um número maior de partições. Para saber mais sobre os tipos deinstância M5, consulte Instâncias M5 do Amazon EC2.

16

Page 23: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Criar um cluster usando aAWS Management Console

Os agentes T3 têm a capacidade de usar créditos de CPU para impulsionar temporariamente odesempenho. Use agentes T3 para desenvolvimento de baixo custo, se você estiver testando cargasde trabalho de streaming pequenas a médias ou se tiver cargas de trabalho de streaming de baixa taxade transferência que apresentam picos temporários na taxa de transferência. Recomendamos que vocêexecute um teste de prova de conceito para determinar se os agentes T3 são suficientes para carga detrabalho crítica ou de produção. Para saber mais sobre os tipos de instância T3, consulte Instâncias T3 doAmazon EC2.

Para obter mais informações sobre como escolher tipos de agente, consultethe section called“Dimensionar o cluster de modo correto” (p. 122).

Criar um cluster usando aAWS Management Console

1. Abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/.2. Selecione Create cluster (Criar cluster).3. Especifique um nome para o cluster.4. Na lista de VPCs, escolha a VPC que você deseja usar para o cluster. Você também pode especificar

qual versão do Apache Kafka você deseja que o Amazon MSK use para criar o cluster.5. Especifique duas sub-redes se estiver usando uma das seguintes regiões: América do Sul (São

Paulo), Canadá (Central) e Oeste dos EUA (Norte da Califórnia). Em outras regiões em que o AmazonMSK esteja disponível, especifique duas ou três sub-redes. As sub-redes especificadas devem estarem zonas de disponibilidade diferentes.

6. Escolha o tipo de configuração desejada. Para obter informações sobre configurações do MSK,consulte Configuração (p. 35).

7. Especifique o tipo e o número de agentes que você deseja que o MSK crie em cada zona dedisponibilidade. O mínimo é um agente por zona de disponibilidade e o máximo é de 30 agentes porcluster.

8. (Opcional) Atribua tags ao cluster. As tags são opcionais. Para mais informações, consulte the sectioncalled “Marcar um cluster” (p. 32).

9. Você pode ajustar o volume de armazenamento por agente. Depois de criar o cluster, você podeaumentar o volume de armazenamento por agente, mas não pode reduzi-lo.

10. Escolha as configurações desejadas para criptografar os dados em trânsito. Por padrão, o MSKcriptografa os dados conforme eles transitam entre agentes em um cluster. Se você não quisercriptografar os dados enquanto eles transitam entre agentes, desmarque a caixa de seleção Enableencryption within the cluster (Habilitar a criptografia dentro do cluster).

11. Escolha uma das três configurações para criptografar dados conforme eles transitam entre clientes eagentes. Para mais informações, consulte the section called “Criptografia em trânsito” (p. 49).

12. Escolha o tipo de CMK que você deseja usar para criptografar dados em repouso. Para maisinformações, consulte the section called “Criptografia noRest” (p. 49).

13. Para autenticar a identidade de clientes, escolha Enable TLS client authentication (Habilitar aautenticação de cliente TLS) selecionando a caixa ao lado dela. Para obter mais informações sobre aautenticação, consulte the section called “Autenticação TLS mútuo” (p. 68).

14. Escolha o nível de monitoramento desejado. Isso determina o conjunto de métricas que você obtém.Para mais informações, consulte Monitorar um cluster (p. 90).

15. (Opcional) EscolhaConfigurações avançadase, depois, escolhaPersonalizar configurações. Vocêpode especificar um ou mais grupos de segurança para os quais deseja conceder acesso aocluster (por exemplo, os grupos de segurança das máquinas cliente). Se você especificar grupos desegurança que foram compartilhados com você, deverá garantir que você tenha permissões paraeles. Especificamente, você precisa da permissão ec2:DescribeSecurityGroups. Para ver umexemplo, consulteAmazon EC2: Permite o gerenciamento de security groups do EC2 associados auma VPC especifica de forma programática e no console.

16. Selecione Create cluster (Criar cluster).

17

Page 24: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Criar um cluster usando aAWS CLI

Criar um cluster usando aAWS CLI1. Copie o seguinte JSON e salve-o em um arquivo. Nomeie o arquivo brokernodegroupinfo.json.

Substitua os IDs de sub-rede no JSON pelos valores que correspondem às suas sub-redes. As sub-redes devem estar em zonas de disponibilidade diferentes. Substitua “Security-Group-ID” peloID de um ou mais grupos de segurança da VPC cliente. Os clientes associados a esses grupos desegurança têm acesso ao cluster. Se você especificar grupos de segurança que foram compartilhadoscom você, deverá garantir que você tenha permissões para eles. Especificamente, você precisa dapermissão ec2:DescribeSecurityGroups. Para ver um exemplo, consulteAmazon EC2: Permiteo gerenciamento de security groups do EC2 associados a uma VPC especifica de forma programáticae no console. Finalmente, salve o arquivo JSON atualizado no computador onde você tem a AWS CLIinstalada.

{ "InstanceType": "kafka.m5.large", "ClientSubnets": [ "Subnet-1-ID", "Subnet-2-ID" ], "SecurityGroups": [ "Security-Group-ID" ]}

Important

Especifique exatamente duas sub-redes se estiver usando uma das seguintes regiões:América do Sul (São Paulo), Canadá (Central) e Oeste dos EUA (Norte da Califórnia). Paraoutras regiões em que o Amazon MSK esteja disponível, especifique duas ou três sub-redes.As sub-redes especificadas devem estar em zonas de disponibilidade distintas. Quando vocêcria um cluster, o Amazon MSK distribui os nós de agente uniformemente pelas sub-redesespecificadas.

2. Execute o seguinte comando da AWS CLI no diretório em que você salvou o arquivobrokernodegroupinfo.json, substituindo “Your-Cluster-Name” por um nome de suaescolha. Para “Monitoring-Level”, você pode especificar um dos três valores a seguir: DEFAULT,PER_BROKER ou PER_TOPIC_PER_BROKER. Para obter informações sobre esses três níveisdiferentes de monitoramento, consulte ??? (p. 90). O parâmetro enhanced-monitoring éopcional. Se não especificá-lo no comando create-cluster, você obterá o nível de monitoramentoDEFAULT.

aws kafka create-cluster --cluster-name "Your-Cluster-Name" --broker-node-group-info fileb://brokernodegroupinfo.json --kafka-version "2.2.1" --number-of-broker-nodes 3 --enhanced-monitoring "Monitoring-Level"

A saída do comando é semelhante ao JSON a seguir:

{ "ClusterArn": "...", "ClusterName": "AWSKafkaTutorialCluster", "State": "CREATING"}

Note

O comando create-cluster pode retornar um erro informando que uma ou mais sub-redes pertencem a zonas de disponibilidade que não têm suporte. Quando isso acontece, o

18

Page 25: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Criar um cluster com uma configuraçãopersonalizada do MSK usando aAWS CLI

erro indica as zonas de disponibilidade que não têm suporte. Crie sub-redes que não usemas zonas de disponibilidade sem suporte e tente o comando create-cluster novamente.

3. Salve o valor da chave ClusterArn porque você precisará dele para executar outras ações nocluster.

Criar um cluster com uma configuração personalizadado MSK usando aAWS CLI

Para obter informações sobre configurações personalizadas do MSK e como criá-las, consulteConfiguração (p. 35).

1. Salve o seguinte JSON em um arquivo, substituindo configuration-arn pelo ARN da configuraçãoque você deseja usar para criar o cluster.

{ "Arn": configuration-arn, "Revision": 1}

2. Execute o comando create-cluster e use a opção configuration-info para apontar para oarquivo JSON que você salvou na etapa anterior. Veja um exemplo a seguir.

aws kafka create-cluster --cluster-name ExampleClusterName --broker-node-group-info fileb://brokernodegroupinfo.json --kafka-version "1.1.1" --number-of-broker-nodes 3 --enhanced-monitoring PER_TOPIC_PER_BROKER --configuration-info file://configuration.json

Veja a seguir um exemplo de uma resposta bem-sucedida após a execução desse comando.

{ "ClusterArn": "arn:aws:kafka:us-east-1:123456789012:cluster/CustomConfigExampleCluster/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2", "ClusterName": "CustomConfigExampleCluster", "State": "CREATING"}

Criar um cluster usando a APIPara criar um cluster usando a API, consulte CreateCluster.

Excluindo um cluster do Amazon MSKExcluir um cluster usando aAWS ManagementConsole1. Abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/.2. Escolha o cluster MSK que deseja excluir marcando a caixa de seleção ao lado dele.3. SelecioneExcluire confirme a exclusão.

19

Page 26: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorExcluir um cluster usando aAWS CLI

Excluir um cluster usando aAWS CLIExecute o seguinte comando, substituindo ClusterArn pelo nome de recurso da Amazon (ARN) quevocê obteve quando criou o cluster. Se você não tiver o ARN do cluster, poderá encontrá-lo listando todosos clusters. Para mais informações, consulte the section called “Listar clusters do ” (p. 22).

aws kafka delete-cluster --cluster-arn ClusterArn

Excluir um cluster usando a APIPara excluir um cluster usando a API, consulte DeleteCluster.

Obter a string de conexão do Apache ZooKeeperpara um cluster do Amazon MSK

Obter a string de conexão do Apache ZooKeeperusando aAWS Management Console1. Abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/.2. A tabela mostra todos os clusters da região atual nesta conta. Escolha o nome de um cluster para

visualizar sua descrição.3. NoResumo do cluster, escolhaVer informações do cliente. Isso mostra os agentes de bootstrap, bem

como a string de conexão do Apache ZooKeeper.

Obter a string de conexão do Apache ZooKeeperusando aAWS CLI1. Se não souber o nome de recurso da Amazon (ARN) do cluster, você poderá encontrá-lo listando

todos os clusters em sua conta. Para mais informações, consulte the section called “Listar clusters do” (p. 22).

2. Para obter a string de conexão do Apache ZooKeeper, juntamente com outras informações sobre ocluster, execute o seguinte comando, substituindo ClusterArn pelo ARN do cluster.

aws kafka describe-cluster --cluster-arn ClusterArn

A saída desse comando describe-cluster é semelhante ao seguinte JSON de exemplo.

{ "ClusterInfo": { "BrokerNodeGroupInfo": { "BrokerAZDistribution": "DEFAULT", "ClientSubnets": [ "subnet-0123456789abcdef0", "subnet-2468013579abcdef1", "subnet-1357902468abcdef2" ], "InstanceType": "kafka.m5.large",

20

Page 27: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Obter a string de conexão doApache ZooKeeper usando a API

"StorageInfo": { "EbsStorageInfo": { "VolumeSize": 1000 } } }, "ClusterArn": "arn:aws:kafka:us-east-1:111122223333:cluster/testcluster/12345678-abcd-4567-2345-abcdef123456-2", "ClusterName": "testcluster", "CreationTime": "2018-12-02T17:38:36.75Z", "CurrentBrokerSoftwareInfo": { "KafkaVersion": "2.2.1" }, "CurrentVersion": "K13V1IB3VIYZZH", "EncryptionInfo": { "EncryptionAtRest": { "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:555555555555:key/12345678-abcd-2345-ef01-abcdef123456" } }, "EnhancedMonitoring": "DEFAULT", "NumberOfBrokerNodes": 3, "State": "ACTIVE", "ZookeeperConnectString": "10.0.1.101:2018,10.0.2.101:2018,10.0.3.101:2018" }}

O JSON de exemplo anterior mostra a chave ZookeeperConnectString na saída do comandodescribe-cluster. Copie o valor correspondente a essa chave e salve-o para quando precisarcriar um tópico no cluster.

Important

Seu cluster do Amazon MSK deve estar noACTIVEPara que você possa obter a string deconexão do Apache ZooKeeper. Quando um cluster ainda está no estado CREATING, a saídado comando describe-cluster não inclui a ZookeeperConnectString. Se esse foro caso, aguarde alguns minutos e execute describe-cluster novamente após o clusteratingir o estado ACTIVE.

Obter a string de conexão do Apache ZooKeeperusando a APIPara obter a string de conexão do Apache ZooKeeper usando a API, consulte DescribeCluster.

Obtendo os corretores de bootstrap para um clusterdo Amazon MSK

Obtendo os corretores de bootstrap usando oAWSManagement ConsoleO termoBrokers de bootstraprefere-se a uma lista de corretores que um cliente Apache Kafka podeusar como ponto de partida para se conectar ao cluster. Esta lista não inclui necessariamente todos oscorretores em um cluster.

21

Page 28: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Obtendo os corretores de bootstrap usando oAWS CLI

1. Abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/.2. A tabela mostra todos os clusters da região atual nesta conta. Escolha o nome de um cluster para

visualizar sua descrição.3. NoResumo do cluster, escolhaVer informações do cliente. Isso mostra os agentes de bootstrap, bem

como a string de conexão do Apache ZooKeeper.

Obtendo os corretores de bootstrap usando oAWS CLIExecute o seguinte comando, substituindo ClusterArn pelo nome de recurso da Amazon (ARN) quevocê obteve quando criou o cluster. Se você não tiver o ARN do cluster, poderá encontrá-lo listando todosos clusters. Para mais informações, consulte the section called “Listar clusters do ” (p. 22).

aws kafka get-bootstrap-brokers --cluster-arn ClusterArn

Para um cluster do MSK que usathe section called “Controle de acesso IAM” (p. 60), a saída dessecomando é semelhante ao seguinte JSON de exemplo.

{ "BootstrapBrokerStringSaslIam": "b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9098,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9098"}

O número de corretores de bootstrap na cadeia é igual ao número de zonas nas quais o cluster MSK éimplantado.

Obter os agentes de bootstrap usando a APIPara obter os agentes de bootstrap usando a API, consulte GetBootstrapBrokers.

Listagem de clusters do Amazon MSKListando clusters usando oAWS Management Console1. Abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/.2. A tabela mostra todos os clusters da região atual nesta conta. Escolha o nome de um cluster para

visualizar seus detalhes.

Listando clusters usando oAWS CLIExecute o seguinte comando.

aws kafka list-clusters

Listar clusters usando a APIPara listar clusters usando a API, consulte ListClusters.

22

Page 29: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Dimensionar o armazenamento do agente

Dimensionamento do armazenamento de agenteÉ possível aumentar a quantidade de armazenamento do EBS por agente. Você não pode reduzir oarmazenamento.

Os volumes de armazenamento permanecem disponíveis durante essa operação de expansão.Important

O dimensionamento do armazenamento tem um período de recarga de pelo menos seis horasentre os eventos. Mesmo que a operação disponibilize armazenamento adicional imediatamente,o serviço executa otimizações em seu cluster que podem levar até 24 horas ou mais. A duraçãodessas otimizações é proporcional ao seu tamanho de armazenamento.

Tópicos• Escalabilidade automática (p. 23)• Escalabilidade manual (p. 24)

Escalabilidade automáticaVocê pode configurar o Amazon Managed Streaming for Apache Kafka para expandir automaticamenteo armazenamento do cluster em resposta ao aumento do uso usando políticas de Application Auto-Scaling. Sua política de auto-scaling define a utilização do disco de destino e a capacidade máxima dedimensionamento.

Note

O serviço Amazon MSK não reduz o armazenamento em cluster em resposta ao uso reduzido. OAmazon MSK não oferece suporte à redução do tamanho dos volumes de armazenamento. Parareduzir o tamanho do espaço de armazenamento do cluster, você deve migrar o cluster existentepara um cluster com espaço de armazenamento menor. Para obter informações sobre a migraçãode um cluster, consulteMigração (p. 87).

Detalhes da expansão automática do armazenamento do MSKSua política de auto scaling define os seguintes parâmetros para o cluster:

• Destino de utilização do: O limite de utilização de armazenamento que o Amazon MSK usa paraacionar uma operação de auto-scaling. Você pode definir o destino de utilização entre 10% e 80% dacapacidade de armazenamento atual. Recomendamos definir o destino de utilização do armazenamentoentre 50% e 60%.

• Capacidade máxima de armazenamento: Essa configuração é o limite máximo de escala que oAmazon MSK pode definir o armazenamento do corretor. Você pode definir a capacidade máximade armazenamento de até 16 TiB por agente. Para mais informações, consulte Limites do AmazonMSK (p. 108).

Quando o serviço detecta que oMaximum Disk Utilizationmétrica é igual ou maior que aStorageUtilization Target, ele aumentará sua capacidade de armazenamento automaticamente. Primeiro,o Amazon MSK expande seu armazenamento de cluster em um valor igual ao maior de dois números:10 GiB e 10% do armazenamento atual. Por exemplo, se você tiver 1000 GiB, esse valor será 100 GiB.Operações de dimensionamento adicionais aumentam o armazenamento em uma quantidade maior. Oserviço verifica a utilização do armazenamento a cada minuto.

Important

O dimensionamento do armazenamento tem um período de recarga de pelo menos seis horasentre os eventos. Mesmo que a operação disponibilize armazenamento adicional imediatamente,

23

Page 30: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Escalabilidade manual

o serviço executa otimizações em seu cluster que podem levar até 24 horas ou mais. Aduração dessas otimizações é proporcional ao seu tamanho de armazenamento. Para expandirrepetidamente sua capacidade de armazenamento mais rapidamente, defina a capacidadede armazenamento manualmente usando a opçãoUpdateBrokerStorageoperação. Para obterinformações sobre como dimensionar corretamente o armazenamento, consultethe section called“Dimensionar o cluster de modo correto” (p. 122).

Você pode verificar para determinar se ocorreram operações de auto scaling usandooListClusterOperationsoperação.

Configurando a expansão automática para seu cluster doAmazon MSKVocê pode usar o console do Amazon MSK ou a API do Amazon MSK para implementar o armazenamentode expansão automática.

Note

Você não pode implementar a expansão automática ao criar um cluster. Você deve primeirocriar o cluster e, em seguida, criar e habilitar uma política de expansão automática para ele. Noentanto, você pode criar a política enquanto o serviço Amazon MSK cria seu cluster.

Configurando a expansão automática usando oAWS Management Console

1. Faça login noAWS Management Consolee abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/home?region=us-east-1#/home/.

2. Navegue até o .Detalhes do cluster.3. Crie e nomeie uma política auto-scaling. Especifique o destino de utilização do armazenamento, a

capacidade máxima de armazenamento e a métrica de destino (KafkaDataLogsDiskUsed).4. Salve e habilite a nova política.

Quando você salva e habilita a nova diretiva, ela se torna ativa para o cluster. O Amazon MSK expande oarmazenamento do cluster quando o destino de utilização do armazenamento é atingido.

Configurando a expansão automática usando a CLI

1. Usar aRegisterScalableTargetPara registrar um destino de utilização de armazenamento.2. Usar aPutScalingPolicypara criar uma política de expansão automática.

Configurando a expansão automática usando a API

1. Usar aRegisterScalableTargetAPI para registrar um destino de utilização de armazenamento.2. Usar aPutScalingPolicyAPI para criar uma política de expansão automática.

Escalabilidade manualPara aumentar o armazenamento, aguarde que o cluster esteja no estado ACTIVE. O dimensionamentodo armazenamento tem um período de recarga de pelo menos seis horas entre os eventos. Mesmo quea operação disponibilize armazenamento adicional imediatamente, o serviço executa otimizações emseu cluster que podem levar até 24 horas ou mais. A duração dessas otimizações é proporcional ao seutamanho de armazenamento.

24

Page 31: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Atualizando o Tipo de Corretor

Escalando o armazenamento do corretor usando oAWSManagement Console1. Abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/.2. Escolha o cluster MSK para o qual deseja atualizar o armazenamento do agente.3. NoArmazenamento, escolhaEdite.4. Especifique o volume de armazenamento desejado. Só é possível aumentar a quantidade de

armazenamento, não é possível reduzi-la.5. Selecione Save changes (Salvar alterações).

Escalando o armazenamento do corretor usando oAWS CLIExecute o seguinte comando, substituindo ClusterArn pelo nome de recurso da Amazon (ARN) quevocê obteve quando criou o cluster. Se você não tiver o ARN do cluster, poderá encontrá-lo listando todosos clusters. Para mais informações, consulte the section called “Listar clusters do ” (p. 22).

Substitua Current-Cluster-Version pela versão atual do cluster.Important

As versões de cluster não são inteiros simples. Você pode obter a versão atual descrevendo ocluster. Uma versão de exemplo é KTVPDKIKX0DER.

O parâmetro Target-Volume-in-GiB representa a quantidade de armazenamento que você desejaque cada agente tenha. Só é possível atualizar o armazenamento de todos os agentes. Não é possívelespecificar agentes individuais dos quais atualizar o armazenamento. O valor especificado para Target-Volume-in-GiB deve ser um número inteiro maior que 100 GiB. O armazenamento por agente após aoperação de atualização não pode exceder 16384 GiB.

aws kafka update-broker-storage --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-broker-ebs-volume-info '{"KafkaBrokerNodeId": "All", "VolumeSizeGB": Target-Volume-in-GiB}'

Aumente o armazenamento do agente usando a APIPara atualizar um armazenamento de agente usando a API, consulte UpdateBrokerStorage.

Atualizando o tipo de corretorVocê pode dimensionar seu cluster MSK sob demanda alterando o tipo (o tamanho ou a família) de seuscorretores sem reatribuir partições Apache Kafka. Alterar o tipo de seus corretores oferece a flexibilidadede ajustar a capacidade de computação do cluster MSK com base nas alterações em suas cargas detrabalho, sem interromper o I/O do cluster. O Amazon MSK usa o mesmo tipo de corretor para todos oscorretores em um determinado cluster. Esta seção descreve como atualizar o tipo de agente do clusterdo MSK. A atualização do tipo corretor acontece de forma contínua enquanto o cluster está ativo e emexecução. Isso significa que o Amazon MSK derruba um corretor por vez para executar a atualizaçãodo tipo corretor. Para obter informações sobre como tornar um cluster altamente disponível durante umaatualização do tipo de agente, consultethe section called “Criar clusters altamente disponíveis” (p. 122).Para reduzir ainda mais qualquer impacto potencial na produtividade, você pode executar a atualização dotipo corretor durante um período de baixo tráfego.

Durante uma atualização do tipo agente, você pode continuar a produzir e consumir dados. No entanto,você deve aguardar até que a atualização seja feita antes de reinicializar os corretores ou invocar qualqueruma das operações de atualização listadas emOperações do Amazon MSK.

25

Page 32: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Atualizando o tipo de corretorusando oAWS Management Console

Se você deseja atualizar seu cluster para um tipo de intermediário menor, recomendamos que você tente aatualização em um cluster de teste primeiro para ver como isso afeta seu cenário.

Important

Não é possível atualizar um cluster para um tipo de broker menor se o número de partições porbroker exceder o número máximo especificado emthe section called “ Número de partições poragente” (p. 122).

Atualizando o tipo de corretor usando oAWSManagement Console1. Abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/.2. Escolha o cluster MSK para o qual deseja atualizar o tipo de agente.3. Na página de detalhes do cluster, localize oResumo dos agentese escolhaEditar tipo de agente.4. Escolha o tipo de agente que você deseja na lista.5. Salve as alterações.

Atualizando o tipo de corretor usando oAWS CLI1. Execute o seguinte comando, substituindo ClusterArn pelo nome de recurso da Amazon (ARN) que

você obteve quando criou o cluster. Se você não tiver o ARN do cluster, poderá encontrá-lo listandotodos os clusters. Para mais informações, consulte the section called “Listar clusters do ” (p. 22).

SubstituirVersão atual do clusterCom a versão atual do cluster eTargetTypeCom o novo tipoque você deseja que os agentes sejam. Para saber mais sobre os tipos de agente, consultethe sectioncalled “Tipos de agente” (p. 16).

aws kafka update-broker-type --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-instance-type TargetType

Veja a seguir um exemplo de como usar esse comando:

aws kafka update-broker-type --cluster-arn "arn:aws:kafka:us-east-1:0123456789012:cluster/exampleName/abcd1234-0123-abcd-5678-1234abcd-1" --current-version "K1X5R6FKA87" --target-instance-type kafka.m5.large

A saída desse comando é semelhante ao seguinte JSON de exemplo.

{ "ClusterArn": "arn:aws:kafka:us-east-1:0123456789012:cluster/exampleName/abcd1234-0123-abcd-5678-1234abcd-1", "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"}

2. Para obter o resultado da operação update-broker-type, execute o comando a seguir,substituindo ClusterOperationArn pelo ARN obtido na saída do comando update-broker-type.

aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn

26

Page 33: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Atualizando o tipo de broker usando a API

A saída desse comando describe-cluster-operation é semelhante ao seguinte JSON deexemplo.

{ "ClusterOperationInfo": { "ClientRequestId": "982168a3-939f-11e9-8a62-538df00285db", "ClusterArn": "arn:aws:kafka:us-east-1:0123456789012:cluster/exampleName/abcd1234-0123-abcd-5678-1234abcd-1", "CreationTime": "2021-01-09T02:24:22.198000+00:00", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "UPDATE_COMPLETE", "OperationType": "UPDATE_BROKER_TYPE", "SourceClusterInfo": { "InstanceType": "t3.small" }, "TargetClusterInfo": { "InstanceType": "m5.large" } }}

Se OperationState tiver o valor UPDATE_IN_PROGRESS, aguarde um pouco e execute o comandodescribe-cluster-operation novamente.

Atualizando o tipo de broker usando a APIPara atualizar o tipo de agente usando a API, consulteUpdateBrokerType.

Atualização da configuração de um cluster doAmazon MSK

Para atualizar a configuração de um cluster, certifique-se de que ele esteja no estado ACTIVE. Para obterinformações sobre a configuração do MSK, incluindo como criar uma configuração personalizada, quaispropriedades você pode atualizar e o que acontece quando você atualiza a configuração de um clusterexistente, consulte Configuração (p. 35).

Atualizar a configuração de um cluster usando aAWSCLI1. Copie o seguinte JSON e salve-o em um arquivo. Nomeie o arquivo configuration-info.json.

Substitua ConfigurationArn pelo nome de recurso da Amazon (ARN) da configuração que vocêdeseja usar para atualizar o cluster. A string do ARN deve estar entre aspas no seguinte JSON.

Substitua Configuration-Revision pela revisão da configuração que você deseja usar. Asrevisões de configuração são inteiros (números inteiros) que começam em 1. Esse número inteiro nãodeve estar entre aspas no seguinte JSON.

{ "Arn": ConfigurationArn, "Revision": Configuration-Revision

27

Page 34: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Atualizar a configuração de um cluster usando aAWS CLI

}

2. Execute o seguinte comando, substituindo ClusterArn pelo ARN obtido quando criou o cluster. Sevocê não tiver o ARN do cluster, poderá encontrá-lo listando todos os clusters. Para mais informações,consulte the section called “Listar clusters do ” (p. 22).

Substitua Path-to-Config-Info-File pelo caminho para o arquivo de informações de suaconfiguração. Se você nomeou o arquivo que criou na etapa anterior configuration-info.json eo salvou no diretório atual, o Path-to-Config-Info-File será configuration-info.json.

Substitua Current-Cluster-Version pela versão atual do cluster.

Important

As versões de cluster não são inteiros simples. Você pode obter a versão atual descrevendoo cluster. Uma versão de exemplo é KTVPDKIKX0DER.

aws kafka update-cluster-configuration --cluster-arn ClusterArn --configuration-info fileb://Path-to-Config-Info-File --current-version Current-Cluster-Version

Veja a seguir um exemplo de como usar esse comando:

aws kafka update-cluster-configuration --cluster-arn "arn:aws:kafka:us-east-1:0123456789012:cluster/exampleName/abcd1234-0123-abcd-5678-1234abcd-1" --configuration-info fileb://c:\users\tester\msk\configuration-info.json --current-version "K1X5R6FKA87"

A saída desse comando update-cluster-configuration é semelhante ao seguinte JSON deexemplo.

{ "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"}

3. Para obter o resultado da operação update-cluster-configuration, execute o comando aseguir, substituindo ClusterOperationArn pelo ARN obtido na saída do comando update-cluster-configuration.

aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn

A saída desse comando describe-cluster-operation é semelhante ao seguinte JSON deexemplo.

{ "ClusterOperationInfo": { "ClientRequestId": "982168a3-939f-11e9-8a62-538df00285db", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2019-06-20T21:08:57.735Z", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "UPDATE_COMPLETE", "OperationType": "UPDATE_CLUSTER_CONFIGURATION",

28

Page 35: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Atualizar a configuração de um cluster usando a API

"SourceClusterInfo": {}, "TargetClusterInfo": { "ConfigurationInfo": { "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/ExampleConfigurationName/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1", "Revision": 1 } } }}

Nesta saída, OperationType é UPDATE_CLUSTER_CONFIGURATION. Se OperationState tivero valor UPDATE_IN_PROGRESS, aguarde um pouco e execute o comando describe-cluster-operation novamente.

Atualizar a configuração de um cluster usando a APIPara criar um cluster usando a API, consulte UpdateClusterConfiguration.

Expansão de um cluster do Amazon MSKUse esta operação do Amazon MSK do quando quiser aumentar o número de agentes no cluster do MSK.Para expandir um cluster, certifique-se de que ele esteja no estado ACTIVE.

Important

Para expandir um cluster do MSK, certifique-se de usar esta operação do Amazon MSK. Nãotente adicionar agentes a um cluster sem usar essa operação.

Para obter informações sobre como reequilibrar partições depois de adicionar agentes a um cluster,consulte the section called “Reatribuir partições” (p. 125).

Expandir um cluster usando oAWS ManagementConsole1. Abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/.2. Escolha o cluster MSK cujo número de agentes você deseja aumentar.3. Na página de detalhes do cluster, escolha aEditeAo lado doDetalhes do agente no nível do cluster.4. Insira o número de agentes que você deseja que o cluster tenha por zona de disponibilidade e

escolhaSalve as alterações.

Expandir um cluster usando oAWS CLI1. Execute o seguinte comando, substituindo ClusterArn pelo nome de recurso da Amazon (ARN) que

você obteve quando criou o cluster. Se você não tiver o ARN do cluster, poderá encontrá-lo listandotodos os clusters. Para mais informações, consulte the section called “Listar clusters do ” (p. 22).

Substitua Current-Cluster-Version pela versão atual do cluster.Important

As versões de cluster não são inteiros simples. Você pode obter a versão atual descrevendoo cluster. Uma versão de exemplo é KTVPDKIKX0DER.

29

Page 36: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Expanda um cluster usando a API

O parâmetro Target-Number-of-Brokers representa o número total de nós de agente que vocêdeseja que o cluster tenha quando essa operação for concluída com êxito. O valor especificado paraTarget-Number-of-Brokers deve ser um número inteiro maior do que o número atual de agentesno cluster. Também deve ser um múltiplo do número de zonas de disponibilidade.

aws kafka update-broker-count --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-number-of-broker-nodes Target-Number-of-Brokers

A saída dessa operação update-broker-count é semelhante ao seguinte JSON.

{ "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"}

2. Para obter o resultado da operação update-broker-count, execute o comando a seguir,substituindo ClusterOperationArn pelo ARN obtido na saída do comando update-broker-count.

aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn

A saída desse comando describe-cluster-operation é semelhante ao seguinte JSON deexemplo.

{ "ClusterOperationInfo": { "ClientRequestId": "c0b7af47-8591-45b5-9c0c-909a1a2c99ea", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2019-09-25T23:48:04.794Z", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "UPDATE_COMPLETE", "OperationType": "INCREASE_BROKER_COUNT", "SourceClusterInfo": { "NumberOfBrokerNodes": 9 }, "TargetClusterInfo": { "NumberOfBrokerNodes": 12 } }}

Nesta saída, OperationType é INCREASE_BROKER_COUNT. Se OperationState tiver o valorUPDATE_IN_PROGRESS, aguarde um pouco e execute o comando describe-cluster-operationnovamente.

Expanda um cluster usando a APIPara aumentar o número de agentes em um cluster usando a API, consulte UpdateBrokerCount.

30

Page 37: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Reinicializar um operador para um cluster

Reinicializar um operador para um cluster doAmazon MSK

Use esta operação do Amazon MSK quando quiser reinicializar um broker para o seu cluster MSK. Parareinicializar um operador de um cluster, certifique-se de que ele esteja no operadorACTIVEestado.

O serviço Amazon MSK pode reinicializar os corretores de seu cluster MSK durante a manutenção dosistema, como patches ou upgrades de versão. A reinicialização manual de um corretor permite testar aresiliência de seus clientes Kafka para determinar como eles respondem à manutenção do sistema.

Reinicializar um operador usando o operadorAWSManagement Console1. Abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/.2. Selecione o cluster do MSK cujo operador você deseja reinicializar.3. Selecione o operador que você deseja reinicializar.4. Selecione oAgente de reinicializações.

Reinicializar um operador usando o operadorAWS CLI1. Execute o seguinte comando, substituindoClusterArnCom o nome de recurso da Amazon (ARN)

obtido quando criou o cluster e o operadorCorretora ArnCom o ARN do operador que você desejareinicializar.

Note

Oreboot-brokersuporta apenas a reinicialização de um corretor.

Se você não tiver o ARN do cluster, poderá encontrá-lo listando todos os clusters. Para maisinformações, consulte the section called “Listar clusters do ” (p. 22).

Se você não tiver os IDs de agente do cluster, poderá encontrá-lo listando os nós de agente. Paraobter mais informações, consulteListNodes.

aws kafka reboot-broker --cluster-arn ClusterArn --broker-ids "1"

A saída dessa operação reboot-broker é semelhante ao seguinte JSON.

{ "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"}

2. Para obter o resultado da operação reboot-broker, execute o comando a seguir, substituindoClusterOperationArn pelo ARN obtido na saída do comando reboot-broker.

aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn

31

Page 38: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Reinicializar um operador usando a API

A saída desse comando describe-cluster-operation é semelhante ao seguinte JSON deexemplo.

{ "ClusterOperationInfo": { "ClientRequestId": "c0b7af47-8591-45b5-9c0c-909a1a2c99ea", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2019-09-25T23:48:04.794Z", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "REBOOT_IN_PROGRESS", "OperationType": "REBOOT_NODE", "SourceClusterInfo": {}, "TargetClusterInfo": {} }}

Quando a operação de reinicialização for concluída, o comandoOperationStateéREBOOT_COMPLETE.

Reinicializar um operador usando a APIPara reinicializar um operador em um cluster usando a API, consulteRebootBroker.

Marcando um cluster do Amazon MSKVocê pode atribuir seus próprios metadados na forma detagspara um recurso do Amazon MSK, comoum cluster MSK. Uma tag é um par de chave-valor que você define para o recurso. O uso de tags é umaforma simples, mas eficiente, de gerenciar os recursos da AWS e organizar os dados, incluindo dados defaturamento.

Tópicos• Conceitos básicos de tags (p. 32)• Monitoramento de custos com marcação (p. 33)• Restrições de tag (p. 33)• Atribuição de tags a recursos usando a API do Amazon MSK (p. 33)

Conceitos básicos de tagsVocê pode usar a API do Amazon MSK para executar as seguintes tarefas:

• Adicionar tags a um recurso do Amazon MSK.• Lista as tags de um recurso do Amazon MSK.• Remover tags de um recurso do Amazon MSK.

Você pode usar tags para categorizar os recursos do Amazon MSK. Por exemplo, você pode categorizaros clusters do Amazon MSK por finalidade, proprietário ou ambiente. Como você define a chave e ovalor para cada marca, você pode criar um conjunto de categorias personalizado para atender às suasnecessidades específicas. Por exemplo, você pode definir um conjunto de tags que ajude a monitorar osclusters por proprietário e aplicativo associado.

32

Page 39: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitoramento de custos com marcação

Estes são diversos exemplos de tags:

• Project: Project name

• Owner: Name

• Purpose: Load testing

• Environment: Production

Monitoramento de custos com marcaçãoVocê pode usar tags para categorizar e monitorar seus custos da AWS. Quando você aplica tags aoAWS,incluindo clusters do Amazon MSK, seuAWSO relatório de alocação de custos da inclui o uso e oscustos agrupados por tags. Você pode organizar seus custos de vários serviços aplicando tags querepresentam categorias de negócios (como centros de custos, nomes de aplicativos ou proprietários).Para obter mais informações, consulteUsar tags de alocação de custos para relatórios de faturamentopersonalizadosnoAWS Billing and Cost ManagementGuia do usuário.

Restrições de tagAs restrições a seguir se aplicam a tags no Amazon MSK.

Restrições básicas

• O número máximo de tags por recurso é 50.• As chaves e os valores de tags diferenciam maiúsculas de minúsculas.• Não é possível alterar nem editar as tags de um recurso excluído.

Restrições de chaves de marcas

• Cada chave de marca deve ser exclusiva. Se você adicionar uma marca com uma chave que já estiverem uso, sua nova marca existente substituirá o par de chave-valor.

• Não é possível iniciar uma chave de tag com aws:, pois esse prefixo é reservado para uso pela AWS. AAWS cria tags que começam com esse prefixo em seu nome, mas você não pode editá-las ou excluí-las.

• As chaves de marca devem ter entre 1 e 128 caracteres Unicode.• As chaves de tag devem consistir nos seguintes caracteres: Letras Unicode, dígitos, espaço em branco

e os seguintes caracteres especiais:_ . / = + - @.

Restrições de valor de marcas

• Os valores de marca devem ter entre 0 e 255 caracteres Unicode.• Os valores de marca podem estar em branco. Caso contrário, eles devem consistir nos seguintes

caracteres: Letras Unicode, dígitos, espaço em branco e qualquer um dos seguintes caracteresespeciais:_ . / = + - @.

Atribuição de tags a recursos usando a API doAmazon MSKVocê pode usar as seguintes operações para marcar ou remover tags de um recurso do Amazon MSK oupara listar o conjunto atual de tags de um recurso do:

• ListTagsForResource

33

Page 40: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Atribuição de tags a recursos usando a API do Amazon MSK

• TagResource• UntagResource

34

Page 41: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Configurações personalizadas

Configuração do Amazon MSKO Amazon MSK fornece uma configuração padrão para agentes, tópicos e nós Apache ZooKeeper. Vocêtambém pode criar configurações personalizadas e usá-las para criar novos clusters do MSK ou atualizarclusters existentes. Uma configuração do MSK consiste em um conjunto de propriedades e seus valorescorrespondentes.

Tópicos• Configurações personalizadas do MSK (p. 35)• A configuração padrão do Amazon MSK (p. 41)• Operações de configuração do Amazon MSK (p. 43)

Configurações personalizadas do MSKO Amazon MSK permite criar uma configuração personalizada do MSK onde você define as seguintespropriedades. As propriedades que você não define explicitamente obtêm os valores que têm em thesection called “Configuração padrão” (p. 41). Para obter mais informações sobre as propriedades daconfiguração, consulte Configuração do Apache Kafka.

Propriedades de configuração do Apache Kafka que você pode definir

Nome Descrição

auto.create.topics.enable Habilita a criação automática de tópicos noservidor.

compression.type O tipo de compactação final de um determinadotópico. Você pode definir essa propriedadepara os codecs de compactação padrão (gzip,snappy, lz4 e zstd). Ela também aceitauncompressed, que equivale a nenhumacompressão; e producer, que significa mantero codec de compactação original definido peloprodutor.

default.replication.factor O fator de replicação padrão para tópicos criadosautomaticamente.

delete.topic.enable Habilita a operação de exclusão de tópico. Seessa configuração estiver desativada, você nãopoderá excluir um tópico por meio da ferramentade administração.

group.initial.rebalance.delay.ms Período de tempo que o coordenador do grupoespera que mais consumidores ingressem emum novo grupo antes de executar o primeiroreequilíbrio. Potencialmente, um atraso mais longosignifica menos reequilíbrios, mas aumenta otempo até que o processamento seja iniciado.

group.max.session.timeout.ms Tempo limite máximo de sessão paraconsumidores registrados. Tempos limite maislongos dão aos consumidores mais tempo para

35

Page 42: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Configurações personalizadas

Nome Descriçãoprocessar mensagens entre pulsações ao custo demais tempo para detectar falhas.

group.min.session.timeout.ms Tempo limite mínimo de sessão paraconsumidores registrados. Tempos limite maiscurtos resultam em detecção mais rápida defalhas ao custo de pulsações mais frequentes doconsumidor, o que pode sobrecarregar os recursosdo agente.

leader.imbalance.per.broker.percentage A proporção de desequilíbrio de líder permitida poragente. O controlador aciona um equilíbrio de lídercaso ele ultrapasse esse valor por agente. Essevalor é especificado em porcentagem.

log.cleaner.delete.retention.ms Período de tempo que você deseja que o ApacheKafka mantenha registros excluídos. O valormínimo é 0.

log.cleaner.min.cleanable.ratio Essa propriedade de configuração pode ter valoresentre 0 e 1. Ele determina com que frequência ocompactador de log tenta limpar o log (assumindoque a compactação de log está habilitada). Porpadrão, o Apache Kafka evita limpar um logonde mais de 50% do log foi compactado. Essaproporção limita o espaço máximo desperdiçadono log por duplicatas (em 50%, o que significaque no máximo 50% do log pode ser duplicado).Uma proporção maior significa menos limpezas,mais eficientes, mas mais espaço desperdiçado noregistro.

log.cleanup.policy A política de limpeza padrão para segmentosalém da janela de retenção. Uma lista de políticasválidas separadas por vírgulas. As políticas válidassão delete e compact.

log.flush.interval.messages Número de mensagens acumuladas em umapartição de log antes que as mensagens sejamliberadas para o disco.

log.flush.interval.ms Período máximo em ms no qual uma mensagemem qualquer tópico é mantida na memória antesde ser liberada para o disco. Se não for definido, ovalor de log.flush.scheduler.interval.ms será usado.O valor mínimo é 0.

log.message.timestamp.difference.max.ms A diferença máxima permitida entre o timestampem que um agente recebe uma mensagem eo timestamp especificado na mensagem. Selog.message.timestamp.type=CreateTime,uma mensagem será rejeitada se adiferença no timestamp exceder esselimite. Essa configuração será ignorada selog.message.timestamp.type=LogAppendTime.

36

Page 43: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Configurações personalizadas

Nome Descrição

log.message.timestamp.type Especifica se o timestamp na mensagem é a horada criação da mensagem ou a hora do acréscimono log. Os valores permitidos são CreateTime eLogAppendTime.

log.retention.bytes Tamanho máximo do log antes de ser excluído.

log.retention.hours Número de horas para manter um arquivo delog antes de excluí-lo, terciário à propriedadelog.retention.ms.

log.retention.minutes Número de minutos para manter um arquivo delog antes de excluí-lo, secundário à propriedadelog.retention.ms. Se não for definido, o valor delog.retention.hours será usado.

log.retention.ms Número de milissegundos para manter um arquivode log antes de excluí-lo (em milissegundos). Senão for definido, o valor de log.retention.minutesserá usado.

log.roll.ms Tempo máximo para que um novo segmentode log seja implantado (em milissegundos). Sevocê não definir essa propriedade, o valor delog.roll.hours será usado. O valor mínimo possívelpara esta propriedade é 1.

log.segment.bytes Tamanho máximo de um único arquivo de log.

max.incremental.fetch.session.cache.slots Número máximo de sessões de buscaincrementais mantidas.

message.max.bytes Maior tamanho de lote de registros permitidopelo Kafka. Se isso for aumentado e houverconsumidores mais antigos que 0.10.2, o tamanhoda busca dos consumidores também deverá seraumentado para que eles possam buscar lotes deregistros desse tamanho.

Na versão mais recente do formato de mensagem,os registros são sempre agrupados em lotes paraobter eficiência. Nas versões anteriores do formatode mensagem, os registros não compactados nãosão agrupados em lotes, e, nesse caso, esse limitese aplica apenas a um único registro.

Isso pode ser definido por tópico coma configuração do nível de tópicomax.message.bytes.

37

Page 44: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Configurações personalizadas

Nome Descrição

min.insync.replicas Quando um produtor define confirmaçõescomo "all" (ou "-1"), min.insync.replicasespecifica o número mínimo de réplicas quedevem confirmar uma gravação para que agravação seja considerada bem-sucedida. Seesse mínimo não puder ser atendido, o produtorgerará uma exceção (NotEnoughReplicas ouNotEnoughReplicasAfterAppend).

Quando usados em conjunto, min.insync.replicas eacks permitem que você reforce maiores garantiasde durabilidade. Um cenário típico seria criar umtópico com um fator de replicação de 3, definirmin.insync.replicas como 2 e produzir com acksde "all". Isso garante que o produtor gere umaexceção se a maioria das réplicas não receberuma gravação.

num.io.threads O número de threads que o servidor usa paraprocessar solicitações, que podem incluir E/S dedisco.

num.network.threads O número de threads que o servidor usa parareceber solicitações da rede e enviar respostaspara ela.

num.partitions Número padrão de partições de log por tópico.

num.recovery.threads.per.data.dir O número de threads por diretório de dados a serusado para recuperação de log na inicialização epara descarregamento no desligamento.

num.replica.fetchers O número de threads de busca usados parareplicar mensagens de um agente de origem. Oaumento desse valor pode aumentar o nível deparalelismo de E/S no agente seguidor.

offsets.retention.minutes Depois que um grupo de consumidores perdetodos os consumidores (isto é, torna-se vazio),seus deslocamentos são mantidos durante esseperíodo de retenção antes de serem descartados.Para consumidores autônomos (ou seja, que usamatribuição manual), os deslocamentos expiramdepois da última confirmação mais esse período deretenção.

offsets.topic.replication.factor O fator de replicação do tópico de deslocamentos(definido mais alto para garantir a disponibilidade).A criação do tópico interno falha até que otamanho do cluster atenda a esse requisito de fatorde replicação.

38

Page 45: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Configurações personalizadas

Nome Descrição

replica.fetch.max.bytes O número de bytes de mensagens para tentarbuscar para cada partição. Esse não é um máximoabsoluto. Se o primeiro lote de registros naprimeira partição não vazia da busca for maiorque esse valor, o lote de registros será retornadopara garantir que progresso seja feito. O tamanhomáximo do lote de registros aceito pelo agente édefinido via message.max.bytes (configuração doagente) ou max.message.bytes (configuração dotópico).

replica.fetch.response.max.bytes O número máximo de bytes esperado para todaa resposta de busca. Os registros são buscadosem lotes e, se o primeiro lote de registros naprimeira partição não vazia da busca for maiorque esse valor, o lote de registros ainda seráretornado para garantir que progresso seja feito.Esse não é um máximo absoluto. As propriedadesmessage.max.bytes (configuração do agente)ou max.message.bytes (configuração do tópico)especificam o tamanho máximo do lote de registrosaceito pelo agente.

replica.lag.time.max.ms Se um seguidor não enviou nenhuma solicitaçãode busca ou se não consumiu até o deslocamentofinal do log do líder por pelo menos esse númerode milissegundos, o líder remove o seguidor doISR.

MinValue: 10000

MaxValue (inclusive) = 30000

replica.selector.class O nome da classe totalmente qualificado queimplementa o ReplicaSelector. Isso é usadopelo agente para encontrar a réplica de leiturapreferencial. Se estiver usando a versão 2.4.1 oumais recente do Apache Kafka e quiser permitirque os clientes busquem a partir da réplicamais próxima, defina esta propriedade comoorg.apache.kafka.common.replica.RackAwareReplicaSelector.Para mais informações, consulte the section called“Apache Kafka versão 2.4.1 (use 2.4.1.1 em vezdisso)” (p. 112).

replica.socket.receive.buffer.bytes O buffer de recebimento do soquete parasolicitações de rede.

socket.receive.buffer.bytes Buffer SO_RCVBUF dos soquetes do servidor desoquetes. O valor mínimo para o qual você podedefinir essa propriedade é -1. Se o valor for -1, oAmazon MSK usará o sistema operacional padrão.

socket.request.max.bytes O número máximo de bytes em uma solicitação desoquete.

39

Page 46: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Configurações personalizadas

Nome Descrição

socket.send.buffer.bytes Buffer SO_SNDBUF dos soquetes do servidor desoquetes. O valor mínimo para o qual você podedefinir essa propriedade é -1. Se o valor for -1, oAmazon MSK usará o sistema operacional padrão.

transaction.max.timeout.ms Tempo limite máximo para transações. Se otempo de transação solicitado por um clienteexceder esse limite, o agente retornará um erro emInitProducerIdRequest. Isso impede que um clienteuse um tempo limite muito grande, o que podeimpedir que os consumidores leiam os tópicosincluídos na transação.

transaction.state.log.min.isr Configuração de min.insync.replicas substituídapara o tópico de transação.

transaction.state.log.replication.factor O fator de replicação do tópico de transação.Defina-o como um valor maior para aumentara disponibilidade. A criação do tópico internofalha até que o tamanho do cluster atenda a esserequisito de fator de replicação.

transactional.id.expiration.ms O tempo em milissegundos que o coordenador detransações aguarda sem receber atualizações destatus de transação para a transação atual antesde expirar seu ID transacional. Essa configuraçãotambém influencia a expiração do ID do produtor:os IDs do produtor expiram quando esse tempodecorre após a última gravação com o ID doprodutor fornecido. Os IDs do produtor podemexpirar mais cedo se a última gravação do ID doprodutor for excluída devido às configuraçõesde retenção do tópico. O valor mínimo para essapropriedade é de 1 milissegundo.

unclean.leader.election.enable Indica se as réplicas que não estão no conjuntoISR devem ser habilitadas para serem qualificadascomo líderes como um último recurso, mesmo queisso possa resultar em perda de dados.

zookeeper.connection.timeout.ms Tempo máximo que o cliente aguardapara estabelecer uma conexão com oZooKeeper. Se não for definido, o valor dezookeeper.session.timeout.ms será usado.

zookeeper.session.timeout.ms O tempo limite da sessão do Apache ZooKeeperem milissegundos.

MinValue = 6000

MaxValue (inclusive) = 18000

Para saber como criar uma configuração personalizada do MSK, listar todas as configurações oudescrevê-las, consulte the section called “Operações de configuração” (p. 43). Para criar um clusterdo MSK usando uma configuração personalizada do MSK ou para atualizar um cluster com uma novaconfiguração personalizada, consulte Como ele funciona (p. 16).

40

Page 47: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Configuração dinâmica

Quando você atualiza o cluster do MSK existente com uma configuração personalizada do MSK, o AmazonMSK faz reinicializações contínuas quando necessário usando práticas recomendadas para minimizar otempo de inatividade do cliente. Por exemplo, depois que o Amazon MSK reinicia cada agente, ele tentadeixar o agente recuperar os dados que possam ter sido perdidos pelo agente durante a atualização daconfiguração antes de avançar para o próximo agente.

Configuração dinâmicaAlém das propriedades de configuração oferecidas pelo Amazon MSK, você pode definir dinamicamenteas propriedades de configuração em nível de cluster e de agente que não exigem uma reinicializaçãodo agente. Você pode definir dinamicamente as propriedades de configuração que não estão marcadascomo somente leitura na tabela em Configurações do agente na documentação do Apache Kafka. Paraobter informações sobre a configuração dinâmica e comandos de exemplo, consulte Atualização dasconfigurações do agente na documentação do Apache Kafka.

Note

É possível definir a propriedade advertised.listeners, mas não a propriedade listeners.

Configuração em nível de tópicosVocê pode usar os comandos do Apache Kafka para definir ou modificar propriedades de configuraçãoem nível de tópico para tópicos novos e existentes. Para obter mais informações sobre as propriedadesde configuração em nível de tópico e exemplos sobre como defini-las, consulte Configurações em nível detópicos na documentação do Apache Kafka.

Estados de configuraçãoAs configurações do Amazon MSK podem estar nos seguintes estados. Para executar uma operação emuma configuração, a configuração deve estar noACTIVEouDELETE_FAILEDestado:

• ACTIVE

• DELETING

• DELETE_FAILED

A configuração padrão do Amazon MSKQuando você cria um cluster do MSK sem especificar uma configuração personalizada do MSK, o AmazonMSK cria e usa uma configuração padrão com os valores mostrados na tabela a seguir. Para propriedadesque não estão nessa tabela, o Amazon MSK usa os padrões associados à versão do Apache Kafka. Paraobter uma lista desses valores padrão, consulte Configuração do Apache Kafka.

Valores padrão de configuração

Nome Descrição Valor padrão

allow.everyone.if.no.acl.found Se nenhum padrão de recursocorresponder a um recursoespecífico, o recurso não teráACLs associadas. Nesse caso,se essa propriedade estiverdefinida como true, todosterão permissão para acessaro recurso, não apenas ossuperusuários.

true

41

Page 48: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Configuração padrão

Nome Descrição Valor padrão

auto.create.topics.enable Habilita a criação automática deum tópico no servidor.

false

auto.leader.rebalance.enable Habilita o equilíbrio de líderesautomáticos. Um thread emsegundo plano verifica e aciona oequilíbrio do líder, se necessário,em intervalos regulares.

true

default.replication.factor Fatores de replicaçãopadrão para tópicos criadosautomaticamente.

3 para clusters 3-AZ, 2 paraclusters 2-AZ

min.insync.replicas Quando um produtor defineconfirmações como "all"(ou "-1"), min.insync.replicasespecifica o número mínimo deréplicas que devem confirmaruma gravação para que agravação seja consideradabem-sucedida. Se este mínimonão puder ser atendido, oprodutor gerará uma exceção(NotEnoughReplicas ouNotEnoughReplicasAfterAppend).

Quando usados em conjunto,min.insync.replicas e ackspermitem que você reforcemaiores garantias dedurabilidade. Um cenário típicoseria criar um tópico com umfator de replicação de 3, definirmin.insync.replicas como 2 eproduzir com acks de "all".Isso garante que o produtor gereuma exceção quando a maioriadas réplicas não receber umagravação.

2

num.io.threads Número de threads que oservidor usa para processarsolicitações, que podem incluir E/S de disco.

8

num.network.threads Número de threads que oservidor usa para recebersolicitações da rede e enviarrespostas para a rede.

5

num.partitions Número padrão de partições delog por tópico.

1

42

Page 49: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Operações de configuração

Nome Descrição Valor padrão

num.replica.fetchers Número de threads de buscausados para replicar mensagensde um agente de origem. Oaumento desse valor podeaumentar o nível de paralelismode E/S no agente seguidor.

2

replica.lag.time.max.ms Se um seguidor não enviounenhuma solicitação de buscaou se não consumiu até odeslocamento final do log do líderpor pelo menos esse número demilissegundos, o líder remove oseguidor do ISR.

30000

socket.receive.buffer.bytes Buffer SO_RCVBUF dossoquetes do servidor desoquetes. Se o valor for -1, osistema operacional padrão seráusado.

102400

socket.request.max.bytes Número máximo de bytes emuma solicitação de soquete.

104857600

socket.send.buffer.bytes Buffer SO_SNDBUF dossoquetes do servidor desoquetes. Se o valor for -1, osistema operacional padrão seráusado.

102400

unclean.leader.election.enable Indica se as réplicas que nãoestão no conjunto ISR devemser habilitadas para seremqualificadas como líderes comoum último recurso, mesmo queisso possa resultar em perda dedados.

true

zookeeper.session.timeout.ms O tempo limite da sessãodo Apache ZooKeeper emmilissegundos.

18000

zookeeper.set.acl Defina o cliente para usar ACLsseguras.

false

Operações de configuração do Amazon MSKEste tópico descreve como criar configurações personalizadas do MSK e como executar operações nelas.Para obter informações sobre como usar configurações do MSK para criar ou atualizar clusters, consulteComo ele funciona (p. 16).

Este tópico contém as seguintes seções:• Para criar uma configuração do MSK (p. 44)• Para atualizar uma configuração do MSK (p. 44)

43

Page 50: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Criar configuração

• Para excluir uma configuração do MSK (p. 45)• Para descrever uma configuração do MSK (p. 45)• Como descrever uma revisão da configuração do MSK (p. 45)• Como listar todas as configurações do MSK em sua conta para a região atual (p. 47)

Para criar uma configuração do MSK1. Crie um arquivo para especificar as propriedades de configuração que você deseja definir e os valores

que deseja atribuir a elas. Veja a seguir o conteúdo de um arquivo de configuração de exemplo.

auto.create.topics.enable = true

zookeeper.connection.timeout.ms = 1000

log.roll.ms = 604800000

2. Execute o seguinte comando na AWS CLI, substituindo config-file-path pelo caminho para oarquivo onde você salvou a configuração na etapa anterior.

Note

O nome que você escolher para sua configuração deve corresponder ao seguinte regex: “^[0-9A-Za-z] [0-9A-Za-z-] {0,} $”.

aws kafka create-configuration --name "ExampleConfigurationName" --description "Example configuration description." --kafka-versions "1.1.1" --server-properties fileb://config-file-path

Veja a seguir um exemplo de uma resposta bem-sucedida após a execução desse comando.

{ "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1", "CreationTime": "2019-05-21T19:37:40.626Z", "LatestRevision": { "CreationTime": "2019-05-21T19:37:40.626Z", "Description": "Example configuration description.", "Revision": 1 }, "Name": "ExampleConfigurationName"}

3. O comando anterior retorna um nome de recurso da Amazon (ARN) para a configuração recém-criada. Salve esse ARN porque você precisará dele ao se referir a essa configuração em outroscomandos. Se você perder o ARN da configuração, poderá encontrá-lo novamente listando todas asconfigurações de sua conta.

Para atualizar uma configuração do MSKPrimeiro, certifique-se de que o número de partições por agente no cluster MSK está abaixo dos limitesdescritos emthe section called “ Número de partições por agente” (p. 122). Não é possível atualizar aconfiguração de um cluster que exceda esses limites.

1. Crie um arquivo onde você especifique as propriedades de configuração que deseja atualizar eos valores que deseja atribuir a elas. Veja a seguir o conteúdo de um arquivo de configuração deexemplo.

44

Page 51: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorPara excluir uma configuração do MSK

auto.create.topics.enable = true

zookeeper.connection.timeout.ms = 1000

min.insync.replicas = 2

2. Execute o seguinte comando na AWS CLI, substituindo config-file-path pelo caminho para oarquivo onde você salvou a configuração na etapa anterior.

Substituirconfiguração-arnCom o ARN obtido ao criar a configuração. Se você não salvou oARN ao criar a configuração, poderá usar o comando list-configurations para listar todas asconfigurações de sua conta e encontrar a configuração desejada na lista exibida na resposta. O ARNda configuração também aparece nessa lista.

aws kafka update-configuration --arn configuration-arn --description "Example configuration revision description." --server-properties fileb://config-file-path

3. Veja a seguir um exemplo de uma resposta bem-sucedida após a execução desse comando.

{ "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1", "LatestRevision": { "CreationTime": "2020-08-27T19:37:40.626Z", "Description": "Example configuration revision description.", "Revision": 2 }}

Para excluir uma configuração do MSKO processo a seguir mostra como excluir uma configuração que não está anexada a um cluster. Não épossível excluir um configuraiton anexado a um cluster.

1. Para executar este exemplo, substitua configuration-arn pelo ARN obtido ao criar aconfiguração. Se você não salvou o ARN ao criar a configuração, poderá usar o comando list-configurations para listar todas as configurações de sua conta e encontrar a configuraçãodesejada na lista exibida na resposta. O ARN da configuração também aparece nessa lista.

aws kafka delete-configuration --arn configuration-arn

2. Veja a seguir um exemplo de uma resposta bem-sucedida após a execução desse comando.

{ "arn": " arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1", "state": "DELETING"}

Para descrever uma configuração do MSK1. Esse comando retorna metadados sobre a configuração. Para obter uma descrição detalhada da

configuração, execute o describe-configuration-revision.

45

Page 52: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Como descrever uma revisão da configuração do MSK

Para executar este exemplo, substitua configuration-arn pelo ARN obtido ao criar aconfiguração. Se você não salvou o ARN ao criar a configuração, poderá usar o comando list-configurations para listar todas as configurações de sua conta e encontrar a configuraçãodesejada na lista exibida na resposta. O ARN da configuração também aparece nessa lista.

aws kafka describe-configuration --arn configuration-arn

2. Veja a seguir um exemplo de uma resposta bem-sucedida após a execução desse comando.

{ "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1", "CreationTime": "2019-05-21T00:54:23.591Z", "Description": "Example configuration description.", "KafkaVersions": [ "1.1.1" ], "LatestRevision": { "CreationTime": "2019-05-21T00:54:23.591Z", "Description": "Example configuration description.", "Revision": 1 }, "Name": "SomeTest"}

Como descrever uma revisão da configuração do MSKDescrever uma configuração do MSK usando o comando describe-configuration, fornece osmetadados da configuração. Para ver uma descrição da configuração, use o comando describe-configuration-revision.

• Execute o seguinte comando, substituindo configuration-arn pelo ARN obtido quando vocêcriou a configuração. Se você não salvou o ARN ao criar a configuração, poderá usar o comandolist-configurations para listar todas as configurações de sua conta e encontrar a configuraçãodesejada na lista exibida na resposta. O ARN da configuração também aparece nessa lista.

aws kafka describe-configuration-revision --arn configuration-arn --revision 1

Veja a seguir um exemplo de uma resposta bem-sucedida após a execução desse comando.

{ "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1", "CreationTime": "2019-05-21T00:54:23.591Z", "Description": "Example configuration description.", "Revision": 1, "ServerProperties": "YXV0by5jcmVhdGUudG9waWNzLmVuYWJsZSA9IHRydWUKCgp6b29rZWVwZXIuY29ubmVjdGlvbi50aW1lb3V0Lm1zID0gMTAwMAoKCmxvZy5yb2xsLm1zID0gNjA0ODAwMDAw"}

O valor de ServerProperties é codificado em Base64. Se você usar um decodificador em Base64(por exemplo, https://www.base64decode.org/) para decodificá-lo manualmente, obterá o conteúdodo arquivo de configuração original usado para criar a configuração personalizada. Nesse caso, vocêobtém o seguinte:

46

Page 53: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorComo listar todas as configurações doMSK em sua conta para a região atual

auto.create.topics.enable = true

zookeeper.connection.timeout.ms = 1000

log.roll.ms = 604800000

Como listar todas as configurações do MSK em suaconta para a região atual• Execute o seguinte comando.

aws kafka list-configurations

Veja a seguir um exemplo de uma resposta bem-sucedida após a execução desse comando.

{ "Configurations": [ { "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1", "CreationTime": "2019-05-21T00:54:23.591Z", "Description": "Example configuration description.", "KafkaVersions": [ "1.1.1" ], "LatestRevision": { "CreationTime": "2019-05-21T00:54:23.591Z", "Description": "Example configuration description.", "Revision": 1 }, "Name": "SomeTest" }, { "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1", "CreationTime": "2019-05-03T23:08:29.446Z", "Description": "Example configuration description.", "KafkaVersions": [ "1.1.1" ], "LatestRevision": { "CreationTime": "2019-05-03T23:08:29.446Z", "Description": "Example configuration description.", "Revision": 1 }, "Name": "ExampleConfigurationName" } ]}

47

Page 54: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Proteção de dados

Segurança no Amazon ManagedStreaming for Apache Kafka

A segurança da nuvem na AWS é a nossa maior prioridade. Como cliente da AWS, você se beneficiará deum datacenter e de uma arquitetura de rede criados para atender aos requisitos das organizações com asmaiores exigências de segurança.

A segurança é uma responsabilidade compartilhada entre a AWS e você. O modelo de responsabilidadecompartilhada descreve isso como segurança da nuvem e segurança na nuvem.

• Segurança da nuvem: a AWS é responsável pela proteção da infraestrutura que executa produtosda AWS na Nuvem AWS. A AWS também fornece serviços que podem ser usados com segurança.Auditores de terceiros testam e verificam regularmente a eficácia da nossa segurança como parte dosProgramas de conformidade da AWS. Para saber mais sobre os programas de conformidade que seaplicam ao Amazon Managed Streaming for Apache Kafka, consulteAmazon Web Services no escopopelo programa de conformidade.

• Segurança na nuvem — Sua responsabilidade é determinada pelo serviço da AWS que você usa. Vocêtambém é responsável por outros fatores, incluindo a confidencialidade de seus dados, os requisitos dasua empresa e as leis e regulamentos aplicáveis.

Esta documentação ajuda você a entender como aplicar o modelo de responsabilidade compartilhada aousar o Amazon MSK. Os tópicos a seguir mostram como configurar o Amazon MSK para atender aos seusobjetivos de segurança e de conformidade. Você também aprenderá a usar outros Amazon Web Servicesque ajudam a monitorar e proteger os recursos do Amazon MSK.

Tópicos• Proteção de dados no Amazon Managed Streaming for Apache Kafka (p. 48)• Autorização e autenticação de APIs do Amazon MSK (p. 52)• Autorização e autenticação de APIs do Apache Kafka (p. 60)• Controlar o acesso ao Apache ZooKeeper (p. 76)• Logging (p. 78)• Validação de conformidade do Amazon Managed Streaming for Apache Kafka (p. 82)• Resiliência no Amazon Managed Streaming for Apache Kafka (p. 83)• Segurança de infraestrutura no Amazon Managed Streaming for Apache Kafka (p. 83)

Proteção de dados no Amazon Managed Streamingfor Apache Kafka

OAWS Modelo de responsabilidade compartilhadaO se aplica à proteção de dados no Amazon ManagedStreaming for Apache Kafka. Conforme descrito neste modelo,AWSA é responsável pela proteção dainfraestrutura global que executa todos os Nuvem AWS . Você é responsável por manter o controlesobre seu conteúdo hospedado nessa infraestrutura. Esse conteúdo inclui as tarefas de configuração egerenciamento de segurança dos serviços da AWS que você usa. Para obter mais informações sobrea privacidade de dados, consulte as Perguntas frequentes sobre privacidade de dados. Para obtermais informações sobre a proteção de dados na Europa, consulte a postagem do blog AWS SharedResponsibility Model and GDPR no Blog de segurança da AWS.

48

Page 55: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Criptografia

Para fins de proteção de dados, recomendamos que você proteja o Conta da AWS e configurar contasde usuário individuais comAWS Identity and Access Management(IAM). Dessa maneira, cada usuárioreceberá apenas as permissões necessárias para cumprir suas obrigações de trabalho. Recomendamostambém que você proteja seus dados das seguintes formas:

• Use uma autenticação multifator (MFA) com cada conta.• Use SSL/TLS para se comunicar com os recursos da AWS. Recomendamos TLS 1.2 ou posterior.• Configure o registro em log das atividades da API e do usuário com o AWS CloudTrail.• Use as soluções de criptografia da AWS, juntamente com todos os controles de segurança padrão nos

serviços da AWS.• Use serviços gerenciados de segurança avançada, como o Amazon Macie, que ajuda a localizar e

proteger dados pessoais armazenados no Amazon S3.• Se você precisar de módulos criptográficos validados pelo FIPS 140-2 ao acessar a AWS por meio de

uma interface de linha de comando ou uma API, use um endpoint do FIPS. Para obter mais informaçõessobre endpoints do FIPS, consulte Federal Information Processing Standard (FIPS) 140-2.

É altamente recomendável que você nunca coloque informações confidenciais ou confidenciais, comoendereços de e-mail dos seus clientes, em tags ou campos de formato livre, como umNomecampo.Isso inclui quando você trabalha com o Amazon MSK ou outrosAWSusando o console, API,AWS CLI,ouAWSSDKs. Quaisquer dados inseridos em tags ou campos de formato livre usados para nomes podemser usados para logs de cobrança ou diagnóstico. Se você fornecer um URL para um servidor externo,recomendamos que você não inclua informações de credenciais no URL para validar a solicitação feita aesse servidor.

Tópicos• Criptografia do Amazon MSK (p. 49)• Como começar a usar a criptografia? (p. 50)

Criptografia do Amazon MSKO Amazon MSK fornece opções de criptografia de dados que você pode usar para atender a requisitosrigorosos de gerenciamento de dados. Os certificados que o Amazon MSK usa para criptografia devem serrenovados a cada 13 meses. O Amazon MSK renova automaticamente esses certificados para todos osclusters. Ele define o estado do cluster como MAINTENANCE quando inicia a operação de atualização docertificado. Quando a atualização é concluída, o estado é definido novamente como ACTIVE. Enquanto umcluster está no estado MAINTENANCE, você pode continuar a produzir e consumir dados, mas não podeexecutar nenhuma operação de atualização nele.

Criptografia noRestO Amazon MSK se integra aoAWS Key Management Service(KMS) para oferecer uma criptografiatransparente no lado do servidor. O Amazon MSK sempre criptografa seus dados em repouso. Quandovocê cria um cluster do MSK, é possível especificar oAWS KMSA chave mestra do cliente (CMK) quevocê deseja que o Amazon MSK use para criptografar os dados em repouso. Se você não especificarum CMK, o Amazon MSK cria umAWSCMK gerenciada pelaPara você e o usa em seu nome. Para obtermais informações sobre CMKs, consulteChaves mestras de cliente (CMKs)noAWS Key ManagementServiceGuia do desenvolvedor.

Criptografia em trânsitoO Amazon MSK usa TLS 1.2. Por padrão, ele criptografa os dados em trânsito entre os agentes do clusterdo MSK. É possível substituir esse padrão no momento de criação do cluster.

Para a comunicação entre clientes e agentes, é necessário especificar uma destas três configurações:

49

Page 56: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorComo começar a usar a criptografia?

• Permitir somente dados criptografados por TLS. Essa é a configuração padrão.• Permitir dados não criptografados e dados criptografados por TLS.• Permitir apenas dados não criptografados.

Os agentes do Amazon MSK usam o públicoAWS Certificate ManagerCertificados de Portanto, qualquerarmazenamento de confiança que confie no Amazon Trust Services também confia nos certificados dosagentes do Amazon MSK.

A ativação da criptografia reduz o desempenho em aproximadamente 30%. No entanto, a porcentagemexata depende da configuração do cluster e dos clientes.

Como começar a usar a criptografia?Ao criar um cluster do MSK, você pode especificar configurações de criptografia no formato JSON. Vejaum exemplo a seguir.

{ "EncryptionAtRest": { "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/abcdabcd-1234-abcd-1234-abcd123e8e8e" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" }}

Para DataVolumeKMSKeyId, é possível especificar uma CMK gerenciada pelo cliente oua CMK gerenciada pela AWS para o MSK na conta (alias/aws/kafka). Se você nãoespecificaEncryptionAtRestO Amazon MSK ainda criptografa seus dados em repouso naAWSCMKgerenciada pela. Para determinar qual CMK o cluster está usando, envie uma solicitação GET ou chame aoperação de API DescribeCluster.

para oEncryptionInTransit, o valor padrão deInClusterfor true (verdadeiro), mas será possíveldefini-lo como false (falso) se não quiser que o Amazon MSK criptografe seus dados à medida que elespassam entre agentes.

Para especificar o modo de criptografia para dados em trânsito entre clientes e agentes, definaClientBroker como um dos três valores: TLS, TLS_PLAINTEXT ou PLAINTEXT.

Como especificar configurações de criptografia ao criar um cluster

1. Salve o conteúdo do exemplo anterior em um arquivo e dê ao arquivo qualquer nome que desejar. Porexemplo, nomeie-o como encryption-settings.json.

2. Execute acreate-clustere use o comandoencryption-infoPara apontar para o arquivo ondevocê salvou sua configuração JSON. Veja um exemplo a seguir.

aws kafka create-cluster --cluster-name "ExampleClusterName" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --kafka-version "2.2.1" --number-of-broker-nodes 3

Veja a seguir um exemplo de uma resposta bem-sucedida após a execução desse comando.

{ "ClusterArn": "arn:aws:kafka:us-east-1:123456789012:cluster/SecondTLSTest/abcdabcd-1234-abcd-1234-abcd123e8e8e",

50

Page 57: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorComo começar a usar a criptografia?

"ClusterName": "ExampleClusterName", "State": "CREATING"}

Como testar a criptografia por TLS

1. Crie uma máquina de cliente seguindo as orientações em the section called “Etapa 4: Criar umamáquina cliente” (p. 11).

2. Instale o Apache Kafka na máquina de cliente.3. Execute o comando a seguir em uma máquina com a AWS CLI instalada, substituindo clusterARN

pelo ARN do cluster (um cluster criado com ClientBroker definido como TLS conforme o exemplodo procedimento anterior).

aws kafka describe-cluster --cluster-arn clusterARN

No resultado, procure o valor de ZookeeperConnectString e salve-o porque você precisará delena próxima etapa.

4. Acesse a pasta bin da instalação do Apache Kafka na máquina de cliente. Para criar um tópico,execute o seguinte comando, substituindo ZookeeperConnectString pelo valor obtido paraZookeeperConnectString na etapa anterior.

kafka-topics.sh --create --zookeeper ZookeeperConnectString --replication-factor 3 --partitions 1 --topic TLSTestTopic

5. Neste exemplo, o armazenamento de confiança da JVM é usado para se comunicar com o clusterdo MSK. Para fazer isso, crie primeiramente uma pasta chamada /tmp na máquina cliente. Depois,acesse a pasta bin da instalação do Apache Kafka e execute o comando a seguir. (Seu caminho daJVM pode ser diferente.)

cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks

6. Enquanto ainda estiver na pasta bin da instalação do Apache Kafka na máquina cliente, crie umarquivo de texto chamado client.properties com o conteúdo a seguir.

security.protocol=SSLssl.truststore.location=/tmp/kafka.client.truststore.jks

7. Execute o comando a seguir em uma máquina com a AWS CLI instalada, substituindo clusterARNpelo ARN do seu cluster.

aws kafka get-bootstrap-brokers --cluster-arn clusterARN

Um resultado bem-sucedido tem a aparência a seguir. Salve este resultado porque você precisarádele na próxima etapa.

{ "BootstrapBrokerStringTls": "a-1.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-3.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-2.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123"}

8. Na pasta bin da instalação do Apache Kafka na máquina de cliente, execute o seguinte, substituindoBootstrapBrokerStringTls pelo valor obtido na etapa anterior. Deixe este comando de produtorem execução.

51

Page 58: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Autorização e autenticação de APIs do Amazon MSK

kafka-console-producer.sh --broker-list BootstrapBrokerStringTls --producer.config client.properties --topic TLSTestTopic

9. Abra uma nova janela de comando na mesma máquina de cliente, acesse a pasta bin da instalaçãodo Apache Kafka e execute o comando a seguir para criar um consumidor.

kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringTls --consumer.config client.properties --topic TLSTestTopic

10. Na janela do produtor, digite uma mensagem de texto seguida de um retorno e procure a mesmamensagem na janela do consumidor. O Amazon MSK criptografou esta mensagem em trânsito.

Para obter mais informações sobre como configurar clientes do Apache Kafka para trabalhar com dadoscriptografados, consulte Configurar clientes do Kafka.

Autorização e autenticação de APIs do AmazonMSK

O AWS Identity and Access Management (IAM) é um serviço da AWS que ajuda a controlar oacesso aos recursos da AWS de forma segura. Os administradores do IAM controlam quem podeserAutenticado(conectado) eautorizado(ter permissões) para usar recursos do Amazon MSK. O IAM é umserviço da AWS que pode ser usado sem custo adicional.

Esta página descreve como você pode usar o IAM para controlar quem pode executarOperações doAmazon MSKNo cluster do. Para obter informações sobre como controlar quem pode executar operaçõesdo Apache Kafka em seu cluster, consultethe section called “Autorização e autenticação de APIs doApache Kafka” (p. 60).

Tópicos• Como o Amazon MSK funciona com o IAM (p. 52)• Exemplos de políticas baseadas em identidade do Amazon MSK (p. 55)• Usar funções vinculadas ao serviço para o Amazon MSK (p. 58)• Solução de problemas de identidade e acesso do Amazon MSK (p. 59)

Como o Amazon MSK funciona com o IAMAntes de usar o IAM para gerenciar o acesso ao Amazon MSK, você deve entender quais recursos do IAMestão disponíveis para uso com o Amazon MSK. Para obter uma visão geral de como o Amazon MSK eoutrosAWSOs serviços do funcionam com o IAM, consulteAWSServiços compatíveis com o IAMnoIAMUser Guide.

Tópicos• Políticas baseadas em identidade do Amazon MSK (p. 53)• Políticas baseadas em recursos do Amazon MSK (p. 55)• Autorização baseada em tags do Amazon MSK (p. 55)• Funções do Amazon MSK (p. 55)

52

Page 59: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Como o Amazon MSK funciona com o IAM

Políticas baseadas em identidade do Amazon MSKCom as políticas baseadas em identidade do API Gateway, é possível especificar ações ou recursospermitidos ou negados, bem como as condições sob as quais as ações são permitidas ou negadas. OAmazon MSK oferece suporte a ações, chaves de condição e recursos específicos. Para conhecer todosos elementos usados em uma política JSON, consulte Referência de elementos de política JSON do IAMno Guia do usuário do IAM.

ActionsOs administradores podem usar as políticas JSON da AWS para especificar quem tem acesso a quê. Ouseja, qual principal pode executar ações em quais recursos, e em que condições.

O elemento Action de uma política JSON descreve as ações que você pode usar para permitir ou negaracesso em uma política. As ações de política geralmente têm o mesmo nome que a operação de APIda AWS associada. Existem algumas exceções, como ações somente de permissão, que não têm umaoperação de API correspondente. Há também algumas operações que exigem várias ações em umapolítica. Essas ações adicionais são chamadas de ações dependentes.

Inclua ações em uma política para conceder permissões para executar a operação associada.

As ações de políticas no Amazon MSK usam o seguinte prefixo antes da ação: kafka:. Porexemplo, para conceder permissão a alguém para descrever um cluster MSK com o AmazonMSKDescribeClusteroperação da API, você inclui okafka:DescribeClusteração em sua política.As instruções de política devem incluir um elemento Action ou NotAction. O Amazon MSK define seupróprio conjunto de ações que descrevem as tarefas que podem ser executadas com esse serviço.

Para especificar várias ações em uma única declaração, separe-as com vírgulas, conforme o seguinte:

"Action": ["kafka:action1", "kafka:action2"]

Você também pode especificar várias ações usando caracteres curinga (*). Por exemplo, para especificartodas as ações que começam com a palavra Describe, inclua a seguinte ação:

"Action": "kafka:Describe*"

Para ver uma lista das ações do Amazon MSK, consulteAções, recursos e chaves de condição do AmazonManaged Streaming for Apache KafkanoIAM User Guide.

ResourcesOs administradores podem usar as políticas JSON da AWS para especificar quem tem acesso a quê. Ouseja, qual principal pode executar ações em quais recursos, e em que condições.

O elemento Resource de política JSON especifica o objeto ou os objetos aos quais a ação se aplica.As instruções devem incluir um elemento Resource ou um elemento NotResource. Como práticarecomendada, especifique um recurso usando seu Nome de recurso da Amazon (ARN). Isso pode ser feitopara ações que oferecem suporte a um tipo de recurso específico, conhecido como permissões em nívelde recurso.

Para ações que não oferecem suporte a permissões em nível de recurso, como operações de listagem,use um curinga (*) para indicar que a instrução se aplica a todos os recursos.

"Resource": "*"

O recurso de instância do Amazon MSK tem o seguinte ARN:

53

Page 60: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Como o Amazon MSK funciona com o IAM

arn:${Partition}:kafka:${Region}:${Account}:cluster/${ClusterName}/${UUID}

Para obter mais informações sobre o formato de ARNs, consulte Nomes de recursos da Amazon (ARNs) enamespaces de serviços da AWS.

Por exemplo, para especificar a instância CustomerMessages na instrução, use o seguinte ARN:

"Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/CustomerMessages/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2"

Para especificar todas as instâncias que pertencem a uma conta específica, use o caractere curinga (*):

"Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/*"

Algumas ações do Amazon MSK, como as de criação de recursos, não podem ser executadas em umrecurso específico. Nesses casos, você deve usar o caractere curinga (*).

"Resource": "*"

Para especificar vários recursos em uma única instrução, separe os ARNs com vírgulas.

"Resource": ["resource1", "resource2"]

Para ver uma lista de tipos de recursos do Amazon MSK e seus ARNs, consulteRecursos definidos peloAmazon Managed Streaming for Apache KafkanoIAM User Guide. Para saber com quais ações você podeespecificar o ARN de cada recurso, consulteAções definidas pelo Amazon Managed Streaming for ApacheKafka.

Chaves de condição

Os administradores podem usar as políticas JSON da AWS para especificar quem tem acesso a quê. Ouseja, qual principal pode executar ações em quais recursos, e em que condições.

O elemento Condition (ou bloco de Condition) permite que você especifique condições nas quaisuma instrução está em vigor. O elemento Condition é opcional. É possível criar expressões condicionaisque usam operadores de condição, como “igual a” ou “menor que”, para fazer a condição da políticacorresponder aos valores na solicitação.

Se você especificar vários elementos Condition em uma instrução ou várias chaves em um únicoelemento Condition, a AWS os avaliará usando uma operação lógica AND. Se você especificar váriosvalores para uma única chave de condição, a AWS avaliará a condição usando uma operação lógica OR.Todas as condições devem ser atendidas para que as permissões da instrução sejam concedidas.

Você também pode usar variáveis de espaço reservado ao especificar as condições. Por exemplo, épossível conceder a um usuário do IAM permissão para acessar um recurso somente se ele estivermarcado com seu nome de usuário do IAM. Para obter mais informações, consulte Elementos de políticado IAM: variáveis e tags no Guia do usuário do IAM.

AWSA oferece suporte a chaves de condição globais e chaves de condição específicas do serviço. Paraver todas as chaves de condição globais da AWS, consulte Chaves de contexto de condição globais daAWS no Guia do usuário do IAM.

O Amazon MSK define seu próprio conjunto de chaves de condição e também oferece suporte ao uso dealgumas chaves de condição globais. Para ver todas as chaves de condição globais da AWS, consulteChaves de contexto de condição globais da AWS no Guia do usuário do IAM.

54

Page 61: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Exemplos de políticas baseadas em identidade

Para ver uma lista das chaves de condição do Amazon MSK, consulte.Chaves de condição do AmazonManaged Streaming for Apache KafkanoIAM User Guide. Para saber com quais ações e recursos umachave de condição pode ser usada, consulteAções definidas pelo Amazon Managed Streaming for ApacheKafka.

Examples

Para visualizar exemplos de políticas baseadas em identidade do Amazon MSK, consulteExemplos depolíticas baseadas em identidade do Amazon MSK (p. 55).

Políticas baseadas em recursos do Amazon MSKO Amazon MSK não oferece suporte a políticas baseadas em recurso.

Autorização baseada em tags do Amazon MSKÉ possível anexar tags a clusters do Amazon MSK. Para controlar o acesso baseado em tags, forneçainformações sobre as tags no elemento de condição de uma política usando as chaves de condiçãokafka:ResourceTag/key-name, aws:RequestTag/key-name ou aws:TagKeys. Para obter maisinformações sobre recursos de marcação do Amazon MSK, consultethe section called “Marcar umcluster” (p. 32).

Para visualizar um exemplo de política baseada em identidades para limitar o acesso a um cluster baseadonas tags desse cluster, consulte Acessar clusters do Amazon MSK com base em tags (p. 57).

Funções do Amazon MSKUmaIAM role (Função do IAM)É uma entidade dentro de sua conta da Amazon Web Services que tempermissões específicas.

Usar credenciais temporárias com o Amazon MSKÉ possível usar credenciais temporárias para fazer login com federação, assumir uma função do IAMou assumir uma função entre contas. As credenciais de segurança temporárias são obtidas chamandooperações da API do AWS STS , como AssumeRole ou GetFederationToken.

O Amazon MSK oferece suporte ao uso de credenciais temporárias.

Funções vinculadas ao serviçoFunções vinculadas ao serviçoPermitir que a Amazon Web Services acesse recursos em outros serviçospara concluir uma ação em seu nome. As funções vinculadas ao serviço aparecem em sua conta doIAM e são de propriedade do serviço. Um administrador do IAM pode visualizar, mas não pode editar aspermissões para funções vinculadas ao serviço.

O Amazon MSK oferece suporte a funções vinculadas ao serviço. Para obter detalhes sobre como criar ougerenciar funções vinculadas ao serviço do Amazon MSK, consultethe section called “Funções vinculadasao serviço” (p. 58).

Exemplos de políticas baseadas em identidade doAmazon MSKPor padrão, os usuários e as funções do IAM não têm permissão para executar ações de API do AmazonMSK. Um administrador do IAM deve criar políticas do IAM que concedam aos usuários e funções

55

Page 62: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Exemplos de políticas baseadas em identidade

permissão para executarem operações de API específicas nos recursos especificados de que precisam. Oadministrador deve anexar essas políticas aos usuários ou grupos do IAM que exigem essas permissões.

Para saber como criar uma política baseada em identidade do IAM usando esses exemplos dedocumentos de política JSON, consulte Criar políticas na guia JSON no Guia do usuário do IAM.

Tópicos• Melhores práticas de políticas (p. 56)• Permitir que os usuários visualizem suas próprias permissões (p. 56)• Acessando um cluster do Amazon MSK (p. 57)• Acessar clusters do Amazon MSK com base em tags (p. 57)

Melhores práticas de políticasAs políticas baseadas em identidade são muito eficientes. Elas determinam se alguém pode criar, acessarou excluir recursos do Amazon MSK em sua conta. Essas ações podem incorrer em custos para o Contada AWS . Ao criar ou editar políticas baseadas em identidade, siga estas diretrizes e recomendações:

• Comece a usar oAWSPolíticas gerenciadas do— Para começar a usar o Amazon MSK rapidamente,useAWSPara conceder a seus funcionários as permissões de que precisam. Essas políticas já estãodisponíveis em sua conta e são mantidas e atualizadas pela AWS. Para obter mais informações,consulte Começar a usar permissões com políticas gerenciadas da AWS no Guia do usuário do IAM.

• Conceder privilégio mínimo: ao criar políticas personalizadas, conceda apenas as permissõesnecessárias para executar uma tarefa. Comece com um conjunto mínimo de permissões e concedapermissões adicionais conforme necessário. Fazer isso é mais seguro do que começar com permissõesque são muito lenientes e tentar restringi-las posteriormente. Para obter mais informações, consulteConceder privilégio mínimo no Guia do usuário do IAM.

• Habilitar MFA para operações confidenciais: para aumentar a segurança, exija que os usuários do IAMusem Multi-Factor Authentication (MFA) para acessar recursos ou operações de API confidenciais. Paraobter mais informações, consulte Usar autenticação multifator (MFA) na AWS no Guia do Usuário doIAM.

• Usar condições de política para segurança adicional: na medida do possível, defina as condiçõessob as quais suas políticas baseadas em identidade permitem o acesso a um recurso. Por exemplo,você pode gravar condições para especificar um intervalo de endereços IP permitidos do qual asolicitação deve partir. Você também pode escrever condições para permitir somente solicitações emuma data especificada ou período ou para exigir o uso de SSL ou MFA. Para obter mais informações,consulteElementos da política JSON do: CondiçãonoIAM User Guide.

Permitir que os usuários visualizem suas próprias permissõesEste exemplo mostra como você pode criar uma política que permite que os usuários do IAM visualizemas políticas gerenciadas e em linha anexadas a sua identidade de usuário. Essa política inclui permissõespara concluir essa ação no console ou de forma programática usando a AWS CLI ou a API da AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies",

56

Page 63: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Exemplos de políticas baseadas em identidade

"iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ]}

Acessando um cluster do Amazon MSKNeste exemplo, você deseja conceder a um usuário do IAM em sua conta da Amazon Web Servicesacesso a um de seus cluster,,purchaseQueriesCluster. Esta política permite que o usuário descreva ocluster, obtenha seus agentes de bootstrap, liste seus nós de agente e o atualize.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"UpdateCluster", "Effect":"Allow", "Action":[ "kafka:Describe*", "kafka:Get*", "kafka:List*", "kafka:Update*" ], "Resource":"arn:aws:kafka:us-east-1:012345678012:cluster/purchaseQueriesCluster/abcdefab-1234-abcd-5678-cdef0123ab01-2" } ]}

Acessar clusters do Amazon MSK com base em tagsVocê pode usar condições em sua política baseada em identidade para controlar o acesso aos recursosdo Amazon MSK com base em tags. Este exemplo mostra como você pode criar uma política que permitaque o usuário descreva o cluster, obtenha seus agentes de bootstrap, liste seus nós de agente, atualize-o e exclua-o. No entanto, a permissão será concedida somente se a tag de cluster Owner tiver o valor donome desse usuário.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccessClusterIfOwner", "Effect": "Allow",

57

Page 64: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Funções vinculadas ao serviço

"Action": [ "kafka:Describe*", "kafka:Get*", "kafka:List*", "kafka:Update*", "kafka:Delete*" ], "Resource": "arn:aws:kafka:us-east-1:012345678012:cluster/*", "Condition": { "StringEquals": { "kafka:ResourceTag/Owner": "${aws:username}" } } } ]}

É possível anexar essa política aos usuários do IAM na sua conta. Se um usuário chamadorichard-roeTentativa de atualizar um cluster do MSK, o cluster deve ser marcado comoOwner=richard-roeouowner=richard-roe. Caso contrário, ele terá o acesso negado. A chave da tag de condiçãoOwner corresponde a Owner e a owner porque os nomes de chaves de condição não fazem distinçãoentre maiúsculas e minúsculas. Para obter mais informações, consulteElementos da política JSON do:CondiçãonoIAM User Guide.

Usar funções vinculadas ao serviço para o AmazonMSKAmazon MSK usa oAWS Identity and Access Management(IAM)Funções vinculadas ao serviço do. Afunção vinculada ao serviço é um tipo exclusivo de função do IAM vinculada diretamente ao Amazon MSK.As funções vinculadas a serviços são predefinidas pelo Amazon MSK e incluem todas as permissões queo serviço requer para chamar outrosAWSServiços em seu nome.

Uma função vinculada ao serviço facilita a configuração do porque você não precisa adicionar aspermissões necessárias manualmente. O Amazon MSK define as permissões das funções vinculadas aoserviço do. A menos que definido de outra forma, somente o Amazon MSK pode assumir suas funções. Aspermissões definidas incluem a política de confiança e a política de permissões, e essa política não podeser anexada a nenhuma outra entidade do IAM.

Para obter informações sobre outros serviços que oferecem suporte a funções vinculadas ao serviço,consulteAmazon Web Services compatíveis com o IAMe procure os serviços que têmYes (Sim)noFunçãovinculada ao serviçocoluna. Escolha um Sim com um link para exibir a documentação da função vinculadaa serviço desse serviço.

Tópicos• Permissões de função vinculada ao serviço para Amazon MSK (p. 58)• Criação de uma função vinculada ao serviço para Amazon MSK (p. 59)• Edição de uma função vinculada ao serviço do Amazon MSK (p. 59)• Regiões compatíveis com funções vinculadas ao serviço do Amazon MSK (p. 59)

Permissões de função vinculada ao serviço para Amazon MSKO Amazon MSK usa a função vinculada ao serviço chamadaAWSServiceRoleForkafka— Permite que oAmazon MSK acesseAWSRecursos em seu nome.

A função vinculada ao serviço AWSServiceRoleForKafka confia nos seguintes serviços para assumir afunção:

58

Page 65: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Solução de problemas

• kafka.amazonaws.com

A política de permissões da função permite que o Amazon MSK conclua as seguintes ações nos recursosespecificados:

• Ação: ec2:CreateNetworkInterface em *

Ação: ec2:DescribeNetworkInterfaces em *

Ação: ec2:CreateNetworkInterfacePermission em *

Ação: ec2:AttachNetworkInterface em *

Ação: ec2:DeleteNetworkInterface em *

Ação: ec2:DetachNetworkInterface em *

Você deve configurar permissões para que uma entidade do IAM (por exemplo, um usuário, grupo oufunção) crie, edite ou exclua uma função vinculada ao serviço. Para obter mais informações, consultePermissões de função vinculada ao serviço no Guia do usuário do IAM.

Criação de uma função vinculada ao serviço para Amazon MSKNão é necessário criar uma função vinculada ao serviço manualmente. Quando você cria um clusterdo Amazon MSK noAWS Management Console, oAWS CLI, ou oAWS, o Amazon MSK cria a funçãovinculada ao serviço para você.

Se você excluir essa função vinculada ao serviço e precisar criá-la novamente, poderá usar esse mesmoprocesso para recriar a função em sua conta. Quando você cria um cluster do Amazon MSK, o AmazonMSK cria a função vinculada ao serviço para você novamente.

Edição de uma função vinculada ao serviço do Amazon MSKO Amazon MSK não permite que você edite a função vinculada ao serviço AWSServiceRoleForkafka.Depois que criar uma função vinculada ao serviço, você não poderá alterar o nome da função, pois váriasentidades podem fazer referência a ela. No entanto, você poderá editar a descrição da função usando oIAM. Para obter mais informações, consulte Editar uma função vinculada ao serviço no Guia do usuário doIAM.

Regiões compatíveis com funções vinculadas ao serviço doAmazon MSKO Amazon MSK oferece suporte a funções vinculadas a serviços em todas as regiões em que o serviçoestá disponível. Para obter mais informações, consulte Regiões e endpoints do AWS.

Solução de problemas de identidade e acesso doAmazon MSKUse as informações a seguir para ajudar a diagnosticar e corrigir problemas comuns que você possaencontrar ao trabalhar com o Amazon MSK e o IAM.

Tópicos• Não tenho autorização para executar uma ação no Amazon MSK (p. 60)

59

Page 66: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Autorização e autenticação de APIs do Apache Kafka

Não tenho autorização para executar uma ação no Amazon MSKSe o AWS Management Console informar que você não está autorizado a executar uma ação, você deveráentrar em contato com o administrador para obter assistência. O administrador é a pessoa que forneceu avocê o seu nome de usuário e senha.

O seguinte exemplo de erro ocorre quando a propriedademateojacksonO usuário do IAM tenta usar oconsole para excluir um cluster, mas não tem okafka:DeleteClusterPermissões do.

User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: kafka:DeleteCluster on resource: purchaseQueriesCluster

Neste caso, Mateo pede ao administrador para atualizar suas políticas para permitir a ele o acesso aorecurso purchaseQueriesCluster usando a ação kafka:DeleteCluster.

Autorização e autenticação de APIs do ApacheKafka

Você pode usar o IAM para autenticar clientes e permitir ou negar ações do Apache Kafka. Comoalternativa, você pode usar TLS ou SASL/SCRAM para autenticar clientes e ACLs do Apache Kafka parapermitir ou negar ações.

Para obter informações sobre como controlar quem pode executarOperações do Amazon MSKNo clusterdo, consultethe section called “Autorização e autenticação de APIs do Amazon MSK” (p. 52).

Tópicos• Controle de acesso IAM (p. 60)• Autenticação TLS mútuo (p. 68)• autenticação de nome de usuário e senha comAWSSecrets Manager (p. 71)• ACLs do Apache Kafka (p. 75)

Controle de acesso IAMO controle de acesso do IAM para o Amazon MSK permite que você manipule a autenticação e aautorização para seu cluster MSK. Isso elimina a necessidade de usar um mecanismo para autenticação eoutro para autorização. Por exemplo, quando um cliente tenta gravar em seu cluster, o Amazon MSK usa oIAM para verificar se esse cliente é uma identidade autenticada e também se ele está autorizado a produzirem seu cluster.

O Amazon MSK registra eventos de acesso para que você possa auditá-los. Para obter mais informações,consulte the section called “Eventos do CloudTrail” (p. 80).

Para tornar possível o controle de acesso do IAM, o Amazon MSK faz pequenas modificações no código-fonte do Apache Kafka. Essas modificações não causarão uma diferença notável em sua experiênciaApache Kafka.

Important

O controle de acesso do IAM não se aplica aos nós do Apache ZooKeeper. Para obterinformações sobre como controlar o acesso a esses nós, consultethe section called “Controlar oacesso ao Apache ZooKeeper” (p. 76).

60

Page 67: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Controle de acesso IAM

Important

Oallow.everyone.if.no.acl.foundA configuração do Apache Kafka não terá efeito se ocluster usar o controle de acesso do IAM.Important

Você pode chamar APIs da ACL do Apache Kafka para um cluster MSK que usa o controle deacesso do IAM. No entanto, as ACLs do Apache Kafka armazenadas no Apache ZooKeeper nãotêm efeito sobre a autorização para funções do IAM. Use políticas do IAM para controlar o acessopara funções do IAM.

Como funciona o controle de acesso do IAM para o Amazon MSKPara usar o controle de acesso do IAM para o Amazon MSK, execute as seguintes etapas, descritas emdetalhes no restante desta seção.

• the section called “Criar um cluster que usa o controle de acesso do IAM” (p. 61)• the section called “Configurar clientes para controle de acesso do IAM” (p. 61)• the section called “Criar políticas de autorização” (p. 62)• the section called “Obtenha os corretores de bootstrap para controle de acesso do IAM” (p. 63)

Criar um cluster que usa o controle de acesso do IAMVocê pode usar oAWS Management Console, a API ou oAWS CLIpara criar um cluster que usa o controlede acesso do IAM. Não é possível ativar o controle de acesso do IAM para um cluster existente.

Usar aAWS Management Consolepara criar um cluster que usa o controle de acesso do IAM

1. Abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/.2. Selecione Create cluster (Criar cluster).3. SelecioneCriar cluster com configurações personalizadas.4. NoAutenticação, selecioneControle de acesso IAM.5. Preencha o restante do fluxo de trabalho para criar um cluster.

Use a API ou oAWS CLIpara criar um cluster que usa o controle de acesso do IAM

• Para criar um cluster com o controle de acesso do IAM habilitado, useoCreateClusterAPI ou o comandocreate-clustere passe o seguinte JSON paraoClientAuthenticationParâmetro:"ClientAuthentication": { "Sasl": { "Iam":{ "Enabled": true } }.

Configurar clientes para controle de acesso do IAMPara permitir que os clientes se comuniquem com um cluster MSK que usa o controle de acesso do IAM,configure-os conforme descrito nas etapas a seguir.

1. Adicione o seguinte aoclient.propertiesfile. Substituir<PATH_TO_TRUST_STORE_FILE>Com ocaminho totalmente qualificado para o arquivo de armazenamento de confiança no cliente.

ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>security.protocol=SASL_SSLsasl.mechanism=AWS_MSK_IAMsasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler

61

Page 68: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Controle de acesso IAM

Para usar um perfil nomeado que você criou paraAWScredenciais, incluaawsProfileName=“yourprofile name”;No arquivo de configuração do cliente. Para obter informações sobre perfisnomeados, consultePerfis nomeadosnoAWS CLIdocumentação.

2. Verifique se aaws-msk-iam-auth-1.0.0-all.jarestá no caminho da classe. Se você usar o Maven,adicione a seguinte dependência:

<dependency> <groupId>software.amazon.msk</groupId> <artifactId>aws-msk-iam-auth</artifactId> <version>1.0.0</version></dependency>

O plug-in cliente do Amazon MSK é de código aberto sob a licença do Apache 2.0.

Criar políticas de autorizaçãoAnexe uma política de autorização à função do IAM que corresponde ao cliente. Em uma política deautorização, você especifica quais ações permitir ou negar para a função. Se o seu cliente estiver emuma instância do Amazon EC2, associe a política de autorização à função do IAM para essa instância doAmazon EC2. Como alternativa, pode configurar o cliente para utilizar um perfil nomeado e, em seguida,associar a política de autorização à função para esse perfil nomeado.the section called “Configurar clientespara controle de acesso do IAM” (p. 61)descreve como configurar um cliente para usar um perfilnomeado.

Para obter informações sobre como criar uma política do IAM, consulte.Criando políticas IAM.

A seguir há uma política de autorização de exemplo para um cluster chamado MyTestCluster.Compreender a semântica doActioneResourceelementos, consultethe section called “Semântica deações e recursos” (p. 63).

Important

As alterações feitas em uma política do IAM são refletidas nas APIs do IAM e noAWSCLIImediatamente. No entanto, pode levar um tempo notável para que a alteração de políticaentre em vigor. Na maioria dos casos, as alterações de política entram em vigor em menos de umminuto. Às vezes, as condições de rede podem aumentar o atraso.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:AlterCluster", "kafka-cluster:DescribeCluster" ], "Resource": [ "arn:aws:kafka:us-east-1:0123456789012:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:*Topic*", "kafka-cluster:WriteData", "kafka-cluster:ReadData" ], "Resource": [

62

Page 69: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Controle de acesso IAM

"arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/*" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:us-east-1:0123456789012:group/MyTestCluster/*" ] } ]}

Para saber como criar uma política com elementos de ação que correspondam a casos de usocomuns do Apache Kafka, como produzir e consumir dados, consultethe section called “Casos de usocomuns” (p. 67).

Obtenha os corretores de bootstrap para controle de acesso do IAMConsulte the section called “Obter os agentes de bootstrap” (p. 21).

Semântica de ações e recursosEsta seção explica a semântica dos elementos de ação e recurso que você pode usar em uma políticade autorização do IAM. Para ver um exemplo de política, consulte the section called “Criar políticas deautorização” (p. 62).

ActionsA tabela a seguir lista as ações que você pode incluir em uma política de autorização ao usar o controlede acesso do IAM para o Amazon MSK. Quando você incluir em sua política de autorização uma açãodoAçãoda tabela, você também deve incluir as ações correspondentes doAções necessáriascoluna.

Ação Descrição Ações necessárias Recursos necessáriosdo

kafka-cluster:Connect

Concede permissãopara se conectar e seautenticar no cluster.

Nenhum cluster

kafka-cluster:DescribeCluster

Concede permissãopara descrevervários aspectos docluster, equivalente aDESCRIBE CLUSTERACL do Apache Kafka.

kafka-cluster:Connect

cluster

kafka-cluster:AlterCluster

Concede permissãopara alterar váriosaspectos do cluster,equivalente a ALTERCLUSTER ACL doApache Kafka.

kafka-cluster:Connect

kafka-cluster:DescribeCluster

cluster

kafka-cluster:DescribeClusterDynamicConfiguration

Concede permissãopara descrever

kafka-cluster:Connect

cluster

63

Page 70: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Controle de acesso IAM

Ação Descrição Ações necessárias Recursos necessáriosdo

a configuraçãodinâmica de umcluster, equivalente aDESCRIBE_CONFIGSCLUSTER ACL doApache Kafka.

kafka-cluster:AlterClusterDynamicConfiguration

Concede permissãopara alterar aconfiguraçãodinâmica de umcluster, equivalentea ALTER_CONFIGSCLUSTER ACL doApache Kafka.

kafka-cluster:Connect

kafka-cluster:DescribeClusterDynamicConfiguration

cluster

kafka-cluster:WriteDataIdempotently

Concede permissãopara gravar dados demodo idempotenteem um cluster,equivalente aIDEMPOTENT_WRITECLUSTER ACL doApache Kafka.

kafka-cluster:Connect

kafka-cluster:WriteData

cluster

kafka-cluster:CreateTopic

Concede permissãopara criar tópicos emum cluster, equivalentea CREATE CLUSTER/TOPIC ACL do ApacheKafka.

kafka-cluster:Connect

tópico

kafka-cluster:DescribeTopic

Concede permissãopara descreveros tópicos de umcluster, equivalente aDESCRIBE TOPIC ACLdo Apache Kafka.

kafka-cluster:Connect

tópico

kafka-cluster:AlterTopic

Concede permissãopara alterar ostópicos de um cluster,equivalente a ALTERTOPIC ACL do ApacheKafka.

kafka-cluster:Connect

kafka-cluster:DescribeTopic

tópico

kafka-cluster:DeleteTopic

Concede permissãopara excluir tópicos deum cluster, equivalentea DELETE TOPIC ACLdo Apache Kafka.

kafka-cluster:Connect

kafka-cluster:DescribeTopic

tópico

64

Page 71: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Controle de acesso IAM

Ação Descrição Ações necessárias Recursos necessáriosdo

kafka-cluster:DescribeTopicDynamicConfiguration

Concede permissãopara descrever aconfiguração dinâmicados tópicos de umcluster, equivalente aDESCRIBE_CONFIGSTOPIC ACL do ApacheKafka.

kafka-cluster:Connect

tópico

kafka-cluster:AlterTopicDynamicConfiguration

Concede permissãopara alterar aconfiguração dinâmicados tópicos de umcluster, equivalentea ALTER_CONFIGSTOPIC ACL do ApacheKafka.

kafka-cluster:Connect

kafka-cluster:DescribeTopicDynamicConfiguration

tópico

kafka-cluster:ReadData

Concede permissãopara ler dados dostópicos de um cluster,equivalente a READTOPIC ACL do ApacheKafka.

kafka-cluster:Connect

kafka-cluster:DescribeTopic

kafka-cluster:AlterGroup

tópico

kafka-cluster:WriteData

Concede permissãopara gravar dados emtópicos de um cluster,equivalente a WRITETOPIC ACL do ApacheKafka.

kafka-cluster:Connect

kafka-cluster:DescribeTopic

tópico

kafka-cluster:DescribeGroup

Concede permissãopara descreveros grupos de umcluster, equivalente aDESCRIBE GROUPACL do Apache Kafka.

kafka-cluster:Connect

grupo

kafka-cluster:AlterGroup

Concede permissãopara entrar emgrupos de um cluster,equivalente a READGROUP ACL do ApacheKafka.

kafka-cluster:Connect

kafka-cluster:DescribeGroup

grupo

kafka-cluster:DeleteGroup

Concede permissãopara excluir grupos deum cluster, equivalentea DELETE GROUP ACLdo Apache Kafka.

kafka-cluster:Connect

kafka-cluster:DescribeGroup

grupo

65

Page 72: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Controle de acesso IAM

Ação Descrição Ações necessárias Recursos necessáriosdo

kafka-cluster:DescribeTransactionalId

Concede permissãopara descrever os IDstransacionais de umcluster, equivalentea DESCRIBETRANSACTIONAL_IDACL do Apache Kafka.

kafka-cluster:Connect

ID da transação

kafka-cluster:AlterTransactionalId

Concede permissãopara alterar osIDs transacionaisde um cluster,equivalente a WRITETRANSACTIONAL_IDACL do Apache Kafka.

kafka-cluster:Connect

kafka-cluster:DescribeTransactionalId

kafka-cluster:WriteData

ID da transação

Você pode usar o curinga asterisco (*) várias vezes em uma ação após os dois pontos. Veja os exemplos aseguir.

• kafka-cluster:*Topicsignificakafka-cluster:CreateTopic,kafka-cluster:DescribeTopic,kafka-cluster:AlterTopic, ekafka-cluster:DeleteTopic.Ele não incluikafka-cluster:DescribeTopicDynamicConfigurationoukafka-cluster:AlterTopicDynamicConfiguration.

• kafka-cluster:*significa todas as permissões.

Resources

A tabela a seguir mostra os quatro tipos de recursos que você pode usar em uma política de autorizaçãoao usar o controle de acesso do IAM para o Amazon MSK. Você pode obter o cluster nome de recursoda Amazon (ARN) naAWS Management Consoleou usando oDescribeClusterAPI ou o comandodescribe-cluster AWS CLIcomando. Em seguida, você pode usar o ARN do cluster para construir ARNs de ID detópico, grupo e transação. Para especificar um recurso em uma política de autorização, use o ARN desserecurso.

Recurso Formato ARN

Cluster arn:aws:kafka:região:account-id:cluster/nome do cluster/cluster-uid

Tópico arn:aws:kafka:região:account-id:tópico/nome do cluster/cluster-uid/Nomedo tópico

Grupo arn:aws:kafka:região:account-id:grupo/nome do cluster/cluster-uid/Nomedo grupo do

ID datransação

arn:aws:kafka:região:account-id:transacional-id/nome do cluster/cluster-uid/ID da transação

Você pode usar o curinga asterisco (*) várias vezes em qualquer lugar da parte do ARN que vem apóso:cluster/,:topic/,:group/, e:transaction-id/. Veja a seguir alguns exemplos de como vocêpode usar o curinga asterisco (*) para fazer referência a vários recursos:

66

Page 73: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Controle de acesso IAM

• arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/*: todos os tópicos emqualquer cluster chamado MyTestCluster, independentemente do UUID do cluster.

• arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*_test: todos os tópicos cujo nome termina com “_test” no cluster cujonome é MyTestCluster e cujo UUID é abcd1234-0123-abcd-5678-1234abcd-1.

• arn:aws:kafka:us-east-1:0123456789012:transactional-id/MyTestCluster/*/5555abcd-1111-abcd-1234-abcd1234-1: todas as transações cujo ID transacional é5555abcd-1111-abcd-1234-abcd1234-1, em todas as encarnações de um cluster chamadoMyTestCluster em sua conta. Isso significa que, se você criar um cluster chamado MyTestCluster,excluí-lo e, em seguida, criar outro cluster com o mesmo nome, você pode usar esse ARN de recursopara representar o mesmo ID de transações em ambos os clusters. No entanto, o cluster excluído nãoestá acessível.

Casos de uso comunsA primeira coluna na tabela a seguir mostra alguns casos de uso comuns. Para autorizar um cliente arealizar um determinado caso de uso, inclua as ações necessárias para esse caso de uso na política deautorização do cliente e definaEffectparaAllow.

Para obter informações sobre todas as ações que fazem parte do controle de acesso do IAM para oAmazon MSK, consultethe section called “Semântica de ações e recursos” (p. 63).

Note

As ações são negadas por padrão. Você deve permitir explicitamente todas as ações que vocêdeseja autorizar o cliente a executar.

Caso de uso Ações necessárias

Admin kafka-cluster:*

Criar um tópico kafka-cluster:Connect

kafka-cluster:CreateTopic

Produzir dados kafka-cluster:Connect

kafka-cluster:DescribeTopic

kafka-cluster:WriteData

Consumir dados kafka-cluster:Connect

kafka-cluster:DescribeTopic

kafka-cluster:DescribeGroup

kafka-cluster:AlterGroup

kafka-cluster:ReadData

Produzir dados de forma idempotente kafka-cluster:Connect

kafka-cluster:DescribeTopic

kafka-cluster:WriteData

kafka-cluster:WriteDataIdempotently

67

Page 74: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Autenticação TLS mútuo

Caso de uso Ações necessárias

Produza dados transacionalmente kafka-cluster:Connect

kafka-cluster:DescribeTopic

kafka-cluster:WriteData

kafka-cluster:DescribeTransactionalId

kafka-cluster:AlterTransactionalId

Descrever a configuração de um cluster kafka-cluster:Connect

kafka-cluster:DescribeClusterDynamicConfiguration

Atualizar a configuração de um cluster kafka-cluster:Connect

kafka-cluster:DescribeClusterDynamicConfiguration

kafka-cluster:AlterClusterDynamicConfiguration

Descrever a configuração de um tópico kafka-cluster:Connect

kafka-cluster:DescribeTopicDynamicConfiguration

Atualizar a configuração de um tópico kafka-cluster:Connect

kafka-cluster:DescribeTopicDynamicConfiguration

kafka-cluster:AlterTopicDynamicConfiguration

Alterar um tópico kafka-cluster:Connect

kafka-cluster:DescribeTopic

kafka-cluster:AlterTopic

Autenticação TLS mútuoÉ possível ativar a autenticação de cliente com TLS para conexões de aplicativos com os agentes doAmazon MSK e os nós do ZooKeeper. Para usar a autenticação do cliente, é necessário ter uma CAprivada ACM. Para obter informações sobre ACs privadas, consulte Criar e gerenciar uma AC privada.

Note

A autenticação TLS não está disponível atualmente nas regiões Pequim e Ningxia.

O Amazon MSK não oferece suporte a listas de revogação de certificados (CRLs). Para controlaro acesso aos tópicos de cluster ou bloquear certificados comprometidos, use as ACLs do ApacheKafka eAWSGrupos de segurança. Para obter informações sobre como usar ACLs do Apache Kafka,consulte.the section called “ACLs do Apache Kafka” (p. 75).

Este tópico contém as seguintes seções:

68

Page 75: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Autenticação TLS mútuo

• Como criar um cluster que ofereça suporte à autenticação de cliente (p. 69)• Como configurar um cliente para usar a autenticação (p. 69)• Como produzir e consumir mensagens usando a autenticação (p. 71)

Como criar um cluster que ofereça suporte à autenticação declienteEste procedimento mostra como habilitar a autenticação do cliente usando a AC hospedada pelo ACM.

1. Crie um arquivo denominado clientauthinfo.json com o seguinte conteúdo. SubstituaPrivate-CA-ARN pelo ARN do PCA.

{ "Tls": { "CertificateAuthorityArnList": ["Private-CA-ARN"] }}

2. Crie um arquivo chamado brokernodegroupinfo.json, conforme descrito em the section called“Criar um cluster usando aAWS CLI” (p. 18).

3. A autenticação de cliente exige que você também ative a criptografia em trânsito entre clientes eagentes. Crie um arquivo denominado encryptioninfo.json com o seguinte conteúdo. SubstituaKMS-Key-ARN pelo ARN da chave do KMS. É possível definir ClientBroker como TLS ouTLS_PLAINTEXT.

{ "EncryptionAtRest": { "DataVolumeKMSKeyId": "KMS-Key-ARN" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" }}

Para obter mais informações sobre criptografia, consulte the section called “Criptografia” (p. 49).4. Em uma máquina com a AWS CLI instalada, execute o comando a seguir para criar um cluster com a

autenticação e a criptografia em trânsito ativadas. Salve o ARN do cluster fornecido na resposta.

aws kafka create-cluster --cluster-name "AuthenticationTest" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --client-authentication file://clientauthinfo.json --kafka-version "2.2.1" --number-of-broker-nodes 3

Como configurar um cliente para usar a autenticação1. Crie uma instância do Amazon EC2 para ser usada como uma máquina de cliente. Para simplificar,

crie essa instância na mesma VPC usada para o cluster. Consulte the section called “Etapa 4: Criaruma máquina cliente” (p. 11) para obter um exemplo de como criar uma máquina de cliente.

2. Criar um tópico. Para obter um exemplo, consulte as instruções em the section called “Etapa 5: Criarum tópico” (p. 12).

3. Em uma máquina com a AWS CLI instalada, execute o comando a seguir para obter os agentes debootstrap do cluster. Substitua o Cluster-ARN pelo ARN do seu cluster.

69

Page 76: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Autenticação TLS mútuo

aws kafka get-bootstrap-brokers --cluster-arn Cluster-ARN

Salve a string associada ao BootstrapBrokerStringTls na resposta.4. Na máquina de cliente, execute o comando a seguir para usar o armazenamento de confiança da

JVM para criar o armazenamento de confiança do cliente. Se o caminho da JVM for diferente, ajuste ocomando de acordo.

cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts kafka.client.truststore.jks

5. Na máquina de cliente, execute o comando a seguir para criar uma chave privada para o cliente.Substitua Distinguished-Name, Example-Alias, Your-Store-Pass e Your-Key-Pass pelasstrings de sua escolha.

keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass Your-Store-Pass -keypass Your-Key-Pass -dname "CN=Distinguished-Name" -alias Example-Alias -storetype pkcs12

6. Na máquina de cliente, execute o comando a seguir para criar uma solicitação de certificado com achave privada criada na etapa anterior.

keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass

7. Abra o arquivo client-cert-sign-request e verifique se ele começa com -----BEGINCERTIFICATE REQUEST----- e termina com -----END CERTIFICATE REQUEST-----. Se elecomeçar com -----BEGIN NEW CERTIFICATE REQUEST-----, exclua a palavra NEW (e o espaçoúnico que vem após) do começo e do final do arquivo.

8. Em uma máquina com a AWS CLI instalada, execute o comando a seguir para assinar a solicitação decertificado. Substitua Private-CA-ARN pelo ARN do PCA. Será possível alterar o valor de validadese quiser. Aqui usamos 300 como exemplo.

aws acm-pca issue-certificate --certificate-authority-arn Private-CA-ARN --csr fileb://client-cert-sign-request --signing-algorithm "SHA256WITHRSA" --validity Value=300,Type="DAYS"

Salve o ARN do certificado fornecido na resposta.9. Execute o comando a seguir para obter o certificado que o ACM assinou para você. Substitua

Certificate-ARN pelo ARN obtido na resposta ao comando anterior.

aws acm-pca get-certificate --certificate-authority-arn Private-CA-ARN --certificate-arn Certificate-ARN

10. Do resultado JSON obtido com a execução do comando anterior, copie as strings associadas aCertificate e CertificateChain. Cole essas duas strings em um novo arquivo chamadosigned-certificate-from-acm. Cole a string associada a Certificate primeiro, seguida pela stringassociada a CertificateChain. Substitua os caracteres \n por novas linhas. Veja a seguir aestrutura do arquivo depois que você colar o certificado e a cadeia de certificados nele.

-----BEGIN CERTIFICATE-----...-----END CERTIFICATE----------BEGIN CERTIFICATE-----...-----END CERTIFICATE-----

70

Page 77: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Autenticação SASL/SCRAM

-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----

11. Execute o comando a seguir na máquina cliente para adicionar esse certificado ao repositório dechaves para poder apresentá-lo ao falar com os agentes do MSK.

keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass

12. Crie um arquivo denominado client.properties com o seguinte conteúdo. Ajuste os locaisdo armazenamento de confiança e do repositório de chaves usando os caminhos onde salvoukafka.client.truststore.jks.

security.protocol=SSLssl.truststore.location=/tmp/kafka_2.12-2.2.1/kafka.client.truststore.jksssl.keystore.location=/tmp/kafka_2.12-2.2.1/kafka.client.keystore.jksssl.keystore.password=Your-Store-Passssl.key.password=Your-Key-Pass

Como produzir e consumir mensagens usando a autenticação1. Execute o comando a seguir para criar um tópico.

bin/kafka-topics.sh --create --zookeeper ZooKeeper-Connection-String --replication-factor 3 --partitions 1 --topic ExampleTopic

2. Execute o comando a seguir para iniciar um produtor de console. O arquivo chamadoclient.properties é o que você criou no procedimento anterior.

bin/kafka-console-producer.sh --broker-list BootstrapBroker-String --topic ExampleTopic --producer.config client.properties

3. Em uma nova janela de comando na máquina de cliente, execute o comando a seguir para iniciar umconsumidor de console.

bin/kafka-console-consumer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --consumer.config client.properties

4. Digite mensagens na janela do produtor e observe-as aparecerem na janela do consumidor.

autenticação de nome de usuário e senhacomAWSSecrets ManagerVocê pode controlar o acesso aos seus clusters do Amazon MSK usando nomes de usuário e senhas quesão armazenados e protegidos usandoAWSSecrets Manager. Armazenar as credenciais dos usuáriosno Secrets Manager reduz a sobrecarga da autenticação de cluster, incluindo auditoria, atualização erotação de credenciais. O uso Secrets Manager também permite compartilhar credenciais de usuário entreclusters.

Este tópico contém as seguintes seções:• Como ele funciona (p. 72)• Configurando a autenticação SASL/ SCRAM para um cluster do Amazon MSK (p. 72)

71

Page 78: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Autenticação SASL/SCRAM

• Trabalhar com usuários (p. 74)• Limitations (p. 74)

Como ele funcionaA autenticação de usuário e senha para o Amazon MSK usa a autenticação SASL/SCRAM (SimpleAuthentication e Security Layer/Salted Challenge Response Mechanism). Para configurar a autenticaçãode nome de usuário e senha para um cluster, crie um recurso Secret noAWSSecrets Managere associenomes de usuário e senhas ao segredo.

O SASL/ SCRAM é definido emRFC 5802. O SCRAM usa algoritmos de hash protegidos e não transmitesenhas de texto simples entre cliente e servidor.

Configurando a autenticação SASL/ SCRAM para um cluster doAmazon MSKPara configurar um segredo noAWSSecrets Manager, siga aCriar e recuperar um segredotutorialnoAWSGuia do usuário do Secrets Manager.

Observe os seguintes requisitos ao criar um segredo para um cluster do Amazon MSK:

• SelecioneOutros tipos de segredos (por exemplo, chave API)para o tipo secreto.• Seu nome secreto deve ter o prefixoAmazonMSK_.• Você deve usar umAWS KMSou criar uma novaAWS KMSchave para o seu segredo. O Secrets

Manager usa o padrãoAWS KMSpara um segredo por padrão.

Important

Um segredo criado com o padrãoAWS KMSA chave do não pode ser usada com um cluster doAmazon MSK.

• Os dados de usuário e senha do devem estar no seguinte formato:

{ "username": "alice", "password": "alice-secret"}

• Registre o valor de ARN (nome de recurso da Amazon) do seu segredo.

Se você usar oAWS CLIpara criar o segredo, especifique um ID de chave ou ARN para okms-key-idparâmetro . Não especifique um alias.

Para associar o segredo ao seu cluster, use o console do Amazon MSK ouoBatchAssociatEscramSecretoperação.

O exemplo a seguir, entrada JSON para oBatchAssociateScramSecretassocia um segredo a umcluster:

{ "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4", "secretArnList": [ "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret" ]

72

Page 79: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Autenticação SASL/SCRAM

}

Conectar-se ao seu cluster com um nome de usuário e uma senha

Depois de criar seu segredo e associá-lo ao cluster, faça o seguinte para conectar seu cliente ao cluster:

1. Execute o seguinte comando, substituindo oClusterArncom o nome de recurso da Amazon (ARN)do seu cluster:

aws kafka describe-cluster --region us-west-2 --cluster-arn "ClusterArn"

No resultado JSON do comando, salve o valor associado à string chamada “ZookeeperConnectString”.2. Crie um tópico no cluster executando o comando a seguir nabinem sua máquina cliente,

substituindoZookeeperConnectStringcom a string que você registrou no comando anterior. Vocêpode especificar um nome diferente para o tópico, mas se o fizer, lembre-se de usar o nome escolhidono restante deste procedimento.

./kafka-topics.sh --create --zookeeper ZookeeperConnectString --replication-factor 3 --partitions 1 --topic ExampleTopicName

3. Em sua máquina cliente, crie um arquivo de configuração JAAS com as credenciais deusuário armazenadas em seu segredo. Por exemplo, para o usuárioalice, crie um arquivochamadousers_jaas.confCom o seguinte conteúdo:

KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="alice" password="alice-secret";};

4. Exporte este arquivo de configuração JAAS como um parâmetro de ambiente KAFKA_OPTS com oseguinte comando:

export KAFKA_OPTS=-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf

5. Copie o arquivo de armazenamento de chaves JDK de sua JVM para um arquivo. /tmp. Paraobter detalhes sobre essa etapa, consulteEtapa 6: Produzir e consumir dados (p. 13)noConceitosbásicos (p. 5)para "Hello, World!".

6. Criar um arquivo de propriedades do cliente chamadoclient_sasl.propertiesCom o seguinteconteúdo. Este arquivo define o mecanismo e o protocolo SASL.

security.protocol=SASL_SSLsasl.mechanism=SCRAM-SHA-512ssl.truststore.location=<path-to-keystore-file>/kafka.client.truststore.jks

7. Execute o seguinte comando, substituindo oClusterArncom o nome de recurso da Amazon (ARN)do seu cluster:

aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arn ClusterArn

No resultado JSON do comando, salve o valor associado à string chamada“BootStrapBrokerStringsAslSCram”.

8. Para produzir para o tópico criado, execute o comando a seguir na caixa de diálogobinem suamáquina cliente, substituindoBootStrapBrokerStringsAslScramCom o valor obtido ao executar ocomando anterior.

73

Page 80: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Autenticação SASL/SCRAM

./kafka-console-producer.sh --broker-list BootstrapBrokerStringSaslScram --topic ExampleTopicName --producer.config client_sasl.properties

9. Para consumir do tópico criado, execute o comando a seguir nabinem sua máquina cliente,substituindoBootStrapBrokerStringsAslScrampelo valor obtido anteriormente.

./kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --from-beginning --consumer.config client_sasl.properties

Trabalhar com usuáriosCriar usuários do: Você cria usuários em seu segredo como pares de chave/valor.AWS KMSrequer que osdados de nome de usuário e senha estejam no seguinte formato:

{ "username": "alice", "password": "alice-secret"}

Revogar o acesso do usuário: Para revogar as credenciais de um utilizador para aceder a um cluster,recomendamos que primeiro remova ou imponha uma ACL no cluster e, em seguida, desassocie osegredo. Isso se deve ao seguinte:

• Remover um usuário não fecha conexões existentes.• As alterações no segredo do demoram até 10 minutos para serem propagadas.

Para obter informações sobre como usar uma ACL com o Amazon MSK, consulteACLs do ApacheKafka (p. 75).

Recomendamos que você restrinja o acesso aos nós do zookeeper para impedir que osusuários modifiquem ACL. Para obter mais informações, consulte Controlar o acesso ao ApacheZooKeeper (p. 76).

LimitationsObserve as seguintes limitações ao usar segredos da SCRAM:

• O Amazon MSK só oferece suporte à autenticação SCRAM-SHA-512.• Um cluster do Amazon MSK pode ter até 1.000 usuários.• Você deve usar uma chave mestra de cliente (CMK) com o Secret. Você não pode usar um Segredo que

use a chave de criptografia padrão do Secrets Manager com o Amazon MSK. Para obter informaçõessobre como criar um CMK, consulteCriar CMKs simétricas.

• Não é possível usar um CMK assimétrico com o Secrets Manager.• Você pode associar até 10 segredos a um cluster ao mesmo tempo usando o

comandoBatchAssociatEscramSecretoperação.• O nome dos segredos associados a um cluster do Amazon MSK deve ter o prefixoAmazonMSK_.• Os segredos associados a um cluster do Amazon MSK devem estar na mesma conta da Amazon Web

Services e oAWScomo o cluster.

74

Page 81: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

ACLs do Apache Kafka

ACLs do Apache KafkaO Apache Kafka tem um autorizador conectável e vem com uma implementação de autorizador prontaque usa o Apache ZooKeeper para armazenar todas as ACLs. O Amazon MSK habilita esse autorizadorno arquivo server.properties dos agentes. Para o Apache Kafka versão 2.4.1, o autorizador éAclAuthorizer. Para as versões anteriores do Apache Kafka, é SimpleAclAuthorizer.

As ACLs do Apache Kafka têm o formato "O principal P é [permitido/negado] para a operação O do hostH em qualquer recurso R correspondente ao padrão de recurso RP". Se o RP não corresponder a umrecurso R específico, R não terá ACLs associadas e, portanto, ninguém além de superusuários terápermissão para acessar R. Para alterar esse comportamento do Apache Kafka, defina a propriedadeallow.everyone.if.no.acl.found como true. O Amazon MSK a define como true por padrão. Issosignifica que, com clusters do Amazon MSK, se você não definir explicitamente as ACLs em um recurso,todos os principais poderão acessá-lo. Se você habilitar ACLs em um recurso, somente os principaisautorizados poderão acessá-lo. Se você quiser restringir o acesso a um tópico e autorizar um clienteusando a autenticação mútua TLS, adicione ACLs usando a CLI de autorização do Apache Kafka. Paraobter mais informações sobre adicionar, remover e listar ACLs, consulte Kafka Authorization CommandLine Interface.

Além do cliente, também é necessário conceder a todos os agentes acesso aos seus tópicos para que osagentes possam replicar mensagens da partição primária. Se os agentes não tiverem acesso a um tópico,ocorrerá uma falha na replicação dele.

Note

Para evitar o bloqueio de corretores, não defina ACLs em CLUSTER_ACTIONS.

Como adicionar ou remover o acesso de leitura e gravação a um tópico

1. Adicione os agentes à tabela de ACL para permitir que eles leiam todos os tópicos que possuemACLs. Para conceder aos agentes acesso de leitura a um tópico, execute o comando a seguir em umamáquina cliente que pode se comunicar com o cluster MSK.

Substitua ZooKeeper-Connection-String pela string de conexão do Apache ZooKeeper. Para verinformações sobre como obter essa string, consulte the section called “Obter a string de conexão doApache ZooKeeper” (p. 20).

Substitua Distinguished-Name pelo DNS de qualquer um dos agentes de bootstrap do cluster esubstitua a string antes do primeiro ponto desse nome distinto por um asterisco (*). Por exemplo, seum dos agentes de bootstrap do cluster tiver o DNS b-6.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com, substitua Distinguished-Name no comando a seguir por*.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com. Para ver informaçõessobre como obter os agentes de bootstrap, consulte the section called “Obter os agentes debootstrap” (p. 21).

bin/kafka-acls.sh --authorizer-properties zookeeper.connect=ZooKeeper-Connection-String --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name

2. Para conceder acesso de leitura a um tópico, execute o comando a seguir na máquina de cliente. Useo mesmo Distinguished-Name usado ao criar a chave privada.

bin/kafka-acls.sh --authorizer-properties zookeeper.connect=ZooKeeper-Connection-String --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name

Para remover o acesso de leitura, é possível executar o mesmo comando, substituindo --add por --remove.

75

Page 82: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Controlar o acesso ao Apache ZooKeeper

3. Para conceder acesso de gravação a um tópico, execute o comando a seguir na máquina de cliente.Use o mesmo Distinguished-Name usado ao criar a chave privada.

bin/kafka-acls.sh --authorizer-properties zookeeper.connect=ZooKeeper-Connection-String --add --allow-principal "User:CN=Distinguished-Name" --operation Write --topic Topic-Name

Para remover o acesso de gravação, é possível executar o mesmo comando, substituindo --add por--remove.

Controlar o acesso ao Apache ZooKeeperPor motivos de segurança, é possível limitar o acesso aos nós do Apache ZooKeeper que fazem partedo cluster do Amazon MSK. Para limitar o acesso aos nós, é possível atribuir um grupo de segurançaseparado para eles. Depois, é possível decidir quem tem acesso a esse grupo de segurança.

Este tópico contém as seguintes seções:• Para colocar os nós do Apache ZooKeeper em um grupo de segurança separado (p. 76)• Usando a segurança TLS com o Apache ZooKeeper (p. 77)

Para colocar os nós do Apache ZooKeeper em umgrupo de segurança separado1. Obtenha a string de conexão do Apache ZooKeeper do cluster. Para saber como, consulte the section

called “Obter a string de conexão do Apache ZooKeeper” (p. 20). A string de conexão contém osnomes de DNS dos nós do Apache ZooKeeper.

2. Use uma ferramenta como host ou ping para converter os nomes de DNS obtidos na etapa anteriorpara endereços IP. Salve esses endereços IP porque você precisará deles posteriormente nesteprocedimento.

3. Salve os endereços IP dos nós do Apache ZooKeeper porque você precisará deles posteriormenteneste procedimento.

4. Faça login no AWS Management Console e abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

5. No painel de navegação, em NETWORK & SECURITY (REDE E SEGURANÇA), selecione NetworkInterfaces (Interfaces de rede).

6. No campo de pesquisa acima da tabela de interfaces de rede, digite o nome do cluster e digite return.Isso limita o número de interfaces de rede que aparecem na tabela às interfaces associadas aocluster.

7. Marque a caixa de seleção no início da linha que corresponde à primeira interface de rede na lista.8. No painel de detalhes na parte inferior da página, procure o Primary private IPv4 IP (IP IPv4 privado

primário). Se esse endereço IP corresponder a um dos endereços IP obtidos na primeira etapa desteprocedimento, isso significa que essa interface de rede é atribuída a um nó ZooKeeper do Apache quefaz parte do cluster. Caso contrário, desmarque a caixa de seleção ao lado dessa interface de rede eselecione a próxima interface de rede na lista. A ordem em que você seleciona as interfaces de redenão importa. Nas próximas etapas, você executará as mesmas operações em todas as interfaces derede atribuídas aos nós do Apache ZooKeeper, uma a uma.

9. Ao selecionar uma interface de rede que corresponda a um nó do Apache ZooKeeper, selecioneo menu Actions (Ações) na parte superior da página e selecione Change Security Groups (Alterargrupos de segurança). Atribua um novo grupo de segurança a essa interface de rede. Para obter

76

Page 83: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Usando a segurança TLS com o Apache ZooKeeper

informações sobre a criação de grupos de segurança, consulte.Criar um grupo de segurançaNadocumentação da Amazon VPC.

10. Repita a etapa anterior para atribuir o mesmo novo grupo de segurança a todas as interfaces de redeassociadas aos nós do Apache ZooKeeper do cluster.

11. Agora é possível escolher quem tem acesso a esse novo grupo de segurança. Para obter informaçõessobre como definir regras do security group, consulte.Adicionar, remover e atualizar regrasNadocumentação da Amazon VPC.

Usando a segurança TLS com o Apache ZooKeeperVocê pode usar a segurança TLS para criptografia em trânsito entre seus clientes e seus nós ApacheZooKeeper. Para implementar a segurança TLS com os nós do Apache ZooKeeper, faça o seguinte:

• Os clusters devem usar o Apache Kafka versão 2.5.1 ou posterior para usar a segurança TLS com oApache ZooKeeper.

• Ative a segurança TLS ao criar ou configurar o cluster. Clusters criados com Apache Kafka versão2.5.1 ou posterior com TLS habilitado usam automaticamente a segurança TLS com endpoints ApacheZooKeeper. Para obter informações sobre como configurar a segurança TLS, consulte.Como começar ausar a criptografia? (p. 50).

• Recupere os pontos de extremidade TLS do Apache ZooKeeper usando oDescribeClusteroperação.• Crie um arquivo de configuração do Apache ZooKeeper para uso com os seguintes comandos da CLI:

Config, ACL e Shell ZooKeeper. Você usa o arquivo de configuração do Apache Zookeeper com essescomandos usando o comando--zk-tls-config-fileparâmetro .

O exemplo a seguir mostra um arquivo de configuração típico do Apache ZooKeeper:

zookeeper.ssl.client.enable=truezookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNettyzookeeper.ssl.keystore.location=kafka.jkszookeeper.ssl.keystore.password=test1234zookeeper.ssl.truststore.location=truststore.jkszookeeper.ssl.truststore.password=test1234

• Para outros comandos (comokafka-topics), você deve usar oKAFKA_OPTSpara configurar osparâmetros do Apache ZooKeeper. O exemplo a seguir mostra como configurar oKAFKA_OPTSparapassar os parâmetros do Apache ZooKeeper para outros comandos:

export KAFKA_OPTS="-Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty -Dzookeeper.client.secure=true -Dzookeeper.ssl.trustStore.location=/home/ec2-user/kafka.client.truststore.jks-Dzookeeper.ssl.trustStore.password=changeit"

Depois de ter configurado oKAFKA_OPTS, você pode usar comandos da CLI normalmente. Oexemplo a seguir cria um tópico do Apache Kafka usando a configuração do Apache ZooKeeperdoKAFKA_OPTSvariável de ambiente:

bin/kafka-topics.sh --create --zookeeper ZooKeeperTLSConnectString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopic

Note

Os nomes dos parâmetros que você usa em seu arquivo de configuração do Apache ZooKeepere aqueles que você usa em seuKAFKA_OPTSvariável de ambiente não são consistentes. Preste

77

Page 84: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Registro em log

atenção aos nomes que você usa com quais parâmetros em seu arquivo de configuraçãoeKAFKA_OPTSvariável de ambiente.

Para obter mais informações sobre como acessar seus nós do Apache ZooKeeper com TLS,consulteKIP-515: Habilitar o cliente ZK para usar a nova autenticação compatível com TLS.

LoggingVocê pode entregar logs de agentes do Apache Kafka para um ou mais dos tipos de destino a seguir:Amazon CloudWatch Logs, Amazon S3, Amazon Kinesis Data Firehose. Também é possível registrar emlog chamadas à API do Amazon MSK com oAWS CloudTrail.

Logs do agenteOs logs do agente permitem solucionar problemas de aplicativos do Apache Kafka e analisar ascomunicações com o cluster do MSK. É possível configurar o cluster MSK novo ou existente para entregarregistros em log de agentes do nível INFO para um ou mais dos seguintes tipos de recursos de destino:um grupo de log do CloudWatch, um bucket do S3, um fluxo de entrega do Kinesis Data Firehose. Pormeio do Kinesis Data Firehose, é possível entregar os dados de log do fluxo de entrega para o AmazonES. Você deve criar um recurso de destino antes de configurar seu cluster para entregar logs de agentea ele. O Amazon MSK não cria esses recursos de destino para você caso eles ainda não existam. Paraobter informações sobre esses três tipos de recursos de destino e como criá-los, consulte a seguintedocumentação:

• Amazon CloudWatch Logs• Amazon S3• Amazon Kinesis Data Firehose

Permissões obrigatóriasPara que o Amazon MSK entregue logs de agente aos destinos configurados, certifique-se de queoAmazonMSKFullAccessA política da é anexada à função do IAM. Para fazer streaming de logs deagente para um bucket do S3, também é necessário ter a permissão s3:PutBucketPolicy vinculadaà função do IAM. Para obter informações sobre políticas de bucket do S3, consulte.Como eu faço paraadicionar uma política de bucket do S3?No Guia do usuário do console do Amazon S3. Para obterinformações sobre políticas do IAM em geral, consulte.Gerenciamento de acessono Guia do usuário doIAM.

Política de chaves de CMK obrigatórias para uso com buckets deSSE-KMSSe você habilitou a criptografia do lado do servidor para o bucket do S3 usando oAWS KMSChavesgerenciadas pelo cliente (CMK), adicione o seguinte à política de chaves para seu CMK de modo que oAmazon MSK possa gravar arquivos de agente no bucket.

{ "Sid": "Allow Amazon MSK to use the key.", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [

78

Page 85: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Logs do agente

"kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*"}

Configurar logs de agente usando o AWS Management ConsoleSe estiver criando um cluster, procure o cabeçalho Broker log delivery (Entrega de log de agente) na seçãoMonitoring (Monitoramento). Você pode especificar os destinos aos quais você deseja que o Amazon MSKentregue os logs de agente.

Para obter um cluster existente, escolha o cluster na lista de clusters e selecione a guia Details (Detalhes).Role para baixo até oMonitoramentoe, em seguida, escolha a suaEdite. Você pode especificar os destinosaos quais você deseja que o Amazon MSK entregue os logs de agente.

Configurar logs de agente usando o AWS CLIQuando você usar o comando create-cluster ou update-monitoring, poderá especificar oparâmetro logging-info opcionalmente e passar uma estrutura JSON para ele como o exemplo aseguir. Nesse JSON, todos os três tipos de destino são opcionais.

{ "BrokerLogs": { "S3": { "Bucket": "ExampleBucketName", "Prefix": "ExamplePrefix", "Enabled": true }, "Firehose": { "DeliveryStream": "ExampleDeliveryStreamName", "Enabled": true }, "CloudWatchLogs": { "Enabled": true, "LogGroup": "ExampleLogGroupName" } }}

Configurar logs de agente usando a APIÉ possível especificar a estrutura loggingInfo opcional no JSON que você passa para as operaçõesCreateCluster ou UpdateMonitoring.

Note

Por padrão, quando o registro em log do corretor está ativado, o Amazon MSK registraINFOparaos destinos especificados. No entanto, os usuários do Apache Kafka 2.4.X e posterior podemdefinir dinamicamente o nível de log do broker para qualquer um dosníveis de log log4j. Paraobter informações sobre como definir dinamicamente o nível de log do broker, consulteKIP-412:Amplie a API de administração para oferecer suporte a níveis dinâmicos. Se você definirdinamicamente o nível de log paraDEBUGouTRACE, recomendamos usar o Amazon S3 ou oKinesis Data Firehose como destino do log. Se você usar o CloudWatch Logs como um destinode log e habilitar dinamicamenteDEBUGouTRACE, o Amazon MSK pode entregar continuamenteuma amostra de logs. Isso pode afetar significativamente o desempenho do corretor e só deve serusado quando oINFOnão é detalhado o suficiente para determinar a causa raiz de um problema.

79

Page 86: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Eventos do CloudTrail

Registrar em log chamadas de API com o AWSCloudTrailO Amazon MSK é integrado aoAWS CloudTrail, um serviço que fornece um registro das ações executadaspor um usuário, uma função ou umaAWSno Amazon MSK. O CloudTrail captura as chamadas à APIdo como eventos. As chamadas capturadas incluem as chamadas do console do Amazon MSK e aschamadas de código para as operações de API do Amazon MSK. Ele também captura ações ApacheKafka, como criar e alterar tópicos e grupos.

Se você criar uma trilha, poderá habilitar a entrega contínua de eventos do CloudTrail a um bucket doAmazon S3, incluindo eventos do Amazon MSK. Se você não configurar uma trilha, ainda poderá visualizaros eventos mais recentes no console do CloudTrail em Event history (Histórico de eventos). Usando asinformações coletadas pelo CloudTrail, é possível determinar a solicitação feita para o Amazon MSK ou aação do Apache Kafka, o endereço IP da solicitação, quem fez a solicitação, quando ela foi feita e detalhesadicionais.

Para saber mais sobre o CloudTrail, incluindo como configurá-lo e ativá-lo, consulte o AWS CloudTrailGuiado usuário do .

Informações do Amazon MSK no CloudTrailO CloudTrail é habilitado em sua conta da Amazon Web Services quando ela é criada. Quando a atividadedo evento compatível ocorrer em um cluster do MSK, ela será registrada em um evento do CloudTrailjuntamente com outros produtos daAWSEventos de serviço noHistórico do evento. Você pode visualizar,pesquisar e fazer download de eventos recentes em sua conta da Amazon Web Services. Para maisinformações, consulte Visualizar eventos com o histórico de eventos do CloudTrail.

Para obter um registro de eventos em andamento na sua conta da Amazon Web Services, incluindoeventos do Amazon MSK, crie uma trilha. Uma trilha permite que o CloudTrail entregue arquivos de loga um bucket do Amazon S3. Por padrão, quando você cria uma trilha no console, ela é aplicada a todasas regiões da . A trilha registra em log eventos de todas as regiões na partição da AWS e entrega osarquivos de log para o bucket do Amazon S3 especificado por você. Além disso, você pode configuraroutros produtos da Amazon para analisar mais profundamente e agir sobre os dados de eventos coletadosnos logs do CloudTrail. Para obter mais informações, consulte:

• Visão geral da criação de uma trilha• Serviços e integrações compatíveis com o CloudTrail• Configuração de notificações do Amazon SNS para o CloudTrail• Recebimento de arquivos de log do CloudTrail de várias regiões e Recebimento de arquivos de log do

CloudTrail de várias contas

Amazon MSK registra todos osoperaçõesComo eventos em arquivos de log do CloudTrail. Alémdisso, ele registra as ações do Apache Kafka listadas emthe section called “Semântica de ações erecursos” (p. 63).

Cada entrada de log ou evento contém informações sobre quem gerou a solicitação. As informações deidentidade ajudam a determinar:

• Se a solicitação foi feita com credenciais de usuário raiz ou do AWS Identity and Access Management(IAM).

• Se a solicitação foi feita com credenciais de segurança temporárias de uma função ou de um usuáriofederado.

• Se a solicitação foi feita por outro serviço da AWS.

80

Page 87: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Eventos do CloudTrail

Para obter mais informações, consulte o Elemento userIdentity do CloudTrail.

Exemplo: Entradas de arquivos de log do Amazon MSKUma trilha é uma configuração que permite a entrega de eventos como registros de log a um bucket doAmazon S3 especificado. Os arquivos de log do CloudTrail contêm uma ou mais entradas de log. Umevento representa uma única solicitação de qualquer origem e inclui informações sobre a ação solicitada,a data e a hora da ação, os parâmetros de solicitação e assim por diante. Os arquivos de log do CloudTrailnão são um rastreamento de pilha ordenada de chamadas de API pública e ações do Apache Kafka.Dessa forma, eles não são exibidos em uma ordem específica.

O exemplo a seguir mostra entradas de log do CloudTrail que demonstramaDescribeClustereDeleteClusterAções do Amazon MSK.

{ "Records": [ { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "ABCDEF0123456789ABCDE", "arn": "arn:aws:iam::012345678901:user/Joe", "accountId": "012345678901", "accessKeyId": "AIDACKCEVSQ6C2EXAMPLE", "userName": "Joe" }, "eventTime": "2018-12-12T02:29:24Z", "eventSource": "kafka.amazonaws.com", "eventName": "DescribeCluster", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.14.67 Python/3.6.0 Windows/10 botocore/1.9.20", "requestParameters": { "clusterArn": "arn%3Aaws%3Akafka%3Aus-east-1%3A012345678901%3Acluster%2Fexamplecluster%2F01234567-abcd-0123-abcd-abcd0123efa-2" }, "responseElements": null, "requestID": "bd83f636-fdb5-abcd-0123-157e2fbf2bde", "eventID": "60052aba-0123-4511-bcde-3e18dbd42aa4", "readOnly": true, "eventType": "AwsApiCall", "recipientAccountId": "012345678901" }, { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "ABCDEF0123456789ABCDE", "arn": "arn:aws:iam::012345678901:user/Joe", "accountId": "012345678901", "accessKeyId": "AIDACKCEVSQ6C2EXAMPLE", "userName": "Joe" }, "eventTime": "2018-12-12T02:29:40Z", "eventSource": "kafka.amazonaws.com", "eventName": "DeleteCluster", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.14.67 Python/3.6.0 Windows/10 botocore/1.9.20", "requestParameters": { "clusterArn": "arn%3Aaws%3Akafka%3Aus-east-1%3A012345678901%3Acluster%2Fexamplecluster%2F01234567-abcd-0123-abcd-abcd0123efa-2" },

81

Page 88: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Validação de conformidade

"responseElements": { "clusterArn": "arn:aws:kafka:us-east-1:012345678901:cluster/examplecluster/01234567-abcd-0123-abcd-abcd0123efa-2", "state": "DELETING" }, "requestID": "c6bfb3f7-abcd-0123-afa5-293519897703", "eventID": "8a7f1fcf-0123-abcd-9bdb-1ebf0663a75c", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "012345678901" } ]}

O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra a ação kafka-cluster:CreateTopic.

{ "eventVersion": "1.08", "userIdentity": { "type": "IAMUser", "principalId": "ABCDEFGH1IJKLMN2P34Q5", "arn": "arn:aws:iam::111122223333:user/Admin", "accountId": "111122223333", "accessKeyId": "CDEFAB1C2UUUUU3AB4TT", "userName": "Admin" }, "eventTime": "2021-03-01T12:51:19Z", "eventSource": "kafka-cluster.amazonaws.com", "eventName": "CreateTopic", "awsRegion": "us-east-1", "sourceIPAddress": "198.51.100.0/24", "userAgent": "aws-msk-iam-auth/unknown-version/aws-internal/3 aws-sdk-java/1.11.970 Linux/4.14.214-160.339.amzn2.x86_64 OpenJDK_64-Bit_Server_VM/25.272-b10 java/1.8.0_272 scala/2.12.8 vendor/Red_Hat,_Inc.", "requestParameters": { "kafkaAPI": "CreateTopics", "resourceARN": "arn:aws:kafka:us-east-1:111122223333:topic/IamAuthCluster/3ebafd8e-dae9-440d-85db-4ef52679674d-1/Topic9" }, "responseElements": null, "requestID": "e7c5e49f-6aac-4c9a-a1d1-c2c46599f5e4", "eventID": "be1f93fd-4f14-4634-ab02-b5a79cb833d2", "readOnly": false, "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333"}

Validação de conformidade do Amazon ManagedStreaming for Apache Kafka

Auditores terceiros avaliam a segurança e a conformidade do Amazon Managed Streaming for ApacheKafka como parte doAWSProgramas de conformidade. Eles incluem PCI e HIPAA BAA.

Para uma lista deAWSServiços da no escopo de programas de conformidade específicos,consulte.Serviços da Amazon no escopo pelo programa de conformidade. Para obter informações gerais,consulte Programas de conformidade da AWS.

82

Page 89: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Resiliência

Você pode fazer download de relatórios de auditoria de terceiros usando o AWS Artifact. Para obter maisinformações, consulte Fazer download de relatórios no AWS Artifact.

Sua responsabilidade de conformidade ao usar o Amazon MSK é determinada pela confidencialidadedos seus dados, pelos objetivos de conformidade da sua empresa e pelos regulamentos e leisaplicáveis.AWSO fornece os seguintes recursos para ajudar com a conformidade:

• Guias de início rápido de segurança e conformidade: esses guias de implantação abordam asconsiderações de arquitetura e fornecem etapas para implantação de ambientes de linha de basefocados em conformidade e segurança na AWS.

• Whitepaper Arquitetura para segurança e conformidade com a HIPAA: esse whitepaper descreve comoas empresas podem usar a AWS para criar aplicações em conformidade com a HIPAA.

• Recursos de conformidade da AWS: essa coleção de manuais e guias pode ser aplicada a seu setor elocal.

• Avaliar recursos com regras no AWS Config Developer Guide (Guia do desenvolvedor do AWS Config):o serviço AWS Config avalia como as configurações de recursos estão em conformidade com práticasinternas, diretrizes do setor e regulamentos.

• AWS Security Hub: esse serviço da AWS fornece uma visão abrangente do estado de sua segurança naAWS que ajuda você a verificar sua conformidade com padrões e práticas recomendadas de segurançado setor.

Resiliência no Amazon Managed Streaming forApache Kafka

OAWSA infraestrutura global é criada com base emAWSRegiões e zonas de disponibilidade.AWSAs regiões da fornecem várias zonas de disponibilidade separadas e isoladas fisicamente, que sãoconectadas com baixa latência, altas taxas de transferência e redes altamente redundantes. Com aszonas de disponibilidade, você pode projetar e operar aplicativos e bancos de dados que automaticamenteexecutam o failover entre as zonas sem interrupção. As zonas de disponibilidade são mais altamentedisponíveis, tolerantes a falhas e escaláveis que uma ou várias infraestruturas de data center tradicionais.

Para obter mais informações sobre regiões da AWS e zonas de disponibilidade, consulte AWSInfraestrutura global.

Além doAWSA Amazon MSK oferece vários recursos para ajudar a oferecer suporte às suas necessidadesde resiliência de dados e backup.

Segurança de infraestrutura no Amazon ManagedStreaming for Apache Kafka

Como serviço gerenciado, o Amazon Managed Streaming for Apache Kafka é protegidopeloAWSProcedimentos de segurança de rede global da descritos noAmazon Web Services: Visão geraldos processos de segurança doWhitepaper.

Você usaAWSAs chamadas de API publicaram pela para acessar o Amazon MSK pela rede. Os clientesdevem oferecer suporte a Transport Layer Security (TLS) 1.0 ou posterior. Recomendamos TLS 1.2 ouposterior. Os clientes também devem ter suporte a conjuntos de criptografia com perfect forward secrecy(PFS) como Ephemeral Diffie-Hellman (DHE) ou Ephemeral Elliptic Curve Diffie-Hellman (ECDHE). Amaioria dos sistemas modernos como Java 7 e versões posteriores oferece suporte a esses modos.

83

Page 90: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Segurança da infraestrutura

Além disso, as solicitações devem ser assinadas usando um ID da chave de acesso e uma chave deacesso secreta associada a uma entidade principal do IAM. Ou você pode usar o AWS Security TokenService (AWS STS) para gerar credenciais de segurança temporárias para assinar solicitações.

84

Page 91: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Emparelhamento de Amazon VPC

Conexão a um cluster do AmazonMSK

Para se conectar ao cluster do Amazon MSK a partir de um cliente que esteja na mesma Amazon VPCdo cluster, certifique-se de que o grupo de segurança do cluster tenha uma regra de entrada que aceitao tráfego do grupo de segurança do cliente. Para obter informações sobre como configurar essas regras,consulte Regras do grupo de segurança. Para obter um exemplo de como acessar um cluster de umainstância do Amazon EC2 que esteja na mesma VPC do cluster, consulteConceitos básicos (p. 5).

Para se conectar a um cluster do MSK de fora da Amazon VPC, existem as seguintes opções.

Emparelhamento de Amazon VPCPara se conectar ao cluster do MSK a partir de uma VPC diferente da VPC do cluster, é possível criar umaconexão de emparelhamento entre duas VPCs. Para obter informações sobre o emparelhamento da VPC,consulte Guia de emparelhamento do Amazon VPC.

AWS Direct ConnectO Amazon Direct Connect vincula sua rede interna a umAWS Direct ConnectPor meio de um cabo de fibraóptica Ethernet padrão de 1 ou 10 gigabits. Uma extremidade do cabo é conectada ao roteador, e a outraé conectada a um roteador do AWS Direct Connect. Com essa conexão implementada, é possível criarinterfaces virtuais diretamente naAWSNuvem e Amazon VPC, evitando provedores de serviços de Internetno caminho da rede. Para mais informações, consulte AWS Direct Connect.

AWS Transit GatewayO AWS Transit Gateway é um serviço que permite conectar as VPCs e as redes no local a um únicogateway. Para obter informações sobre como usar o AWS Transit Gateway, consulte AWS TransitGateway.

Conexões VPNÉ possível conectar a VPC do cluster do MSK a redes remotas e usuários que usam as opções deconectividade por VPN descritas no seguinte tópico: Conexões VPN.

Proxies RESTÉ possível instalar um proxy REST em uma instância sendo executada na Amazon VPC do cluster. Osproxies REST permitem que os produtores e os consumidores se comuniquem com o cluster por meio desolicitações da API do HTTP.

85

Page 92: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Conectividade de várias VPCs em múltiplas regiões

Conectividade de várias VPCs em múltiplas regiõesO seguinte documento descreve as opções de conectividade de várias VPCs que residem em diferentesregiões: Conectividade de várias VPCs em múltiplas regiões.

EC2-ClassicUse o seguinte procedimento para conectar-se ao cluster da instância do EC2-Classic.

1. Siga as orientações descritas no ClassicLink para conectar a instância do EC2-Classic à VPC docluster.

2. Localize e copie o IP privado associado à instância do EC2-Classic.3. Usar oAWS CLI, execute o seguinte comando, substituindo oClusterArnCom o nome de recurso da

Amazon (ARN) do cluster do MSK.

aws kafka describe-cluster --region us-east-1 --cluster-arn "ClusterArn"

4. Na saída da caixa de diálogodescribe-cluster, procure porSecurityGroupse salve o ID dogrupo de segurança do cluster do MSK.

5. Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.6. No painel à esquerda, selecione Security Groups (Grupos de segurança).7. Escolha o grupo de segurança cujo ID você salvou depois de executar o comando describe-

cluster. Selecione a caixa no início da linha correspondente a esse grupo de segurança.8. Na metade inferior da página, selecione Inbound rules (Regras de entrada).9. Selecione Edit rules (Editar regrar) e Add Rule (Adicionar regra).10. No campo Type (Tipo), selecione All traffic (Todo o tráfego) na lista suspensa.11. Deixe a Source (Origem) definida como Custom (Personalizada) e insira o IP privado da instância do

EC2-Classic, seguido imediatamente por /32 sem espaços intervenientes.12. Selecione Save rules (Salvar regras).

Informações da portaA lista a seguir fornece os números das portas que o Amazon MSK usa para se comunicar com máquinasde cliente.

• Para se comunicar com um cluster em texto não criptografado, use a porta 9092.• Para se comunicar com um cluster usando criptografia TLS, use a porta 9094.• Para se comunicar com um cluster configurado para usar othe section called “Controle de acesso

IAM” (p. 60), use a porta 9098.• Os nós do Apache ZooKeeper usam a porta 2181.

86

Page 93: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Migração do cluster do Apache Kafka para o Amazon MSK

Migração de clusters usando oMirrorMaker do Apache Kafka

Você pode espelhar ou migrar o cluster usando o MirrorMaker, que faz parte do Apache Kafka. Porexemplo, você pode usá-lo para migrar o cluster do Apache Kafka para o Amazon MSK ou para migrarde um cluster do MSK para outro. Para obter informações sobre como usar o MirrorMaker, consulteEspelhamento de dados entre clusters na documentação do Apache Kafka. Recomendamos configurar oMirrorMaker em uma configuração altamente disponível.

Um descrição das etapas a serem seguidas ao usar o MirrorMaker para migrar para um cluster doMSK

1. Criar o cluster MSK de destino2. Iniciar o MirrorMaker em uma instância do Amazon EC2 na mesma VPC do Amazon como o cluster de

destino.3. Inspecionar o atraso do MirrorMaker.4. Depois que o MirrorMaker se recuperar, redirecione os produtores e os consumidores para o novo

cluster usando os agentes de bootstrap do cluster do MSK.5. Desligue o MirrorMaker.

Migração do cluster do Apache Kafka para oAmazon MSK

Suponha que você tenha um cluster do Apache Kafka chamado CLUSTER_ONPREM. Esse cluster épreenchido com tópicos e dados. Se você deseja migrar esse cluster para um cluster recém-criado doAmazon MSK chamadoCLUSTER_AWSMSKEste procedimento fornece uma visualização de alto nível dasetapas que precisam ser seguidas.

Como migrar o cluster existente do Apache Kafka para o Amazon MSK

1. No CLUSTER_AWSMSK, crie todos os tópicos que deseja migrar.

Não é possível usar o MirrorMaker para esta etapa porque ele não recria automaticamente os tópicosque você deseja migrar com o nível de replicação correto. Você pode criar os tópicos no Amazon MSKcom os mesmos fatores de replicação e números de partições que tinham noCLUSTER_ONPREM. Vocêtambém pode criar os tópicos com diferentes fatores de replicação e números de partições.

2. Inicie o MirrorMaker em uma instância que tenha acesso de leitura para CLUSTER_ONPREM e acessode gravação para CLUSTER_AWSMSK.

3. Execute o seguinte comando para espelhar todos os tópicos:

./bin/kafka-mirror-maker.sh --consumer.config config/mirrormaker-consumer.properties --producer.config config/mirrormaker-producer.properties --whitelist '.*'

Nesse comando, config/mirrormaker-consumer.propertiesaponta para um agente de bootstrap no CLUSTER_ONPREM; por exemplo,bootstrap.servers=localhost:9092. E config/mirrormaker-producer.properties

87

Page 94: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Migração de um cluster do Amazon MSK para outro

aponta para um agente de bootstrap em CLUSTER_AWSMSK; por exemplo,bootstrap.servers=10.0.0.237:9092,10.0.2.196:9092,10.0.1.233:9092.

4. Mantenha o MirrorMaker em execução em segundo plano e continue a usar o CLUSTER_ONPREM. OMirrorMaker espelha todos os novos dados.

5. Verifique o andamento do espelhamento inspecionando o atraso entre o último deslocamento de cadatópico e o deslocamento atual do qual o MirrorMaker está consumindo.

Lembre-se de que o MirrorMaker está simplesmente usando um consumidor e um produtor.Portanto, você pode verificar o atraso usando a ferramenta kafka-consumer-groups.sh. Paralocalizar o nome do grupo de consumidores, procure o group.id no arquivo mirrormaker-consumer.properties e use seu valor. Se essa chave não existir no arquivo, você poderá criá-la.Por exemplo, defina group.id=mirrormaker-consumer-group.

6. Depois que o MirrorMaker concluir o espelhamento de todos os tópicos, interrompa todos osprodutores e consumidores e depois interrompa o MirrorMaker. Redirecione os produtores econsumidores para o cluster CLUSTER_AWSMSK alterando seus valores dos agentes de bootstrap dosprodutores e consumidores. Reinicie todos os produtores e consumidores no CLUSTER_AWSMSK.

Migração de um cluster do Amazon MSK para outroVocê pode usar o Apache MirrorMaker para migrar um cluster do MSK para outro cluster. Por exemplo,você pode migrar de uma versão do Apache Kafka para outra. Para obter um exemplo de como usar oAWS CloudFormation para fazer isso, consulte Exemplos de AWS::MSK::Cluster (pesquise o exemplointitulado Create Two MSK Clusters To Use With Apache MirrorMaker).

Práticas recomendadas do MirrorMaker 1.0Esta lista de práticas recomendadas se aplica ao MirrorMaker 1.0.

• Execute o MirrorMaker no cluster de destino. Dessa forma, se ocorrer um problema de rede, asmensagens ainda estarão disponíveis no cluster de origem. Se você executar o MirrorMaker no clusterde origem, e os eventos forem armazenados em buffer no produtor e houver um problema de rede, oseventos poderão ser perdidos.

• Se a criptografia for necessária em trânsito, execute-a no cluster de origem.• Para os consumidores, defina auto.commit.enabled=false• Para os produtores, defina

• max.in.flight.requests.per.connection=1• retries=Int.Max_Value• acks=all• max.block.ms = Long.Max_Value

• Para obter uma taxa de transferência alta do produtor:• Mensagens de buffer e lotes de mensagens de preenchimento — ajuste buffer.memory, batch.size,

linger.ms• Ajuste os buffers de soquete — receive.buffer.bytes, send.buffer.bytes

• Para evitar perda de dados, desative a confirmação automática na origem, para que o MirrorMakerpossa controlar as confirmações, o que faz normalmente depois de receber o ack do cluster de destino.Se o produtor tiver acks=all e o cluster de destino tiver min.insync.replicas definido como mais de 1, asmensagens serão persistidas em mais de um agente no destino antes que o consumidor do MirrorMakerconfirme o deslocamento na origem.

• Se a ordem for importante, você poderá definir novas tentativas como 0. Como alternativa, para umambiente de produção, defina conexões máximas em trânsito como 1 para garantir que os lotes

88

Page 95: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Vantagens do MirrorMaker 2.*

enviados não sejam confirmados fora de ordem se um lote falhar no meio. Dessa forma, cada loteenviado é repetido até que o próximo lote seja enviado. Se max.block.ms não estiver definido como ovalor máximo, e se o buffer do produtor estiver cheio, poderá haver perda de dados (dependendo dealgumas das outras configurações). Isso pode bloquear e retropressionar o consumidor.

• Para obter taxa de transferência alta• Aumente o buffer.memory.• Aumente o tamanho do lote.• Ajuste linger.ms para permitir que os lotes sejam preenchidos. Isso também permite uma melhor

compactação, menos uso de largura de banda de rede e menos armazenamento no cluster. Issoresulta em maior retenção.

• Monitore o uso da CPU e da memória.• Para obter taxa de transferência alta do consumidor

• Aumente o número de threads/consumidores por processo do MirrorMaker — num.streams.• Primeiro aumente o número de processos do MirrorMaker em máquinas antes de aumentar os threads

para permitir alta disponibilidade.• Primeiro aumente o número de processos do MirrorMaker na mesma máquina e depois em máquinas

diferentes (com o mesmo ID de grupo).• Isole tópicos com taxa de transferência muito alta e use instâncias separadas do MirrorMaker.

• Para gerenciamento e configuração• Use o AWS CloudFormation e ferramentas de gerenciamento de configuração, como Chef e Ansible.• Use montagens do Amazon EFS para manter todos os arquivos de configuração acessíveis em todas

as instâncias do Amazon EC2.• Use contêineres para facilitar o dimensionamento e o gerenciamento de instâncias do MirrorMaker.

• Normalmente, mais de um consumidor é necessário para saturar um produtor no MirrorMaker.Portanto, configure vários consumidores. Primeiro, defina-os em diferentes máquinas para forneceralta disponibilidade. Depois, ajuste a escala das máquinas individuais até ter um consumidor para cadapartição, com consumidores distribuídos igualmente entre máquinas.

• Para obter consumo e entrega de taxa de transferência alta, ajuste os buffers de recebimento e envioporque seus padrões podem ser muito baixos. Para obter o máximo desempenho, certifique-se de que onúmero total de fluxos (num.streams) corresponda a todas as partições do tópico que o MirrorMaker estátentando copiar para o cluster de destino.

Vantagens do MirrorMaker 2.*• Usa a estrutura e o ecossistema do Apache Kafka Connect.• Detecta novos tópicos e partições.• Sincroniza automaticamente a configuração de tópicos entre clusters.• Oferece suporte a pares de cluster “ativo/ativo”, além de qualquer número de clusters ativos.• Fornece novas métricas, incluindo latência de replicação de ponta a ponta, entre vários datacenters e

clusters.• Emite deslocamentos necessários para migrar consumidores entre clusters e oferece as ferramentas

para a conversão do deslocamento.• Oferece suporte a um arquivo de configuração de alto nível para especificar vários clusters e fluxos de

replicação em um só lugar, em comparação com as propriedades de produtor/consumidor de baixo nívelpara cada processo do MirrorMaker 1.*.

89

Page 96: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Métricas do Amazon MSK paramonitoramento com o CloudWatch

Monitoramento de um cluster doAmazon MSK

O Amazon MSK coleta métricas do Apache Kafka e envia-as ao Amazon CloudWatch, onde você podevisualizá-las. Para obter mais informações sobre as métricas do Apache Kafka, incluindo as que o AmazonMSK supera, consulte.MonitoramentoNa documentação do Apache Kafka.

Também é possível monitorar o cluster do MSK com o Prometheus, um aplicativo de monitoramentode código aberto. Para obter informações sobre o Prometheus, consulte Visão geral na documentaçãodo Prometheus. Para saber como monitorar o cluster com o Prometheus, consulte the section called“Monitoramento aberto com o Prometheus” (p. 102).

Tópicos• Métricas do Amazon MSK para monitoramento com o CloudWatch (p. 90)• Visualizando métricas do Amazon MSK usando o CloudWatch (p. 98)• Monitoramento de atraso do consumidor (p. 98)• Monitoramento aberto com o Prometheus (p. 102)

Métricas do Amazon MSK para monitoramento como CloudWatch

O Amazon MSK integra-se com o Amazon CloudWatch, permitindo coletar, visualizar eanalisar as métricas do CloudWatch para o cluster do Amazon MSK. As métricas configuradaspara o cluster do MSK são coletadas e enviadas automaticamente ao CloudWatch.Você pode definir o nível de monitoramento para um cluster MSK para um dos seguintesprocedimentos:DEFAULT,PER_BROKER,PER_TOPIC_PER_BROKER, ouPER_TOPIC_PER_PARTITION.As tabelas nas seções a seguir mostram todas as métricas disponíveis a partir de cada nível demonitoramento.

Monitoramento de nível DEFAULTAs métricas descritas na tabela a seguir estão disponíveis no nível de monitoramento DEFAULT. Elas sãogratuitas.

Métricas disponíveis no nível de monitoramento DEFAULT

Nome Quando visível DimensõesDescrição

ActiveControllerCountDepois que o clusterpassa para o estadoACTIVE.

Nomedocluster

Somente um controlador por clusterdeve estar ativo em qualquer momento.

BytesInPerSec Depois de criar umtópico.

Nomedocluster,ID doagente,tópico

O número de bytes por segundorecebidos dos clientes. Esta métrica estádisponível por corretor e também portópico.

90

Page 97: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitoramento de nível DEFAULT

Nome Quando visível DimensõesDescrição

BytesOutPerSec Depois de criar umtópico.

Nomedocluster,ID doagente,tópico

O número de bytes por segundoenviados aos clientes. Esta métrica estádisponível por corretor e também portópico.

CpuIdle Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

A porcentagem de tempo ocioso daCPU.

CpuSystem Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

A porcentagem de CPU no espaço dokernel.

CpuUser Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

A porcentagem de CPU no espaço dousuário.

GlobalPartitionCountDepois que o clusterpassa para o estadoACTIVE.

Nomedocluster

O número de partições em todos ostrópicos no cluster, excluindo as réplicas.ComoGlobalPartitionCountnãoinclui réplicas, a soma dapropriedadePartitionCountpodemser maiores que GlobalPartitionCount seo fator de replicação para um tópico formaior que 1.

GlobalTopicCount Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster

Número total de tópicos em todos osagentes no cluster.

EstimatedMaxTimeLagDepois que o grupo deconsumidores consomea partir de um tópico.

GrupodeConsumidores,Tópico

Estimativa do tempo (em segundos)para drenarMaxOffsetLag.

KafkaAppLogsDiskUsedDepois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

A porcentagem de espaço em discousada para logs de aplicativos.

KafkaDataLogsDiskUsed(ClusterName, BrokerIDDimensão)

Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

A porcentagem de espaço em discousada para logs de dados.

91

Page 98: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitoramento de nível DEFAULT

Nome Quando visível DimensõesDescrição

KafkaDataLogsDiskUsed(ClusterNameDimensão)

Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster

A porcentagem de espaço em discousada para logs de dados.

LeaderCount Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número total de líderes de partiçõespor corretor, não incluindo réplicas.

MaxOffsetLag Depois que o grupo deconsumidores consomea partir de um tópico.

GrupodeConsumidores,Tópico

O atraso máximo de deslocamento emtodas as partições em um tópico.

MemoryBuffered Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O tamanho, em bytes, da memóriaarmazenada em buffer para o agente.

MemoryCached Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O tamanho, em bytes, da memóriaarmazenada em cache para o agente.

MemoryFree Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O tamanho, em bytes, de memória que égratuita e disponível para o agente.

MemoryUsed Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O tamanho, em bytes, de memória queestá em uso pelo agente.

MessagesInPerSec Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número de mensagens recebidas porsegundo do agente.

NetworkRxDropped Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número de pacotes de recebimentodescartados.

NetworkRxErrors Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número de erros de recepção da redepara o agente.

92

Page 99: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitoramento de nível DEFAULT

Nome Quando visível DimensõesDescrição

NetworkRxPackets Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número de pacotes recebidos peloagente.

NetworkTxDropped Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número de pacotes de transmissãodescartados.

NetworkTxErrors Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número de erros de transmissão darede para o agente.

NetworkTxPackets Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número de pacotes transmitidos peloagente.

OfflinePartitionsCountDepois que o clusterpassa para o estadoACTIVE.

Nomedocluster

Número total de partições que estãooffline no cluster.

PartitionCount Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número total de partições de tópicopor broker, incluindo réplicas.

ProduceTotalTimeMsMeanDepois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O tempo médio de produção emmilissegundos.

RequestBytesMean Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número médio de bytes desolicitações do agente.

RequestTime Após a limitação dasolicitação ser aplicada.

Nomedocluster,ID doagente

O tempo médio gasto em milissegundosem threads de rede e de E/S do agentepara processar solicitações.

93

Page 100: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorMonitoramento de nível PER_BROKER

Nome Quando visível DimensõesDescrição

RootDiskUsed Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

A porcentagem do disco raiz usado peloagente.

SumOffsetLag Depois que o grupo deconsumidores consomea partir de um tópico.

GrupodeConsumidores,Tópico

O atraso de deslocamento agregadopara todas as partições em um tópico.

SwapFree Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O tamanho, em bytes, de memória deswap que está disponível para o agente.

SwapUsed Depois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O tamanho em bytes de memória deswap que está em uso para o agente.

UnderMinIsrPartitionCountDepois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número de partições em minIsr doagente.

UnderReplicatedPartitionsDepois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

O número de partições sub-replicadasdo agente.

ZooKeeperRequestLatencyMsMeanDepois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

Latência média em milissegundos parasolicitações ZooKeeper do Apache doagente.

ZooKeeperSessionStateDepois que o clusterpassa para o estadoACTIVE.

Nomedocluster,ID doagente

Status da conexão da sessãoZooKeeper do agente que pode ser umadas seguintes: NOT_CONNECTED: '0.0', ASSOCIANDO: '0.1', LIGAÇÃO: '0.5',CONECTADO SOMENTE LEITURA:'0.8', LIGADO: '1.0', FECHADO: '5.0',AUTH_FAILED: “10.0”.

Monitoramento de nível PER_BROKERAo definir o nível de monitoramento como PER_BROKER, você obtém as métricas descritas na tabelaa seguir, além de todas as métricas de nível DEFAULT. Você paga pelas métricas na tabela a seguir,enquanto as métricas de nível DEFAULT continuam gratuitas. As métricas nesta tabela têm as seguintesdimensões: Nome do cluster, ID do agente.

94

Page 101: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorMonitoramento de nível PER_BROKER

Métricas adicionais disponíveis a partir do nível de monitoramento PER_BROKER

Nome Quando visível Descrição

FetchConsumerLocalTimeMsMeanDepois de haver umprodutor/consumidor.

O tempo médio em milissegundos que asolicitação do consumidor é processadano líder.

FetchConsumerRequestQueueTimeMsMeanDepois de haver umprodutor/consumidor.

O tempo médio em milissegundos que asolicitação do consumidor aguarda na filade solicitações.

FetchConsumerResponseQueueTimeMsMeanDepois de haver umprodutor/consumidor.

O tempo médio em milissegundos que asolicitação do consumidor aguarda na filade resposta.

FetchConsumerResponseSendTimeMsMeanDepois de haver umprodutor/consumidor.

O tempo médio, em milissegundos, paraque o consumidor envie uma resposta.

FetchConsumerTotalTimeMsMeanDepois de haver umprodutor/consumidor.

O tempo total médio em milissegundosque os consumidores gastam obtendodados do agente.

FetchFollowerLocalTimeMsMeanDepois de haver umprodutor/consumidor.

O tempo médio em milissegundos que asolicitação do seguidor é processada nolíder.

FetchFollowerRequestQueueTimeMsMeanDepois de haver umprodutor/consumidor.

O tempo médio em milissegundos que asolicitação de seguidor aguarda na fila desolicitações.

FetchFollowerResponseQueueTimeMsMeanDepois de haver umprodutor/consumidor.

O tempo médio em milissegundos que asolicitação de seguidor aguarda na fila deresposta.

FetchFollowerResponseSendTimeMsMeanDepois de haver umprodutor/consumidor.

O tempo médio em milissegundos para oseguidor enviar uma resposta.

FetchFollowerTotalTimeMsMeanDepois de haver umprodutor/consumidor.

O tempo total médio em milissegundosque os seguidores gastam obtendo edados do agente.

FetchMessageConversionsPerSecDepois de criar umtópico.

O número de conversões de mensagensde busca por segundo do agente.

FetchThrottleByteRate Depois que a limitaçãoda largura de banda éaplicada.

O número de bytes limitados porsegundo.

FetchThrottleQueueSize Depois que a limitaçãoda largura de banda éaplicada.

O número de mensagens na fila delimitação.

FetchThrottleTime Depois que a limitaçãoda largura de banda éaplicada.

O tempo médio de limitações de buscaem milissegundos.

NetworkProcessorAvgIdlePercentDepois que o clusterpassa para o estadoACTIVE.

A porcentagem média do tempo em queos processadores de rede estão ociosos.

95

Page 102: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorMonitoramento de nível PER_BROKER

Nome Quando visível Descrição

ProduceLocalTimeMsMean Depois que o clusterpassa para o estadoACTIVE.

O tempo médio em milissegundos para oseguidor enviar uma resposta.

ProduceMessageConversionsPerSecDepois de criar umtópico.

O número de conversões de mensagensde produção por segundo do agente.

ProduceMessageConversionsTimeMsMeanDepois que o clusterpassa para o estadoACTIVE.

O tempo médio em milissegundos gastoem conversões de formato de mensagem.

ProduceRequestQueueTimeMsMeanDepois que o clusterpassa para o estadoACTIVE.

O tempo médio em milissegundos que asmensagens de solicitação gastam na fila.

ProduceResponseQueueTimeMsMeanDepois que o clusterpassa para o estadoACTIVE.

O tempo médio em milissegundos que asmensagens de resposta gastam na fila.

ProduceResponseSendTimeMsMeanDepois que o clusterpassa para o estadoACTIVE.

O tempo médio em milissegundos gastono envio de mensagens de resposta.

ProduceThrottleByteRate Depois que a limitaçãoda largura de banda éaplicada.

O número de bytes limitados porsegundo.

ProduceThrottleQueueSize Depois que a limitaçãoda largura de banda éaplicada.

O número de mensagens na fila delimitação.

ProduceThrottleTime Depois que a limitaçãoda largura de banda éaplicada.

O tempo médio de limitação da produçãoem milissegundos.

ProduceTotalTimeMsMean Depois que o clusterpassa para o estadoACTIVE.

O tempo médio de produção emmilissegundos.

ReplicationBytesInPerSec Depois de criar umtópico.

O número de bytes por segundorecebidos de outros agentes.

ReplicationBytesOutPerSec Depois de criar umtópico.

O número de bytes por segundo enviadosa outros agentes.

RequestExemptFromThrottleTimeApós a limitação dasolicitação ser aplicada.

O tempo médio gasto em milissegundosem threads de rede e de E/S do agentepara processar solicitações isentas delimitação.

RequestHandlerAvgIdlePercentDepois que o clusterpassa para o estadoACTIVE.

A porcentagem média do tempo em queos threads do manipulador de solicitaçõesestão ociosos.

RequestThrottleQueueSize Após a limitação dasolicitação ser aplicada.

O número de mensagens na fila delimitação.

96

Page 103: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitoramento de nível PER_TOPIC_PER_BROKER

Nome Quando visível Descrição

RequestThrottleTime Após a limitação dasolicitação ser aplicada.

O tempo médio da limitação desolicitações em milissegundos.

Monitoramento de nível PER_TOPIC_PER_BROKERAo definir o nível de monitoramento como PER_TOPIC_PER_BROKER, você obtém as métricas descritas natabela a seguir, além de todas as métricas dos níveis PER_BROKER e DEFAULT. Somente as métricas denível DEFAULT são gratuitas. As métricas nesta tabela têm as seguintes dimensões: Nome do cluster, IDdo agente, tópico.

Important

Para um cluster do Amazon MSK que usa o Apache Kafka 2.4.1 ou uma versão mais recente,as métricas na tabela a seguir aparecem somente após seus valores se tornarem diferentes dezero pela primeira vez. Por exemplo, para ver BytesInPerSec, um ou mais produtores devemprimeiro enviar dados para o cluster.

Métricas adicionais disponíveis a partir do nível de monitoramento PER_TOPIC_PER_BROKER

Nome Quando visível Descrição

FetchMessageConversionsPerSecDepois de criarum tópico.

O número de mensagens obtidas convertidas porsegundo.

MessagesInPerSec Depois de criarum tópico.

O número de mensagens recebidas por segundo.

ProduceMessageConversionsPerSecDepois de criarum tópico.

O número de conversões por segundo demensagens produzidas.

Monitoramento de nívelPER_TOPIC_PER_PARTITIONQuando você define o nível de monitoramento comoPER_TOPIC_PER_PARTITION,você obtém as métricas descritas na tabela a seguir, além de todas as métricasdoPER_TOPIC_PER_BROKER,PER_BROKERe níveis DEFAULT. Somente as métricas de nível DEFAULTsão gratuitas. As métricas nesta tabela têm as seguintes dimensões: Grupo de Consumidores, Tópico,Partição.

Métricas adicionais disponíveis a partir do nível de monitoramento PER_TOPIC_PER_PARTITION

Nome Quando visível Descrição

EstimatedTimeLag Depois queo grupo deconsumidoresconsome a partirde um tópico.

Estimativa de tempo (em segundos) para drenar oatraso de deslocamento da partição.

OffsetLag Depois queo grupo deconsumidores

Lag do consumidor em nível de partição no númerode compensações.

97

Page 104: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Visualizando métricas do AmazonMSK usando o CloudWatch

Nome Quando visível Descriçãoconsome a partirde um tópico.

Visualizando métricas do Amazon MSK usando oCloudWatch

Você pode monitorar as métricas do Amazon MSK usando o console do CloudWatch, a linha de comandoou a API do CloudWatch. Os procedimentos a seguir mostram como acessar as métricas usando osseguintes métodos:

Para acessar as métricas usando o console do CloudWatch

Faça login noAWS Management ConsoleE abra o console do CloudWatch emhttps://console.aws.amazon.com/cloudwatch/.

1. No painel de navegação, selecione Métricas.2. Selecione oTodas as métricase, em seguida, escolhaAWS/Kafka.3. Para visualizar métricas em nível de tópico, escolha Topic, Broker ID, Cluster Name (Tópico, ID do

agente, nome do cluster); para métricas em nível de agente, escolha Broker ID, Cluster Name (IDdo agente, nome do cluster) e, para métricas em nível de cluster, escolha Cluster Name (Nome docluster).

4. (Opcional) No painel gráfico, selecione uma estatística e um período e, em seguida, crie um alarme doCloudWatch usando essas configurações.

Para acessar as métricas usando a AWS CLI

Use os comandos list-metrics e get-metric-statistics.

Para acessar as métricas usando a CLI do CloudWatch

Use os comandos mon-list-metrics e mon-get-stats.

Para acessar as métricas usando a API do CloudWatch

Use as operações ListMetrics e GetMetricsStatistics.

Monitoramento de atraso do consumidorO monitoramento do atraso do consumidor permite identificar consumidores lentos ou paralisados que nãoestão acompanhando os dados mais recentes disponíveis em um tópico. Quando necessário, você podeexecutar ações corretivas, como dimensionar ou reinicializar esses consumidores. Para monitorar o atrasodo consumidor, você pode usar o Amazon CloudWatch, o monitoramento aberto com a Prometheus ou oBurrow.

Métricas do Consumer Lag para CloudWatch e paraMonitoramento Aberto com PrometheusAs métricas de atraso do consumidor quantificam a diferença entre os dados mais recentes gravadosem seus tópicos e os dados lidos por seus aplicativos. O Amazon MSK fornece as seguintes métricas

98

Page 105: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitoramento de atraso do consumidor com o Burrow

de consumo, que você pode obter por meio do Amazon CloudWatch ou por meio de monitoramentoaberto com a Prometheus:EstimatedMaxTimeLag,EstimatedTimeLag,MaxOffsetLag,OffsetLag,eSumOffsetLag. Para obter informações sobre essas métricas, consulte.the section called “Métricas doAmazon MSK para monitoramento com o CloudWatch” (p. 90).

Monitoramento de atraso do consumidor com oBurrowO Burrow é um complemento de monitoramento do Apache Kafka que fornece verificação de atraso doconsumidor. O Burrow tem um design modular que inclui os seguintes subsistemas:

• Os clusters executam um cliente do Apache Kafka que atualiza periodicamente as listas de tópicos e odeslocamento de HEAD atual (o deslocamento mais recente) de cada partição.

• Os consumidores buscam informações sobre grupos de consumidores em um repositório. Esserepositório pode ser um cluster do Apache Kafka (que consome o tópico __consumer_offsets), oZooKeeper ou algum outro repositório.

• O subsistema de armazenamento armazena todas essas informações no Burrow.• O subsistema do avaliador recupera as informações do subsistema de armazenamento para um grupo

de consumidores específico e calcula o status desse grupo. Isso segue as regras de avaliação de atrasode consumidor.

• O subsistema notificador solicita status em grupos de consumidores de acordo com um intervaloconfigurado e envia notificações (por e-mail, HTTP ou algum outro método) para grupos que atendemaos critérios configurados.

• O subsistema do servidor HTTP fornece uma interface de API para o Burrow para obter informaçõessobre clusters e consumidores.

Para obter mais informações sobre o Burrow, consulte Burrow - Kafka Consumer Lag Checking.

Important

Certifique-se de que o Burrow seja compatível com a versão do Apache Kafka que você estáusando para o cluster do MSK.

Para configurar e usar o Burrow com o Amazon MSK

Siga estas etapas caso use comunicação de texto não criptografado. Para TLS, consulte também opróximo procedimento.

1. Crie um cluster MSK e inicie uma máquina cliente na mesma VPC do cluster. Por exemplo, você podeseguir as instruções em Conceitos básicos (p. 5).

2. Execute o seguinte comando na instância do EC2 que serve como sua máquina cliente.

sudo yum install go

3. Execute o seguinte comando na máquina cliente para obter o projeto do Burrow.

go get github.com/linkedin/Burrow

4. Execute o comando a seguir para instalar o dep. Ele é instalado na pasta /home/ec2-user/go/bin/dep.

curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh

99

Page 106: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitoramento de atraso do consumidor com o Burrow

5. Vá para a pasta /home/ec2-user/go/src/github.com/linkedin/Burrow e execute o seguintecomando.

/home/ec2-user/go/bin/dep ensure

6. Execute o seguinte comando na mesma pasta.

go install

7. Abra o arquivo de configuração /home/ec2-user/go/src/github.com/linkedin/Burrow/config/burrow.toml para edição. Nas seções a seguir do arquivo de configuração, substituaos espaços reservados pelo nome do cluster do MSK, os pares host:port para seus servidoresZooKeeper e seus agentes de bootstrap.

Para obter seus pares de host:port do ZooKeeper, descreva o cluster MSK e procure o valor deZookeeperConnectString. Consulte the section called “Obter a string de conexão do ApacheZooKeeper” (p. 20).

Para obter seus agentes de bootstrap, consulte the section called “Obter os agentes debootstrap” (p. 21).

Siga a formatação mostrada abaixo ao editar o arquivo de configuração.

[zookeeper]servers=[ "ZooKeeper-host-port-pair-1", "ZooKeeper-host-port-pair-2", "ZooKeeper-host-port-pair-3" ]timeout=6root-path="/burrow"

[client-profile.test]client-id="burrow-test"kafka-version="0.10.0"

[cluster.MSK-cluster-name]class-name="kafka"servers=[ "bootstrap-broker-host-port-pair-1", "bootstrap-broker-host-port-pair-2", "bootstrap-broker-host-port-pair-3" ]client-profile="test"topic-refresh=120offset-refresh=30

[consumer.MSK-cluster-name]class-name="kafka"cluster="MSK-cluster-name"servers=[ "bootstrap-broker-host-port-pair-1", "bootstrap-broker-host-port-pair-2", "bootstrap-broker-host-port-pair-3" ]client-profile="test"group-blacklist="^(console-consumer-|python-kafka-consumer-|quick-).*$"group-whitelist=""

8. Na pasta go/bin, execute o seguinte comando.

./Burrow --config-dir /home/ec2-user/go/src/github.com/linkedin/Burrow/config

9. Verifique se há erros no arquivo bin/log/burrow.log.10. Você pode usar o seguinte comando para testar a configuração.

curl -XGET 'HTTP://your-localhost-ip:8000/v3/kafka'

11. Para obter todas as solicitações HTTP e links compatíveis, consulte Endpoint do HTTP de Burrow.

100

Page 107: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitoramento de atraso do consumidor com o Burrow

Como usar o Burrow com TLS

Além do procedimento anterior, consulte as etapas a seguir caso você esteja usando a comunicação TLS.

1. Execute o seguinte comando.

sudo yum install java-1.8.0-openjdk-devel -y

2. Execute o comando a seguir depois de ajustar os caminhos conforme necessário.

find /usr/lib/jvm/ -name "cacerts" -exec cp {} /tmp/kafka.client.truststore.jks \;

3. Na próxima etapa, use o comando keytool, que pede uma senha. A senha padrão é changeit.Recomendamos que você execute o seguinte comando para alterar a senha antes de prosseguir paraa próxima etapa.

keytool -keystore /tmp/kafka.client.truststore.jks -storepass changeit -storepasswd -new Password

4. Execute o seguinte comando.

keytool --list -rfc -keystore /tmp/kafka.client.truststore.jks >/tmp/truststore.pem

Você precisa de truststore.pem para o arquivo burrow.toml descrito posteriormente nesteprocedimento.

5. Para gerar o certfile e o keyfile, use o código em Gerenciar certificados do cliente para autenticaçãomútua com o Amazon MSK. É necessário o sinalizador pem.

6. Configure o arquivo burrow.toml conforme o exemplo a seguir. É possível ter várias seções decluster e de consumidor para monitorar vários clusters do MSK usando um cluster do burrow. Vocêtambém pode ajustar a versão do Apache Kafka em client-profile. Ela representa a versãocliente do Apache Kafka para oferecer suporte. Para obter mais informações, consulte Client Profile noGitHub de Burrow.

[general]pidfile="burrow.pid"stdout-logfile="burrow.out" [logging]filename="/tmp/burrow.log"level="info"maxsize=100maxbackups=30maxage=10use-localtime=falseuse-compression=true [zookeeper]servers=[ "ZooKeeperConnectionString" ]timeout=6root-path="/burrow" [client-profile.msk1-client]client-id="burrow-test"tls="msk-mTLS"kafka-version="2.0.0" [cluster.msk1]class-name="kafka"servers=[ "BootstrapBrokerString" ]

101

Page 108: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitoramento aberto com o Prometheus

client-profile="msk1-client"topic-refresh=120offset-refresh=30 [consumer.msk1-cons]class-name="kafka"cluster="msk1"servers=[ "BootstrapBrokerString" ]client-profile="msk1-client"group-blacklist="^(console-consumer-|python-kafka-consumer-|quick-).*$"group-whitelist="" [httpserver.default]address=":8000" [storage.default]class-name="inmemory"workers=20intervals=15expire-group=604800min-distance=1 [tls.msk-mTLS]certfile="/tmp/client_cert.pem"keyfile="/tmp/private_key.pem"cafile="/tmp/truststore.pem"noverify=false

Monitoramento aberto com o PrometheusVocê pode monitorar o cluster do MSK com o Prometheus, um sistema de monitoramento de códigoaberto para dados da métrica de séries temporais. Também é possível usar ferramentas compatíveiscom as métricas ou as ferramentas formatadas do Prometheus que se integram ao Monitoramentoaberto do Amazon MSK, como a lógica do Datadog, Lenses, New Relic e Sumo. O monitoramento abertoestá disponível gratuitamente, mas cobranças são aplicáveis à transferência de dados entre zonas dedisponibilidade. Para obter informações sobre o Prometheus, consulte a documentação do Prometheus.

Criar um cluster do Amazon MSK com ummonitoramento aberto habilitadoUsar a AWS Management Console

1. Faça login noAWS Management Consolee abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/home?region=us-east-1#/home/.

2. Na seção Monitoring (Monitoramento), marque a caixa de seleção ao lado de Enable open monitoringwith Prometheus (Habilitar o monitoramento aberto com o Prometheus).

3. Forneça as informações obrigatórias em todas as seções da página e revise todas as opçõesdisponíveis.

4. Selecione Create cluster (Criar cluster).

Usar a AWS CLI

• Invoque o comando create-cluster e especifique a opção open-monitoring. Habilite oJmxExporter, o NodeExporter ou ambos. Se você especificar o open-monitoring, os doisexportadores não poderão ser desabilitados ao mesmo tempo.

102

Page 109: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorHabilitar o monitoramento aberto paraum cluster existente do Amazon MSK

Usar a API do

• Invoque a operação CreateCluster e especifique OpenMonitoring. Habilite o jmxExporter, onodeExporter ou ambos. Se você especificar o OpenMonitoring, os dois exportadores nãopoderão ser desabilitados ao mesmo tempo.

Habilitar o monitoramento aberto para um clusterexistente do Amazon MSKPara habilitar o monitoramento aberto, verifique se o cluster está no estado ACTIVE.

Usar a AWS Management Console

1. Faça login noAWS Management Consolee abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/home?region=us-east-1#/home/.

2. Escolha o nome do cluster que deseja atualizar. Você será redirecionado para a página Details(Detalhes) do cluster.

3. Na guia Details (Detalhes), role para baixo para encontrar a seção Monitoring (Monitoramento).4. Selecione Edit (Editar).5. Marque a caixa de seleção ao lado de Enable open monitoring with Prometheus (Habilitar o

monitoramento aberto com o Prometheus).6. Selecione Save changes (Salvar alterações).

Usar a AWS CLI

• Invoque o comando update-monitoring e especifique a opção open-monitoring. Habilite oJmxExporter, o NodeExporter ou ambos. Se você especificar o open-monitoring, os doisexportadores não poderão ser desabilitados ao mesmo tempo.

Usar a API do

• Invoque a operação UpdateMonitoring e especifique o OpenMonitoring. Habilite o jmxExporter,o nodeExporter ou ambos. Se você especificar o OpenMonitoring, os dois exportadores nãopoderão ser desabilitados ao mesmo tempo.

Configurar um host do Prometheus em uma Instânciado Amazon EC21. Baixe o servidor do Prometheus emhttps://prometheus.io/download/#prometheusPara a instância do

Amazon EC2.2. Extraia o arquivo obtido por download para um diretório e acesse esse diretório.3. Crie um arquivo com o seguinte conteúdo e nomeie-o como prometheus.yml.

# file: prometheus.yml# my global configglobal: scrape_interval: 10s

# A scrape configuration containing exactly one endpoint to scrape:# Here it's Prometheus itself.

103

Page 110: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Configurar um host do Prometheusem uma Instância do Amazon EC2

scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' static_configs: # 9090 is the prometheus server port - targets: ['localhost:9090'] - job_name: 'broker' file_sd_configs: - files: - 'targets.json'

4. Use a operação ListNodes para obter uma lista dos agentes do cluster.5. Crie um arquivo denominado targets.json com a seguinte JSON: Substitua broker_dns_1,

broker_dns_2 e o restante dos nomes do DNS com os nomes do DNS obtidos para os agentes naetapa anterior. Inclua todos os agentes obtidos na etapa anterior. O Amazon MSK usa a porta 11001para o JMX Exporter e a porta 11002 para o Node Exporter.

[ { "labels": { "job": "jmx" }, "targets": [ "broker_dns_1:11001", "broker_dns_2:11001", . . . "broker_dns_N:11001" ] }, { "labels": { "job": "node" }, "targets": [ "broker_dns_1:11002", "broker_dns_2:11002", . . . "broker_dns_N:11002" ] }]

6. Para iniciar o servidor do Prometheus na instância do Amazon EC2, execute o seguinte comando nodiretório no qual extraiu os arquivos do Prometheus e salvou oprometheus.ymletargets.json.

./prometheus

7. Localize o endereço IP IPv4 público da instância do Amazon EC2 na qual executou o Prometheus naetapa anterior. Esse endereço IP público será necessário na próxima etapa.

8. Para acessar IU da Web do Prometheus, abra um navegador que possa acessar a instância doAmazon EC2 e acessePrometheus-Instance-Public-IP:9090, ondeProtheus-instância-público-IPÉ o endereço IP público obtido na etapa anterior.

104

Page 111: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Métricas do Prometeu

Métricas do PrometeuTodas as métricas emitidas pelo Apache Kafka para o JMX são acessíveis ao usar o monitoramentoaberto com o Prometheus. Para obter informações sobre as métricas do Apache Kafka, consulteMonitoring (Monitoramento) na documentação do Apache Kafka. Juntamente com as métricas do ApacheKafka, as métricas do consumidor também estão disponíveis na porta 11001 sob o nome do MBeanJMXkafka.consumer.group:type=ConsumerLagMetrics. Também é possível usar o Node Exporterdo Prometheus para obter as métricas da CPU e do disco para os agentes na porta 11002.

105

Page 112: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Usando o controle de cruzeiro doLinkedIn para Apache Kafka com oAmazon MSK

Você pode usar o Cruise Control do LinkedIn para reequilibrar seu cluster do Amazon MSK, detectar ecorrigir anomalias e monitorar o estado e a integridade do cluster.

Como fazer download e criar o Cruise Control

1. Crie uma instância do Amazon EC2 na mesma Amazon VPC que o cluster do Amazon MSK.2. Instale o Prometheus na instância do Amazon EC2 que você criou na etapa anterior. Observe o IP

privado e a porta. O número da porta padrão é 9090. Para obter informações sobre como configuraro Prometheus para agregar métricas para o cluster, consultethe section called “Monitoramento abertocom o Prometheus” (p. 102).

3. BaixarControle de cruzeirosNa instância do Amazon EC2. (Como alternativa, você pode usar umainstância separada do Amazon EC2 para o Cruise Control, se preferir.) Para um cluster que tenha oApache Kafka versão 2.4.*, use a versão 2.4.* Cruise Control mais recente. Se o seu cluster tiver umaversão do Apache Kafka anterior à 2.4.*, use a versão 2.0.* Cruise Control mais recente.

4. Descompacte o arquivo do Cruise Control e, em seguida, vá para a pasta descompactada.5. Execute o seguinte comando para instalar o git.

sudo yum -y install git

6. Execute o seguinte comando para inicializar o repositório local. Substituir Your-Cruise-Control-Folder com o nome da pasta atual (a pasta que você obteve quando descompactou o download doCruise Control).

git init && git add . && git commit -m "Init local repo." && git tag -a Your-Cruise-Control-Folder -m "Init local version."

7. Execute o seguinte comando para criar o código-fonte.

./gradlew jar copyDependantLibs

Para configurar e executar o Cruise Control

1. Faça as seguintes atualizações para oconfig/cruisecontrol.propertiesfile. Substitua oexemplo de servidores bootstrap e seqüência de conexão Apache ZooKeeper com os valores parao seu cluster. Para obter essas cadeias de caracteres para o cluster, você pode ver os detalhes docluster no console. Você também pode usar oGetBootstrapBrokerseDescribeClusterOperações de APIou seus equivalentes de CLI.

# If using TLS encryption, use 9094; use 9092 if using plaintextbootstrap.servers=b-1.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094,b-2.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094,b-3.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094

106

Page 113: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

zookeeper.connect=z-1.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:2181,z-2.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:2181,z-3.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:2181 # SSL properties, needed if cluster is using TLS encryptionsecurity.protocol=SSLssl.truststore.location=/home/ec2-user/kafka.client.truststore.jks # Use the Prometheus Metric Samplermetric.sampler.class=com.linkedin.kafka.cruisecontrol.monitor.sampling.prometheus.PrometheusMetricSampler # Prometheus Metric Sampler specific configurationprometheus.server.endpoint=1.2.3.4:9090 # Replace with your Prometheus IP and port # Change the capacity config file and specify its path; details belowcapacity.config.file=config/capacityCores.json

2. Edite oconfig/capacityCores.jsonpara especificar o tamanho certo do disco e os núcleos daCPU e os limites de entrada/saída da rede. Você pode usar oDescribeClusterOperação da API (ou seuequivalente da CLI) para obter o tamanho do disco. Para núcleos de CPU e limites de entrada/saídade rede, consulteTipos de instância do Amazon EC2.

{ "brokerCapacities": [ { "brokerId": "-1", "capacity": { "DISK": "10000", "CPU": { "num.cores": "2" }, "NW_IN": "5000000", "NW_OUT": "5000000" }, "doc": "This is the default capacity. Capacity unit used for disk is in MB, cpu is in number of cores, network throughput is in KB." } ]}

3. Opcionalmente, você pode instalar a interface do usuário do Cruise Control. Para baixá-lo,acesseConfigurando o frontend do Cruise Control.

4. Execute o seguinte comando para iniciar o Controle de cruzeiros. Considere usar uma ferramentacomoscreenoutmuxPara manter uma sessão de longa execução aberta.

./kafka-cruise-control-start.sh config/cruisecontrol.properties 9091

5. Use as APIs do Cruise Control ou a interface do usuário para garantir que o Cruise Control tenhaos dados de carga do cluster e que está fazendo sugestões de rebalanceamento. Pode levar váriosminutos para obter uma janela válida de métricas.

107

Page 114: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Limites do Amazon MSKO Amazon MSK tem os seguintes limites:

• Até 90 agentes por conta e 30 agentes por cluster. Para solicitar um limite maior,Criar um caso desuporte.

• Um mínimo de 1 GiB de armazenamento por agente.• Um máximo de 16384 GiB de armazenamento por agente.• Até 100 configurações por conta. Para solicitar um limite maior,Criar um caso de suporte.• Para atualizar a configuração ou a versão do Apache Kafka de um cluster MSK, primeiro certifique-se de

que o número de partições por broker esteja abaixo dos limites descritos emthe section called “ Númerode partições por agente” (p. 122).

• Um cluster que usathe section called “Controle de acesso IAM” (p. 60)O pode ter até 3000 conexõesTCP por cluster por vez.

• Um cluster que usathe section called “Controle de acesso IAM” (p. 60)pode ter até 20 conexões TCP porsegundo para todos os tipos de corretores, exceto para corretores do tipokafka.t3.small, que sãolimitados a 1 conexão TCP por segundo.

.

108

Page 115: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Recursos do Amazon MSKO termorecursosO Amazon MSK possui dois significados, dependendo do contexto. No contexto deAPIs, um recurso é uma estrutura na qual você pode invocar uma operação. Para obter uma listadesses recursos e as operações que você pode invocar sobre eles, consulteRecursosNa Referência daAPI do Amazon MSK. No contexto dathe section called “Controle de acesso IAM” (p. 60), um recursoé uma entidade à qual você pode permitir ou negar acesso, conforme definido nathe section called“Resources” (p. 66)seção.

109

Page 116: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorVersões compatíveis do Apache Kafka

Versões do Apache KafkaAo criar um cluster do Amazon MSK, você especifica qual versão do Apache Kafka deseja que ele tenha.Também é possível atualizar a versão do Apache Kafka de um cluster existente.

Tópicos• Versões compatíveis do Apache Kafka (p. 110)• Atualizar a versão do Apache Kafka (p. 112)

Versões compatíveis do Apache KafkaO Amazon Managed Streaming for Apache Kafka (Amazon MSK) oferece suporte às seguintes versões doApache Kafka e do Amazon MSK.

Tópicos• Apache Kafka versão 2.8.0 (p. 110)• Apache Kafka versão 2.7.1 (p. 110)• Apache Kafka versão 2.6.2 (p. 110)• Apache Kafka versão 2.7.0 (p. 110)• Apache Kafka versão 2.6.1 (p. 111)• Apache Kafka versão 2.6.0 (p. 111)• Apache Kafka versão 2.5.1 (p. 111)• Correção de bugs do Amazon MSK versão 2.4.1.1 (p. 111)• Apache Kafka versão 2.4.1 (use 2.4.1.1 em vez disso) (p. 112)• Apache Kafka versão 2.3.1 (p. 112)• Apache Kafka versão 2.2.1 (p. 112)• Apache Kafka versão 1.1.1 (apenas para clusters existentes) (p. 112)

Apache Kafka versão 2.8.0Para obter informações sobre a versão 2.8.0 do Apache Kafka, consulte aNotas de release dono site dedownloads Apache Kafka.

Apache Kafka versão 2.7.1Para obter informações sobre a versão 2.7.1 do Apache Kafka, consulte aNotas de release dono site dedownloads Apache Kafka.

Apache Kafka versão 2.6.2Para obter informações sobre a versão 2.6.2 do Apache Kafka, consulte aNotas de release dono site dedownloads Apache Kafka.

Apache Kafka versão 2.7.0Para obter informações sobre a versão 2.7.0 do Apache Kafka, consulte aNotas de release dono site dedownloads Apache Kafka.

110

Page 117: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Apache Kafka versão 2.6.1

Apache Kafka versão 2.6.1Para obter informações sobre a versão 2.6.1 do Apache Kafka, consulte aNotas de release dono site dedownloads Apache Kafka.

Apache Kafka versão 2.6.0Para obter informações sobre a versão 2.6.0 do Apache Kafka, consulte aNotas de release dono site dedownloads Apache Kafka.

Apache Kafka versão 2.5.1Apache Kafka versão 2.5.1 inclui várias correções de bugs e novos recursos, incluindo criptografia emtrânsito para Apache ZooKeeper e clientes de administração. O Amazon MSK fornece endpoints TLSZooKeeper, que você pode consultar com oDescribeClusteroperação.

A saída daDescribeClusterinclui a operaçãoZookeeperConnectStringTls, que lista os endpoints dozookeeper TLS.

O exemplo a seguir mostra aZookeeperConnectStringTlsda resposta paraoDescribeClusteroperação:

"ZookeeperConnectStringTls": "z-3.awskafkatutorialc.abcd123.c3.kafka.us-east-1.amazonaws.com:2182,z-2.awskafkatutorialc.abcd123.c3.kafka.us-east-1.amazonaws.com:2182,z-1.awskafkatutorialc.abcd123.c3.kafka.us-east-1.amazonaws.com:2182"

Para obter informações sobre como usar a criptografia TLS com zookeeper, consulteUsando a segurançaTLS com o Apache ZooKeeper (p. 77).

Para obter mais informações sobre a versão 2.5.1 do Apache Kafka, consulte aNotas de release dono sitede downloads Apache Kafka.

Correção de bugs do Amazon MSK versão 2.4.1.1Esta versão é uma versão de correção de bugs somente para Amazon MSK do Apache Kafka versão2.4.1. Esta versão de correção de bugs contém uma correção paraKAFKA-9752, um problemararo que faz com que os grupos de consumidores reequilibrem continuamente e permaneçamnoPreparingRebalanceestado. Esse problema afeta clusters executando o Apache Kafka versões 2.3.1e 2.4.1. Esta versão contém uma correção produzida pela comunidade que está disponível no ApacheKafka versão 2.5.0.

Note

Os clusters do Amazon MSK que executam a versão 2.4.1.1 são compatíveis com qualquercliente Apache Kafka compatível com o Apache Kafka versão 2.4.1.

Recomendamos que você use o MSK bug fix versão 2.4.1.1 para novos clusters do Amazon MSK sepreferir usar o Apache Kafka 2.4.1. É possível atualizar clusters existentes executando o Apache Kafkaversão 2.4.1 para esta versão para incorporar essa correção. Para obter informações sobre como atualizarum cluster existente, consulteAtualizar a versão do Apache Kafka (p. 112).

Para contornar este problema sem actualizar o cluster para a versão 2.4.1.1, consulte a secçãoGrupo deconsumidores preso emPreparingRebalanceestado (p. 116)Seção do do??? (p. 116)Guia.

111

Page 118: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Apache Kafka versão 2.4.1 (use 2.4.1.1 em vez disso)

Apache Kafka versão 2.4.1 (use 2.4.1.1 em vez disso)Note

Você não pode mais criar um cluster MSK com o Apache Kafka versão 2.4.1. Em vez disso, vocêpode usarCorreção de bugs do Amazon MSK versão 2.4.1.1 (p. 111)com clientes compatíveiscom a versão 2.4.1 do Apache Kafka. E se você já tiver um cluster MSK com Apache Kafkaversão 2.4.1, recomendamos que você atualize-o para usar o Apache Kafka versão 2.4.1.1.

O KIP-392 é uma das principais propostas de melhoria do Kafka incluídas na versão 2.4.1do Apache Kafka. Essa melhoria permite que os consumidores busquem a partir da réplicamais próxima. Para usar esse recurso, defina client.rack nas propriedades do consumidorcomo o ID da zona de disponibilidade do consumidor. Um exemplo de ID AZ éuse1-az1.Conjuntos do Amazon MSKbroker.rackpara os IDs das zonas de disponibilidade dos agentes.Também é necessário definir a propriedade de configuração replica.selector.class comoorg.apache.kafka.common.replica.RackAwareReplicaSelector, que é uma implementação dereconhecimento de rack fornecida pelo Apache Kafka.

Quando você usa esta versão do Apache Kafka, as métricas no nível de monitoramentoPER_TOPIC_PER_BROKER aparecem somente após os valores se tornarem diferentes de zero pelaprimeira vez. Para obter mais informações sobre isso, consulte the section called “Monitoramento de nívelPER_TOPIC_PER_BROKER” (p. 97).

Para obter informações sobre como localizar IDs da zona de disponibilidade, consulte IDs da zona dedisponibilidade para o recurso no guia do usuário do AWS Resource Access Manager.

Para obter informações sobre como definir propriedades de configuração, consulte Configuração (p. 35).

Para obter mais informações sobre o KIP-392, consulte Permitir que os consumidores busquem a partir daréplica mais próxima nas páginas do Confluence.

Para obter mais informações sobre a versão 2.4.1 do Apache Kafka, consulte as notas de release no sitede downloads do Apache Kafka.

Apache Kafka versão 2.3.1Para obter informações sobre a versão 2.3.1 do Apache Kafka, consulte as notas de release no site dedownloads do Apache Kafka.

Apache Kafka versão 2.2.1Para obter informações sobre a versão 2.2.1 do Apache Kafka, consulte as notas de release no site dedownloads do Apache Kafka.

Apache Kafka versão 1.1.1 (apenas para clustersexistentes)Você não pode mais criar um novo cluster MSK com o Apache Kafka versão 1.1.1. Você pode continuar ausar clusters existentes configurados com a versão 1.1.1 do Apache Kafka. Para obter informações sobrea versão 1.1.1 do Apache Kafka, consulte as notas de release no site de downloads do Apache Kafka.

Atualizar a versão do Apache KafkaÉ possível atualizar um cluster MSK existente para uma versão mais recente do Apache Kafka. Não épossível atualizá-lo para uma versão mais antiga. Ao atualizar a versão do Apache Kafka de um cluster

112

Page 119: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorAtualizar a versão do Apache Kafka

do MSK, verifique também o software do lado do cliente para confirmar se a versão permite que você useos recursos da nova versão do Apache Kafka do cluster. O Amazon MSK atualiza somente o software doservidor. Ele não atualiza os clientes.

Para obter informações sobre como tornar um cluster altamente disponível durante uma atualização,consulte the section called “Criar clusters altamente disponíveis” (p. 122).

Important

Não é possível atualizar a versão do Apache Kafka para um cluster MSK que excede os limitesdescritos emthe section called “ Número de partições por agente” (p. 122).

Atualizar a versão do Apache Kafka usando a AWS Management Console

1. Abra o console do Amazon MSK emhttps://console.aws.amazon.com/msk/.2. Escolha o cluster MSK no qual você deseja atualizar a versão do Apache Kafka.3. NoDetalhesescolhaAtualizar a versão do Apache Kafka.

Atualizar a versão do Apache Kafka usando a AWS CLI

1. Execute o seguinte comando, substituindo ClusterArn pelo nome de recurso da Amazon (ARN) quevocê obteve quando criou o cluster. Se você não tiver o ARN do cluster, poderá encontrá-lo listandotodos os clusters. Para mais informações, consulte the section called “Listar clusters do ” (p. 22).

aws kafka get-compatible-kafka-versions --cluster-arn ClusterArn

A saída desse comando inclui uma lista das versões do Apache Kafka para as quais você podeatualizar o cluster. Ela se parece com o exemplo a seguir.

{ "CompatibleKafkaVersions": [ { "SourceVersion": "2.2.1", "TargetVersions": [ "2.3.1", "2.4.1", "2.4.1.1", "2.5.1" ] } ]}

2. Execute o seguinte comando, substituindo ClusterArn pelo nome de recurso da Amazon (ARN) quevocê obteve quando criou o cluster. Se você não tiver o ARN do cluster, poderá encontrá-lo listandotodos os clusters. Para mais informações, consulte the section called “Listar clusters do ” (p. 22).

Substitua Current-Cluster-Version pela versão atual do cluster. Em TargetVersion é possívelespecificar qualquer uma das versões de destino da saída do comando anterior.

Important

As versões de cluster não são inteiros simples. Você pode obter a versão atual descrevendoo cluster. Uma versão de exemplo é KTVPDKIKX0DER.

aws kafka update-cluster-kafka-version --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-kafka-version TargetVersion

A saída do comando anterior é semelhante ao JSON a seguir.

113

Page 120: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorAtualizar a versão do Apache Kafka

{ "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"}

3. Para obter o resultado da operação update-cluster-kafka-version, execute o comando aseguir, substituindo ClusterOperationArn pelo ARN obtido na saída do comando update-cluster-kafka-version.

aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn

A saída desse comando describe-cluster-operation é semelhante ao seguinte JSON deexemplo.

{ "ClusterOperationInfo": { "ClientRequestId": "62cd41d2-1206-4ebf-85a8-dbb2ba0fe259", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2021-03-11T20:34:59.648000+00:00", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "UPDATE_IN_PROGRESS", "OperationSteps": [ { "StepInfo": { "StepStatus": "IN_PROGRESS" }, "StepName": "INITIALIZE_UPDATE" }, { "StepInfo": { "StepStatus": "PENDING" }, "StepName": "UPDATE_APACHE_KAFKA_BINARIES" }, { "StepInfo": { "StepStatus": "PENDING" }, "StepName": "FINALIZE_UPDATE" } ], "OperationType": "UPDATE_CLUSTER_KAFKA_VERSION", "SourceClusterInfo": { "KafkaVersion": "2.4.1" }, "TargetClusterInfo": { "KafkaVersion": "2.6.1" } }}

Se OperationState tiver o valor UPDATE_IN_PROGRESS, aguarde um pouco e execute o comandodescribe-cluster-operation novamente. Quando a operação for concluída, o valor deOperationState será transformado em UPDATE_COMPLETE. Como o tempo necessário para que

114

Page 121: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorAtualizar a versão do Apache Kafka

o Amazon MSK conclua a operação varia, talvez seja necessário verificar repetidamente até que aoperação seja concluída.

Atualizar a versão do Apache Kafka usando a API

1. Invoque a operação GetCompatibleKafkaVersions para obter uma lista das versões do Apache Kafkapara as quais é possível atualizar o cluster.

2. Invoque a operação UpdateClusterKafkaVersion para atualizar o cluster para uma das versõescompatíveis do Apache Kafka.

115

Page 122: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Grupo de consumidores presoemPreparingRebalanceestado

Solução de problemas do cluster doAmazon MSK

As informações a seguir podem ajudar você a solucionar problemas que possam surgir com o cluster doAmazon MSK. Você também pode publicar o problema noFórum do Amazon MSK.

Tópicos• Grupo de consumidores preso emPreparingRebalanceestado (p. 116)• Erro ao entregar logs de agente ao Amazon CloudWatch Logs (p. 117)• Nenhum grupo de segurança padrão (p. 117)• O cluster parece estar preso no estado CRIANDO (p. 118)• O estado do cluster é alterado de CRIANDO para COM FALHA (p. 118)• O estado do cluster está ATIVO, mas os produtores não conseguem enviar dados ou os consumidores

não conseguem receber dados (p. 118)• AWS CLIA não reconhece o Amazon MSK (p. 118)• As partições ficam offline ou as réplicas estão fora de sincronia (p. 118)• O espaço em disco está acabando (p. 119)• A memória está acabando (p. 119)• O produtor recebe NotLeaderForPartitionException (p. 119)• Número de partições com replicação insuficiente (URP) maior que zero (p. 119)• Cluster tem tópicos chamados __amazon_msk_canary e __amazon_msk_canary_state (p. 119)• Falha na replicação de partição (p. 119)• Problemas de rede (p. 120)

Grupo de consumidores presoemPreparingRebalanceestado

Se um ou mais dos seus grupos de consumidores estiver preso em um estado de reequilíbrio perpétuo, acausa pode ser o problema do Apache KafkaKAFKA-9752, o que afeta as versões 2.3.1 e 2.4.1 do ApacheKafka.

Para resolver esse problema, recomendamos que você atualize o cluster para oCorreção de bugsdo Amazon MSK versão 2.4.1.1 (p. 111), que contém uma correção para esse problema. Para obterinformações sobre como atualizar um cluster existente para a correção de bugs do Amazon MSK versão2.4.1.1, consulteAtualizar a versão do Apache Kafka (p. 112).

As soluções alternativas para resolver esse problema sem atualizar o cluster para a correção debugs do Amazon MSK versão 2.4.1.1 são definir os clientes Kafka para usarProtocolo de associaçãoestática (p. 116), ou paraIdentificar e reinicializar (p. 117)o nó de corretora de coordenação do grupo deconsumidores preso.

Implementação do protocolo de associaçãoPara implementar Protocolo de Associação Estática em seus clientes, faça o seguinte:

116

Page 123: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Identificar e reinicializar

1. Definagroup.instance.idde sua propriedadeConsumidores de Kafkapara uma string estática queidentifica o consumidor no grupo.

2. Certifique-se de que outras instâncias da configuração sejam atualizadas para usar a string estática.3. Implante as alterações em seus Consumidores Kafka.

Usar o protocolo de associação estática é mais eficaz se o tempo limite da sessão na configuraçãodo cliente estiver definido para uma duração que permita ao consumidor recuperar sem dispararprematuramente um rebalanceamento de grupo de consumidores. Por exemplo, se o aplicativo doconsumidor puder tolerar 5 minutos de indisponibilidade, um valor razoável para o tempo limite da sessãoseria de 4 minutos em vez do valor padrão de 10 segundos.

Note

Usar o protocolo de associação estática reduz apenas a probabilidade de encontrar esseproblema. Você ainda pode encontrar esse problema mesmo ao usar o protocolo de associaçãoestática.

Reinicializando o Nó do Agente de CoordenaçãoPara reinicializar o nó de agente de coordenação, faça o seguinte:

1. Identifique o coordenador do grupo usando okafka-consumer-groups.shComando da.2. Reinicie o coordenador de grupo do grupo de consumidores preso usando o

comandoRebootBrokerAção de API.

Erro ao entregar logs de agente ao AmazonCloudWatch Logs

Ao tentar configurar o cluster para enviar logs de agente ao Amazon CloudWatch Logs, você pode obteruma das duas exceções.

Se você receber uma exceçãoInvalidInput.LengthOfCloudWatchResourcePolicyLimitExceeded, tente novamente, mas usegrupos de log que começam com /aws/vendedlogs/. Para obter mais informações, consulteHabilitar oregistro em log da Amazon Web Services.

Se você receber umInvalidInput.NumberOfCloudWatchResourcePoliciesLimitExceeded,escolha uma política do Amazon CloudWatch Logs em sua conta e acrescente o JSON a seguir a ela.

{"Sid":"AWSLogDeliveryWrite","Effect":"Allow","Principal":{"Service":"delivery.logs.amazonaws.com"},"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Resource":["*"]}

Se você tentar anexar o JSON acima a uma política existente, mas receber um erro informando que vocêatingiu o tamanho máximo da política escolhida, tente anexar o JSON a outra de suas políticas do AmazonCloudWatch Logs. Depois de anexar o JSON a uma política existente, tente novamente configurar aentrega de log de agente para o Amazon CloudWatch Logs.

Nenhum grupo de segurança padrãoSe você tentar criar um cluster e obter um erro indicando que não há grupo de segurança padrão, talvezesteja usando uma VPC que foi compartilhada com você. Peça para o administrador conceder permissão

117

Page 124: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

O cluster parece estar preso no estado CRIANDO

para descrever os grupos de segurança nesta VPC e tente novamente. Para obter um exemplo de políticaque permite essa ação, consulteAmazon EC2: Permite o gerenciamento de grupos de segurança do EC2associados a uma VPC específica de forma programática e no console.

O cluster parece estar preso no estado CRIANDOÀs vezes a criação do cluster pode levar até 30 minutos. Aguarde 30 minutos e verifique o estado docluster novamente.

O estado do cluster é alterado de CRIANDO paraCOM FALHA

Tente criar o cluster novamente.

O estado do cluster está ATIVO, mas os produtoresnão conseguem enviar dados ou os consumidoresnão conseguem receber dados

• Se a criação do cluster tiver êxito (o estado do cluster será ACTIVE), mas não será possível enviar nemreceber dados. Certifique-se de que os aplicativos produtor e consumidor tenham acesso ao cluster.Para obter mais informações, consulte as diretrizes no the section called “Etapa 4: Criar uma máquinacliente” (p. 11).

• Caso os produtores e os consumidores tenham acesso ao cluster, mas ainda assim enfrentemproblemas ao gerar e consumir dados, a causa pode ser KAFKA-7697, que afeta o Apache Kafka versão2.1.0 e pode levar a um deadlock em um ou mais agentes. Considere migrar para o Apache Kafka 2.2.1,que não é afetado por este bug. Para obter informações sobre como migrar, consulte Migração (p. 87).

AWS CLIA não reconhece o Amazon MSKSe você tiver oAWS CLIInstalado, mas ele não reconhece os comandos do Amazon MSK, atualize oAWSCLIPara a versão mais recente. Para obter instruções detalhadas sobre como atualizar oAWS CLI,consulteInstalar aAWS Command Line Interface. Para obter informações sobre como usar oAWS CLIparaexecutar comandos do Amazon MSK, consulteComo ele funciona (p. 16).

As partições ficam offline ou as réplicas estão forade sincronia

Estes podem ser sintomas de pouco espaço em disco. Consulte the section called “O espaço em discoestá acabando” (p. 119).

118

Page 125: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

O espaço em disco está acabando

O espaço em disco está acabandoConsulte as melhores práticas para gerenciar o espaço em disco: the section called “Monitorar o espaçoem disco” (p. 124) e the section called “Ajustar os parâmetros de retenção de dados” (p. 124).

A memória está acabandoCaso a métrica MemoryUsed esteja alta ou a MemoryFree esteja baixa, isso não significa que existe umproblema. O Apache Kafka foi desenvolvido para usar o máximo de memória possível, que é gerenciadade forma ideal.

O produtor recebe NotLeaderForPartitionExceptionGeralmente, isto é um erro transitório. Defina o parâmetro de configuração de retries do produtor comum valor mais alto que o atual.

Número de partições com replicação insuficiente(URP) maior que zero

A UnderReplicatedPartitions é uma métrica importante e deve ser monitorada. Em um cluster MSKíntegro, essa métrica tem o valor igual a 0. Se for maior que zero, isso pode ocorrer por um dos motivos aseguir.

• Se UnderReplicatedPartitions estiver apresentando picos, o problema pode ser que o cluster nãofoi provisionado no tamanho correto para tratar o tráfego de entrada e saída. Consulte the section called“Dimensionar o cluster de modo correto” (p. 122).

• Se UnderReplicatedPartitions for consistentemente maior que 0, inclusive durante períodos debaixo tráfego, o problema pode ser que você definiu ACLs restritivas que não concedem aos agenteso acesso aos tópicos. Para replicar partições, os agentes devem estar autorizados a READ (ler) eDESCRIBE (descrever) os tópicos. DESCRIBE é concedido por padrão com a autorização READ. Paraobter informações sobre a configuração de ACLs, consulte Autorização e ACLs na documentação doApache Kafka.

Cluster tem tópicos chamados__amazon_msk_canary e__amazon_msk_canary_state

Você pode ver que seu cluster MSK tem um tópico com o nome__amazon_msk_canarye outro com onome__amazon_msk_canary_state. Estes são tópicos internos que o Amazon MSK cria e usa paramétricas de saúde e diagnóstico do cluster. Esses tópicos são insignificantes em tamanho e não podemser excluídos.

Falha na replicação de partiçãoCertifique-se de que você não definiu ACLs em CLUSTER_ACTIONS.

119

Page 126: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Problemas de rede

Problemas de redeSe você tem um aplicativo do Apache Kafka que não consegue se comunicar com êxito com um cluster doMSK, comece executando o teste de conectividade a seguir.

1. Use qualquer um dos métodos descritos em the section called “Obter os agentes de bootstrap” (p. 21)para obter os endereços dos agentes de bootstrap.

2. No comando a seguir, substitua bootstrap-broker por um dos endereços do agente que vocêobteve na etapa anterior. Substitua port-number por 9094 se o cluster estiver configurado para usara autenticação TLS. Se o cluster não usar a autenticação TLS, substitua port-number por 9092.Execute o comando usando a máquina cliente.

telnet bootstrap-broker port-number

3. Repita o comando anterior para todos os agentes de bootstrap.4. Use qualquer um dos métodos descritos em the section called “Obter a string de conexão do Apache

ZooKeeper” (p. 20) para obter os endereços dos nós do Apache ZooKeeper do cluster.5. Na máquina cliente, execute o comando a seguir, substituindo Apache-ZooKeeper-node pelo

endereço de um dos nós do Apache ZooKeeper que você obteve na etapa anterior. O número 2181 éo número da porta. Repita para todos os nós do Apache ZooKeeper.

telnet Apache-ZooKeeper-node 2181

Se a máquina cliente é capaz de acessar os agentes e os nós do Apache ZooKeeper, isso significa quenão há problemas de conectividade. Nesse caso, execute o comando a seguir para verificar se o clientedo Apache Kafka está configurado corretamente. Para obter bootstrap-brokers, use qualquer um dosmétodos descritos em the section called “Obter os agentes de bootstrap” (p. 21). Substitua topic pelonome do tópico.

bin/kafka-console-producer.sh --broker-list bootstrap-brokers --producer.config client.properties —topic topic

Se o comando anterior for bem-sucedido, isso indica que o cliente está configurado corretamente. Se vocêainda não consegue produzir e consumir de um aplicativo, depure o problema no nível do aplicativo.

Se a máquina cliente não conseguir acessar os agentes e os nós do Apache ZooKeeper, consulte assubseções a seguir para obter orientações baseadas na configuração cliente-máquina.

Note

Os clientes devem usar uma conexão privada para produzir e consumir dados de e para umcluster MSK. O Amazon MSK não oferece suporte a endpoints públicos.

Cliente do Amazon EC2 e cluster MSK na mesmaVPCSe a máquina cliente estiver na mesma VPC que o cluster do MSK, verifique se o grupo de segurança docluster tem uma regra de entrada que aceita tráfego do grupo de segurança da máquina cliente. Para obterinformações sobre como configurar essas regras, consulte Regras do grupo de segurança. Para obter umexemplo de como acessar um cluster de uma instância do Amazon EC2 que esteja na mesma VPC docluster, consulteConceitos básicos (p. 5).

120

Page 127: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Cliente do Amazon EC2 e cluster MSK em diferentes VPCs

Cliente do Amazon EC2 e cluster MSK em diferentesVPCsSe a máquina cliente e o cluster estiverem em duas VPCs diferentes, verifique se:

• As duas VPCs estão emparelhadas.• O status da conexão de emparelhamento está ativo.• As tabelas de rotas das duas VPCs estão configuradas corretamente.

Para obter informações sobre o emparelhamento de VPC, consulte Trabalhar com conexões deemparelhamento de VPC.

Cliente no localNo caso de um cliente no local configurado para se conectar ao cluster do MSK usando oAWS VPN,verifique o seguinte:

• O status da conexão VPN é UP. Para obter informações sobre como verificar o status da conexão VPN,consulte Como verificar o status atual do meu túnel VPN?.

• A tabela de rotas da VPC do cluster contém a rota para um CIDR no local, cujo destino tem o formatoVirtual private gateway(vgw-xxxxxxxx).

• O grupo de segurança do cluster MSK permite tráfego na porta 2181, na porta 9092 (se o cluster aceitartráfego de texto não criptografado) e na porta 9094 (se o cluster aceitar tráfego criptografado por TLS).

Para obter mais orientações sobre a solução de problemas do AWS VPN, consulte Solução de Problemasdo Client VPN.

AWS Direct ConnectSe o cliente usar oAWS Direct Connect, consulteSolução de problemas doAWS Direct Connect.

Se as orientações para a solução de problemas anteriores não resolverem a situação, certifique-se deque nenhum firewall esteja bloqueando o tráfego de rede. Para depuração adicional, use ferramentascomotcpdumpeWiresharkPara analisar o tráfego e para se certificar de que ele está acessando o clusterdo MSK.

121

Page 128: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedorDimensionar o cluster de modo correto

Melhores práticasEste tópico descreve algumas melhores práticas que devem ser seguidas ao usar o Amazon MSK.

Dimensionar o cluster de modo corretoAo criar um cluster do MSK, você especifica o tipo e o número de agentes.

Número de partições por agenteA tabela a seguir mostra o número máximo recomendado de partições (incluindo réplicas de líder eseguidor) por agente. No entanto, o número de partições por agente é afetado pelo caso de uso e pelaconfiguração. Também recomendamos que você execute seu próprio teste para determinar o tipo certopara os agentes. Para obter mais informações sobre os diferentes tipos de agente, consulte the sectioncalled “Tipos de agente” (p. 16).

Tipo de agente Número máximo de partições (incluindo réplicas delíder e seguidor) por agente

kafka.t3.small 300

kafka.m5.large ou kafka.m5.xlarge 1000

kafka.m5.2xlarge 2000

kafka.m5.4xlarge,kafka.m5.8xlarge,kafka.m5.12xlarge,kafka.m5.16xlarge,oukafka.m5.24xlarge

4000

Para obter orientações sobre como escolher o número de partições, consulte Apache Kafka Supports 200KPartitions Per Cluster.

Número de agentes por clusterPara determinar o número de agentes correto do MSK e entender os custos, consulte oDimensionamentoe preços do MSKPlanilha. Essa planilha fornece uma estimativa para dimensionar um cluster MSKe os custos associados do Amazon MSK comparados a um cluster do Apache Kafka semelhante,autogerenciado e baseado no EC2. Para obter mais informações sobre os parâmetros de entrada naplanilha, passe o mouse sobre as descrições dos parâmetros. Essa planilha foi o resultado da execuçãode uma carga de trabalho de teste com três produtores e três consumidores, garantindo que as latênciasde gravação P99 estavam abaixo de 100 ms. Isso pode não refletir as suas expectativas de carga detrabalho ou de desempenho. Portanto, recomendamos que você teste suas cargas de trabalho depois deprovisionar o cluster.

Criar clusters altamente disponíveisUse as recomendações a seguir para que seu cluster do MSK possa estar altamente disponível duranteuma atualização (como quando você estiver atualizando o tipo de agente ou a versão do Apache Kafka,por exemplo) ou quando o Amazon MSK estiver substituindo um agente.

122

Page 129: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitorar uso da CPU

• Verifique se o fator de replicação (RF) é pelo menos 2 para clusters de duas AZ e pelo menos 3 paraclusters de três AZ. Um RF de 1 pode levar a partições offline durante uma atualização sem interrupção.

• Defina réplicas mínimas em sincronização (minISR) para, no máximo, RF - 1. Uma minISR igual ao RFpode impedir a produção no cluster durante uma atualização sem interrupção. Uma minISR de 2 permiteque tópicos replicados de três vias estejam disponíveis quando uma réplica estiver offline.

• Verifique se as strings de conexão do cliente incluem vários agentes. Ter vários agentes na string deconexão de um cliente permite failover quando um agente específico está offline para uma atualização.Para obter informações sobre como obter uma string de conexão com vários agentes, consulte thesection called “Obter os agentes de bootstrap” (p. 21).

Monitorar uso da CPUO Amazon MSK recomenda que você mantenha a utilização total da CPU para seus corretores abaixo de60%. A utilização total da CPU é a soma daCpuUsereCpuSystemMétricas do . Quando você tiver pelomenos 40% do total da CPU do cluster disponível, o Apache Kafka pode redistribuir a carga da CPU entreos corretores no cluster quando necessário. Um exemplo de quando isso é necessário é quando o AmazonMSK detecta e recupera de uma falha do corretor; nesse caso, o Amazon MSK realiza manutençãoautomática, como patches. Outro exemplo é quando um usuário solicita uma alteração de tipo corretorou atualização de versão; nesses dois casos, o Amazon MSK implanta fluxos de trabalho contínuos quecolocam um corretor off-line por vez. Quando os corretores com partições de leads ficam off-line, o ApacheKafka reatribui a liderança de partição para redistribuir o trabalho a outros corretores no cluster. Seguindoessa prática recomendada, você pode garantir que tenha espaço suficiente de CPU em seu cluster paratolerar eventos operacionais como esses.

Você pode usar oMatemática da Amazon CloudWatchpara criar uma métrica de CPU composta que é asoma deCpuUsereCpuSystem. Defina um alarme que é acionado quando a métrica de CPU compostaatinge um P95 de 60%. Quando o alarme for acionado, dimensione o cluster usando uma das seguintesopções:

• Opção 1 (recomendado): Atualizar o tipo de corretorapara o próximo tipo maior. Por exemplo, se otipo atual forkafka.m5.large, atualize o cluster para usar okafka.m5.xlarge. Lembre-se de quequando você atualiza o tipo de corretor no cluster, o Amazon MSK coloca os corretores off-line de formacontínua e reatribui temporariamente a liderança de partição a outros corretores. Uma atualização detamanho normalmente leva de 10 a 15 minutos por corretor.

• Opção 2: Se houver tópicos com todas as mensagens ingeridas de produtores que usam gravaçõesround-robin (em outras palavras, as mensagens não são chaveadas e ordenar não é importantepara os consumidores),expandir seu clusteradicionando corretores. Adicione também partições atópicos existentes com a taxa de transferência mais alta. Em seguida, usekafka-topics.sh --describepara garantir que as partições recém-adicionadas sejam atribuídas aos novos corretores.O principal benefício desta opção em comparação com a anterior é que você pode gerenciar recursose custos de forma mais granular. Além disso, você pode usar essa opção se a carga da CPU excedersignificativamente 60% porque essa forma de dimensionamento normalmente não resulta em aumentoda carga em corretores existentes.

• Opção 3: Expanda seu cluster adicionando corretores e reatribua partições existentes usando aferramenta de reatribuição de partição chamadakafka-reassign-partitions.sh. No entanto,se você usar essa opção, o cluster precisará gastar recursos para replicar dados de broker parabroker após as partições serem reatribuídas. Em comparação com as duas opções anteriores, issopode aumentar significativamente a carga no cluster no início. Como resultado, o Amazon MSK nãorecomenda usar essa opção quando a utilização da CPU estiver acima de 70% porque a replicaçãocausa carga adicional da CPU e tráfego de rede. O Amazon MSK recomenda usar essa opção somentese as duas opções anteriores não forem viáveis.

Outras recomendações:

123

Page 130: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Monitorar o espaço em disco

• Monitore a utilização total da CPU por agente como proxy para distribuição de carga. Se os corretorestiverem utilização consistentemente desigual da CPU, pode ser um sinal de que a carga não estádistribuída uniformemente no cluster. O Amazon MSK recomenda usar oControle de cruzeiroparagerenciar continuamente a distribuição de carga por meio da atribuição de partição.

• Monitorar latência de produção e consumo. A latência de produção e consumo pode aumentarlinearmente com a utilização da CPU.

Monitorar o espaço em discoPara evitar ficar sem espaço em disco para mensagens, crie um alarme do CloudWatch que observaoKafkaDataLogsDiskUsedMétrica do. Quando o valor dessa métrica atingir ou exceder 85%, executeuma ou mais das seguintes ações:

• Use the section called “Escalabilidade automática” (p. 23). Você também pode aumentar manualmente oarmazenamento do corretor, conforme descrito emthe section called “Escalabilidade manual” (p. 24).

• Reduza o período de retenção de mensagens ou o tamanho do log. Para obter informações sobre comofazer isso, consulte the section called “Ajustar os parâmetros de retenção de dados” (p. 124).

• Exclua tópicos não utilizados.

Para obter informações sobre como configurar e usar alarmes, consulte Usar alarmes do AmazonCloudWatch. Para obter uma lista completa das métricas do Amazon MSK, consulteMonitorar umcluster (p. 90).

Ajustar os parâmetros de retenção de dadosConsumir mensagens não as remove do log. Para liberar espaço em disco regularmente, é possívelespecificar explicitamente um período de retenção, ou seja, por quanto tempo as mensagens permanecemno log. Também é possível especificar um tamanho do log de retenção. Quando o período de retenção ouo tamanho do log de retenção são atingidos, o Apache Kafka começa a remover segmentos inativos dolog.

Para especificar uma política de retenção no nível do cluster, defina um ou mais dos seguintesparâmetros: log.retention.hours, log.retention.minutes, log.retention.ms oulog.retention.bytes. Para obter mais informações, consulte the section called “Configuraçõespersonalizadas” (p. 35).

Também é possível especificar parâmetros de retenção no nível do tópico:

• Para especificar um período de retenção por tópico, use o comando a seguir.

kafka-configs.sh --zookeeper ZooKeeperConnectionString --alter --entity-type topics --entity-name TopicName --add-config retention.ms=DesiredRetentionTimePeriod

• Para especificar um tamanho de log de retenção por tópico, use o comando a seguir.

kafka-configs.sh --zookeeper ZooKeeperConnectionString --alter --entity-type topics --entity-name TopicName --add-config retention.bytes=DesiredRetentionLogSize

Os parâmetros de retenção especificados no nível do tópico têm precedência sobre os parâmetros no níveldo cluster.

124

Page 131: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Não adicionar agentes que não são do MSK

Não adicionar agentes que não são do MSKSe você usar comandos do Apache ZooKeeper para adicionar agentes, esses agentes não serãoadicionados ao cluster do MSK e o Apache ZooKeeper conterá informações incorretas sobre o cluster. Issopode resultar em perda de dados. Para consultar as operações de cluster compatíveis, consulte Como elefunciona (p. 16).

Ativar a criptografia em trânsitoPara obter informações sobre a criptografia em trânsito e como ativá-la, consulte the section called“Criptografia em trânsito” (p. 49).

Reatribuir partiçõesPara mover partições para agentes diferentes no mesmo cluster, é possível usar a ferramenta dereatribuição de partições, chamada kafka-reassign-partitions.sh. Por exemplo, após adicionarnovos agentes para expandir um cluster, é possível reequilibrar esse cluster reatribuindo partiçõesaos novos agentes. Para obter informações sobre como adicionar agentes a um cluster, consulte thesection called “Expandir um cluster” (p. 29). Para obter informações sobre a ferramenta de reatribuição departições, consulte Expanding your cluster na documentação do Apache Kafka.

125

Page 132: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Histórico do documento do Guia dodesenvolvedor do Amazon MSK

A tabela a seguir descreve as alterações importantes feitas no Guia do desenvolvedor do Amazon MSK.

Última atualização de documentação: 30 de setembro de 2020

Mudança Descrição Data

Support ao Apache Kafka 2.7.1 Agora o oferece suporte aoApache Kafka versão 2.7.1.Para mais informações, consulteVersões compatíveis do ApacheKafka (p. 110).

05/2020

Support ao Apache Kafka 2.8.0 Agora o oferece suporte aoApache Kafka versão 2.8.0.Para mais informações, consulteVersões compatíveis do ApacheKafka (p. 110).

28/04/2020

Support ao Apache Kafka 2.6.2 Agora o oferece suporte aoApache Kafka versão 2.6.2.Para mais informações, consulteVersões compatíveis do ApacheKafka (p. 110).

28/04/2020

Support para atualização do tipode agente

Agora, você pode alteraro tipo de agente de umcluster existente. Paramais informações, consulteAtualizando o tipo decorretor (p. 25).

01/2020

Support ao Apache Kafka 2.6.1 Agora o oferece suporte aoApache Kafka versão 2.6.1.Para mais informações, consulteVersões compatíveis do ApacheKafka (p. 110).

01/2020

Support ao Apache Kafka 2.7.0 Agora o oferece suporte aoApache Kafka versão 2.7.0.Para mais informações, consulteVersões compatíveis do ApacheKafka (p. 110).

2020-12-29

Não há novos clusters com oApache Kafka versão 1.1.1

Não é mais possível criar umnovo cluster do Amazon MSKcom a versão 1.1.1 do ApacheKafka. No entanto, se você tiverclusters MSK existentes queestão executando o ApacheKafka versão 1.1.1, você pode

01-2020

126

Page 133: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Mudança Descrição Datacontinuar usando todos osrecursos atualmente suportadosnesses clusters existentes.Para mais informações,consulte Versões do ApacheKafka (p. 110).

Métricas de atraso doconsumidor

O Amazon MSK agorafornece métricas do que vocêpode usar para monitorar oatraso do consumidor. Paramais informações, consulteMonitoramento de um cluster doAmazon MSK (p. 90).

01-2020

Support para Cruise Control O Amazon MSK agora oferecesuporte ao Cruise Control doLinkedIn. Para mais informações,consulte Usando o controlede cruzeiro do LinkedIn paraApache Kafka com o AmazonMSK (p. 106).

2020-11-17

Support ao Apache Kafka 2.6.0 Agora o oferece suporte aoApache Kafka versão 2.6.0.Para mais informações, consulteVersões compatíveis do ApacheKafka (p. 110).

2020-10-21

Support ao Apache Kafka 2.5.1 Agora o oferece suporte aoApache Kafka versão 2.5.1.Com o Apache Kafka versão2.5.1, o Amazon MSK suportacriptografia em trânsito entreclientes e endpoints ZooKeeper.Para mais informações, consulteVersões compatíveis do ApacheKafka (p. 110).

30/01/2020

Aplicativo Auto Expansão Você pode configurar oAmazon Managed Streamingfor Apache Kafka paraexpandir automaticamente oarmazenamento do clusterem resposta ao aumento douso. Para mais informações,consulte Escalabilidadeautomática (p. 23).

30/01/2020

127

Page 134: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

Mudança Descrição Data

Support para segurança de nomede usuário e senha

O Amazon MSK agoraoferece suporte ao login emclusters usando um nome deusuário e senha. O AmazonMSK armazena credenciaisemAWS Secrets Manager.Para mais informações,consulte Autenticação SASL/SCRAM (p. 71).

2020-09-17

Support para atualização daversão do Apache Kafka deum cluster do Amazon MSK doAmazon MSK

Agora é possível atualizar aversão do Apache Kafka de umcluster do MSK existente.

28-05-2020

Suporte para nós de agenteT3.small

O Amazon MSK agora oferecesuporte à criação de clusters comagentes do Amazon EC2 tipoT3.small do.

2020-04-08

Suporte ao Apache Kafka 2.4.1 Agora o oferece suporte aoApache Kafka versão 2.4.1.

02-04-2020

Suporte para logs de agente dostreaming

O Amazon MSK agora podetransmitir logs do agente parao CloudWatch Logs, o AmazonS3 e o Amazon Kinesis DataFirehose. O Kinesis DataFirehose pode, por sua vez,entregar esses logs para osdestinos aos quais oferecesuporte, como o Amazon ES.

25-02-2020

Suporte ao Apache Kafka 2.3.1 Agora o oferece suporte aoApache Kafka versão 2.3.1.

19-12-2019

Monitoramento aberto Agora o oferece suporte aomonitoramento aberto com oPrometheus.

04-12-2019

Suporte ao Apache Kafka 2.2.1 Agora o oferece suporte aoApache Kafka versão 2.2.1.

31-07-2019

Disponibilidade geral Os novos recursos incluemsuporte ao uso de tags,autenticação, criptografia TLS,configurações e a capacidade deatualizar o armazenamento deagentes.

30-05-2019

Suporte ao Apache Kafka 2.1.0 Agora o oferece suporte aoApache Kafka versão 2.1.0.

05-02-2019

128

Page 135: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

AWSGlossárioPara a mais recenteAWSterminologia, consulte aAWSGlossárionoAWSReferência geral.

129

Page 136: Amazon Managed Streaming for Apache Kafka - Guia do ......clusters que usam o Apache Kafka versão 2.2.1, 2.3.1, 2.4.1.1, 2.5.1, 2.6.0 ou 2.7.0. O diagrama a seguir fornece uma visão

Amazon Managed Streaming forApache Kafka Guia do desenvolvedor

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e daversão original em inglês, a versão em inglês prevalecerá.

cxxx