Remover um agente de um cluster do Amazon MSK - Amazon Managed Streaming for Apache Kafka

Remover um agente de um cluster do Amazon MSK

Use esta operação do Amazon MSK quando quiser remover agentes dos clusters provisionados do Amazon Managed Streaming for Apache Kafka (MSK). Você pode reduzir a capacidade de armazenamento e computação do cluster removendo conjuntos de agentes, sem impacto na disponibilidade, risco de durabilidade de dados ou interrupção nas aplicações de fluxo de dados.

Você pode adicionar mais agentes ao cluster para lidar com o aumento do tráfego e remover agentes quando o tráfego diminuir. Com a capacidade de adição e remoção de agentes, você pode utilizar melhor a capacidade do cluster e otimizar os custos de infraestrutura do MSK. A remoção do agente lhe dá o controle no nível do agente sobre a capacidade existente do cluster para atender às suas necessidades de workload e evitar a migração para outro cluster.

Use o Console da AWS, a interface de linha de comandos (CLI), o SDK ou o CloudFormation para reduzir o número de agentes do cluster provisionado. O MSK escolhe os agentes que não têm nenhuma partição neles (exceto os tópicos de canário) e impede que as aplicações produzam dados para esses agentes, ao mesmo tempo que os remove com segurança do cluster.

Você deve remover um agente por zona de disponibilidade, caso queira reduzir o armazenamento e a computação de um cluster. Por exemplo, você pode remover dois agentes de um cluster de duas zonas de disponibilidade, ou três agentes de um cluster de três zonas de disponibilidade em uma única operação de remoção de agentes.

Para obter informações sobre como rebalancear as partições depois de remover agentes de um cluster, consulte Reatribuir partições.

Você pode remover os agentes de todos os clusters provisionados do MSK baseados em M5 e M7g, independentemente do tamanho da instância.

A remoção do agente é compatível nas versões 2.8.1 e superiores do Kafka, inclusive nos clusters do modo KRaft.

Prepare-se para remover os agentes ao remover todas as partições

Antes de iniciar o processo de remoção do agente, primeiro mova todas as partições, exceto aquelas dos tópicos __amazon_msk_canary e __amazon_msk_canary_state dos agentes que você planeja remover. Trata-se de tópicos internos que o Amazon MSK cria para métricas de integridade e diagnóstico do cluster.

Você pode usar as APIs de administração do Kafka ou o Cruise Control para mover partições para outros agentes que você pretende manter no cluster. Consulte Reatribuir partições.

Exemplo de processo para remover partições

Esta seção é um exemplo de como remover partições do agente que você pretende remover. Suponha que você tenha um cluster com seis agentes, dois agentes em cada AZ, e ele tenha quatro tópicos:

  • __amazon_msk_canary

  • __consumer_offsets

  • __amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-c657f7e4ff32-2

  • msk-brk-rmv

  1. Crie uma máquina cliente conforme descrito em Criar uma máquina cliente.

  2. Depois de configurar a máquina cliente, execute o comando a seguir para listar todos os tópicos disponíveis no cluster.

    ./bin/kafka-topics.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --list

    Neste exemplo, vemos quatro nomes de tópicos: __amazon_msk_canary, __consumer_offsets, __amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-c657f7e4ff32-2 e msk-brk-rmv.

  3. Crie um arquivo json chamado topics.json na máquina cliente e adicione todos os nomes dos tópicos do usuário, como no exemplo de código a seguir. Você não precisa incluir o nome do tópico __amazon_msk_canary, pois é um tópico gerenciado pelo serviço que será movido automaticamente quando necessário.

    { "topics": [ {"topic": "msk-brk-rmv"}, {"topic": "__consumer_offsets"}, {"topic": "__amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-c657f7e4ff32-2"} ], "version":1 }
  4. Execute o comando a seguir para gerar uma proposta para mover partições para apenas três agentes dos seis agentes no cluster.

    ./bin/kafka-reassign-partitions.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --topics-to-move-json-file topics.json --broker-list 1,2,3 --generate
  5. Crie um arquivo chamado reassignment-file.json e copie a proposed partition reassignment configuration que você obteve do comando acima.

  6. Execute o comando a seguir para mover as partições que você especificou em reassignment-file.json.

    ./bin/kafka-reassign-partitions.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --reassignment-json-file reassignment-file.json --execute

    A saída será semelhante à seguinte:

    Successfully started partition reassignments for morpheus-test-topic-1-0,test-topic-1-0
  7. Execute o comando a seguir para verificar se todas as partições foram movidas.

    ./bin/kafka-reassign-partitions.sh --bootstrap-server “CLUSTER_BOOTSTRAP_STRING” --reassignment-json-file reassignment-file.json --verify

    A saída será semelhante à seguinte. Monitore o status até que todas as partições nos tópicos solicitados tenham sido reatribuídas com êxito:

    Status of partition reassignment: Reassignment of partition msk-brk-rmv-0 is completed. Reassignment of partition msk-brk-rmv-1 is completed. Reassignment of partition __consumer_offsets-0 is completed. Reassignment of partition __consumer_offsets-1 is completed.
  8. Quando o status indicar que a reatribuição de partição de cada partição foi concluída, monitore as métricas UserPartitionExists por cinco minutos para garantir que elas exibam 0 para os agentes dos quais você moveu as partições. Depois de confirmar essa questão, você pode prosseguir para remover o agente do cluster.

Remover um agente com o Console de Gerenciamento da AWS

Para remover agentes com o Console de Gerenciamento da AWS
  1. Abra o console do Amazon MSK em https://console.aws.amazon.com/msk/.

  2. Escolha o cluster do MSK que contém os agentes que deseja remover.

  3. Na página de detalhes do cluster, escolha o botão Ações e selecione a opção Editar número de agentes.

  4. Insira o número de agentes que você deseja que o cluster tenha por zona de disponibilidade. O console resume o número de agentes nas zonas de disponibilidade que serão removidos. Certifique-se de que é isso que você deseja.

  5. Escolha Salvar alterações.

Para evitar a remoção acidental de um agente, o console solicita que você confirme que deseja excluir agentes.

Remover um agente com a AWS CLI

Execute o comando a seguir, substituindo ClusterArn pelo nome do recurso da Amazon (ARN) que você obteve quando criou o cluster. Se você não tiver o ARN do cluster, poderá encontrá-lo listando todos os clusters. Para obter mais informações, verifique Lista de clusters do Amazon MSK. Substitua Current-Cluster-Version pela versão atual do cluster.

Importante

As versões de cluster não são inteiros simples. Para encontrar a versão atual do cluster, use a operação DescribeCluster ou o comando describe-cluster da AWS CLI. Uma versão de exemplo é KTVPDKIKX0DER.

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 para Target-Number-of-Brokers deve ser um número inteiro menor do que o número atual de agentes no 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.

{ "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": "DECREASE_BROKER_COUNT", "SourceClusterInfo": { "NumberOfBrokerNodes": 12 }, "TargetClusterInfo": { "NumberOfBrokerNodes": 9 } } }

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

Remover um agente com a API da AWS

Para remover agentes em um cluster usando a API, consulte UpdateBrokerCount na Referência de APIs do Amazon Managed Streaming for Apache Kafka.