Use o LinkedIn Cruise Control para Apache Kafka com o Amazon MSK - Amazon Managed Streaming for Apache Kafka

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use o LinkedIn Cruise Control para Apache Kafka com o Amazon MSK

Você pode usar LinkedIn o Cruise Control para reequilibrar seu cluster Amazon MSK, detectar e corrigir anomalias e monitorar o estado e a integridade do cluster.

Para baixar e compilar o Cruise Control
  1. Crie uma EC2 instância da Amazon na mesma Amazon VPC do cluster Amazon MSK.

  2. Instale o Prometheus na instância da EC2 Amazon que você criou na etapa anterior. Anote o IP privado e a porta. O número padrão da porta é 9090. Para obter informações sobre como configurar o Prometheus de modo a agregar métricas de seu cluster, consulte Monitore um cluster provisionado pelo MSK com o Prometheus.

  3. Baixe o Cruise Control na EC2 instância da Amazon. (Como alternativa, você pode usar uma EC2 instância separada da Amazon para o Cruise Control, se preferir.) Para um cluster que tenha o Apache Kafka versão 2.4.*, use a versão 2.4.* mais recente do Cruise Control. Se seu cluster tiver uma versão do Apache Kafka anterior à 2.4.*, use a versão mais recente do 2.0.* Cruise Control.

  4. Descompacte o arquivo do Cruise Control e acesse a pasta descompactada.

  5. Execute o comando a seguir para instalar o git.

    sudo yum -y install git
  6. Execute o comando a seguir para inicializar o repositório local. Your-Cruise-Control-FolderSubstitua pelo nome da sua pasta atual (a pasta que você obteve ao descompactar o download do Cruise 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 compilar o código-fonte.

    ./gradlew jar copyDependantLibs
Para configurar e executar o Cruise Control
  1. Faça as seguintes atualizações no arquivo config/cruisecontrol.properties. Substitua os servidores de bootstrap de exemplo e a string bootstrap-agentes pelos valores do seu cluster. Para obter essas strings para seu cluster, você pode ver os detalhes do cluster no console. Como alternativa, você pode usar as operações GetBootstrapBrokerse da DescribeClusterAPI ou seus equivalentes de CLI.

    # If using TLS encryption, use 9094; use 9092 if using plaintext bootstrap.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 # SSL properties, needed if cluster is using TLS encryption security.protocol=SSL ssl.truststore.location=/home/ec2-user/kafka.client.truststore.jks # Use the Prometheus Metric Sampler metric.sampler.class=com.linkedin.kafka.cruisecontrol.monitor.sampling.prometheus.PrometheusMetricSampler # Prometheus Metric Sampler specific configuration prometheus.server.endpoint=1.2.3.4:9090 # Replace with your Prometheus IP and port # Change the capacity config file and specify its path; details below capacity.config.file=config/capacityCores.json

    Para corretores expressos, recomendamos que você não use o DiskCapacityGoal em nenhuma das metas definidas nas configurações do seu analisador.

  2. Edite o arquivo config/capacityCores.json para especificar o tamanho correto do disco, os núcleos da CPU e os limites de entrada/saída da rede. Para corretores Express, a entrada DISK de capacidade só é necessária para configurar o Cruise Control. Como o MSK gerencia todo o armazenamento dos corretores Express, você deve definir esse valor para um número extremamente alto, como. Integer.MAX_VALUE (2147483647) Para corretores padrão, você pode usar a operação de DescribeClusterAPI (ou a CLI describe-cluster) para obter o tamanho do disco. Para núcleos de CPU e limites de entrada/saída de rede, consulte Tipos de EC2 instância da Amazon.

    Standard broker config/capacityCores.json
    { "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." } ] }
    Express broker config/capacityCores.json
    { "brokerCapacities":[ { "brokerId": "-1", "capacity": { "DISK": "2147483647", "CPU": {"num.cores": "16"}, "NW_IN": "1073741824", "NW_OUT": "1073741824" }, "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á-la, acesse Como configurar o frontend do Cruise Control.

  4. Execute o comando a seguir para iniciar o Cruise Control. Considere usar uma ferramenta como screen ou tmux para manter uma sessão de longa duração aberta.

    <path-to-your-CRUISE-CONTROL-installation>/bin/kafka-cruise-control-start.sh config/cruisecontrol.properties 9091
  5. Use o Cruise Control APIs ou a interface do usuário para garantir que o Cruise Control tenha os dados de carga do cluster e que esteja fazendo sugestões de rebalanceamento. A obtenção de uma janela de métricas válida pode levar alguns minutos.

    Importante

    Somente as versões 2.5.60 e superiores do Cruise Control são compatíveis com corretores Express, pois os corretores Express não expõem endpoints do Zookeeper.

Usar o modelo de implantação automatizada do Cruise Control para Amazon MSK

Você também pode usar esse CloudFormation modelo para implantar facilmente o Cruise Control e o Prometheus para obter informações mais detalhadas sobre o desempenho do seu cluster Amazon MSK e otimizar a utilização de recursos.

Principais recursos:
  • Provisionamento automatizado de uma EC2 instância da Amazon com Cruise Control e Prometheus pré-configurados.

  • Compatibilidade com o cluster provisionado do Amazon MSK.

  • Autenticação PlainText flexível com IAM.

  • Nenhuma dependência do Zookeeper para o Cruise Control.

  • Personalize facilmente os destinos do Prometheus, as configurações de capacidade do Cruise Control e outras configurações fornecendo seus próprios arquivos de configuração armazenados em um bucket do Amazon S3.

Diretriz de rebalanceamento de partições

Diretrizes para reatribuição de partições de Kafka

A reatribuição de partições no Kafka pode consumir muitos recursos, pois envolve a transferência de dados significativos entre corretores, o que pode causar congestionamento da rede e afetar as operações do cliente. As práticas recomendadas a seguir ajudam você a gerenciar a reatribuição de partições de forma eficaz, ajustando as taxas de aceleração, aproveitando os controles de simultaneidade e entendendo os tipos de reatribuição para minimizar a interrupção das operações do cluster.

Gerenciando a concorrência no Cruise Control

O Cruise Control fornece parâmetros de ajuste automático para controlar a simultaneidade dos movimentos de partição e liderança. Os parâmetros a seguir ajudam a manter uma carga aceitável durante as reatribuições:

  • Movimentos máximos de partições simultâneas: num.concurrent.partition.movements.per.broker defina o limite máximo de movimentos de partição simultâneos entre agentes, evitando a utilização excessiva da rede.

    exemplo Exemplo
    num.concurrent.partition.movements.per.broker = 5

    Essa configuração limita cada corretor a mover no máximo 10 partições a qualquer momento, equilibrando a carga entre os corretores.

Use a limitação para controlar a largura de banda

  • Parâmetro Throttle: Ao realizar a reatribuição de partições comkafka-reassign-partitions.sh, use o --throttle parameter para definir uma taxa máxima de transferência (em bytes por segundo) para movimentação de dados entre corretores.

    exemplo Exemplo
    --throttle 5000000

    Isso define uma largura de banda máxima de 5 MB/s.

  • Equilibre as configurações do acelerador: Escolher uma taxa de aceleração apropriada é crucial:

    Se definido como muito baixo, a reatribuição pode levar muito mais tempo.

    Se definido como muito alto, os clientes podem experimentar aumentos de latência.

  • Comece com uma taxa de aceleração conservadora e ajuste com base no monitoramento do desempenho do cluster. Teste o acelerador escolhido antes de aplicá-lo em um ambiente de produção para encontrar o equilíbrio ideal.

Teste e valide em um ambiente de teste

Antes de implementar reatribuições na produção, realize testes de carga em um ambiente de preparação com configurações semelhantes. Isso permite que você ajuste os parâmetros e minimize os impactos inesperados na produção ao vivo.