

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
<a name="cruise-control"></a>

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.

**nota**  
Se o [rebalanceamento inteligente](intelligent-rebalancing.md) estiver ativado para seus clusters baseados no Express recém-criados, você não poderá usar ferramentas de terceiros, como o Cruise Control, para rebalancear partições. Primeiro, você deve pausar o rebalanceamento inteligente para usar a API de reatribuição de partições fornecida por essas ferramentas de terceiros.

**Para baixar e compilar o Cruise Control**

1. Crie uma instância do Amazon EC2 na mesma Amazon VPC do cluster do Amazon MSK.

1. Instale o Prometheus na instância do Amazon EC2 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 do MSK Provisioned com o Prometheus](open-monitoring.md).

1. Faça o download do [Cruise Control](https://github.com/linkedin/cruise-control/releases) na instância do Amazon EC2. (Como alternativa, se preferir você pode usar uma instância separada do Amazon EC2 para o Cruise Control.) Para um cluster que tenha o Apache Kafka versão 2.4.\$1, use a versão 2.4.\$1 mais recente do Cruise Control. Se seu cluster tiver uma versão do Apache Kafka anterior à 2.4.\$1, use a versão mais recente do 2.0.\$1 Cruise Control.

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

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

   ```
   sudo yum -y install git
   ```

1. Execute o comando a seguir para inicializar o repositório local. *Your-Cruise-Control-Folder*Substitua 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."
   ```

1. 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 [GetBootstrapBrokers](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-bootstrap-brokers.html#GetBootstrapBrokers)e da [DescribeCluster](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)API 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 agentes Express, recomendamos que você não use `DiskCapacityGoal` em nenhuma das metas definidas nas suas [configurações do analisador](https://github.com/linkedin/cruise-control/wiki/Configurations#analyzer-configurations).

1. Edite o `config/capacityCores.json` arquivo para especificar o tamanho correto do disco, os núcleos de CPU e in/out os limites de rede. Para agentes Express, a entrada de capacidade `DISK` só é necessária para configurar o Cruise Control. Como o MSK gerencia todo o armazenamento dos agentes Express, você deve definir esse valor em um número extremamente alto, como `Integer.MAX_VALUE (2147483647)`. Para corretores padrão, você pode usar a operação de [DescribeCluster](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)API (ou a CLI [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html)) para obter o tamanho do disco. Para núcleos de CPU e in/out limites de rede, consulte Tipos de [instância do Amazon EC2](https://aws.amazon.com/ec2/instance-types/).

------
#### [ 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."
       }
     ]
   }
   ```

------

1. Opcionalmente, você pode instalar a interface do usuário do Cruise Control. Para baixá-la, acesse [Como configurar o frontend do Cruise Control](https://github.com/linkedin/cruise-control-ui/wiki/Single-Kafka-Cluster#setting-up-cruise-control-frontend).

1. 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
   ```

1. 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 agentes Express, que não expõem endpoints do Zookeeper.

## Usar o modelo de implantação automatizada do Cruise Control para Amazon MSK
<a name="cruise-control-cfn-template"></a>

Você também pode usar esse [CloudFormation modelo](https://github.com/aws-samples/cruise-control-for-msk) 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 atributos:**
+ Provisionamento automatizado de uma instância do Amazon EC2 com o Cruise Control e o Prometheus pré-configurados.
+ Compatibilidade com o cluster provisionado do Amazon MSK.
+ Autenticação [PlainText flexível com IAM](kafka_apis_iam.md).
+ 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ção
<a name="cruise-control-partition-rebalancing"></a>

### Diretrizes para reatribuição de partições de Kafka
<a name="cruise-control-partition-reassignment"></a>

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

**nota**  
Se você tiver um cluster baseado no Express recém-criado, use o [rebalanceamento inteligente](intelligent-rebalancing.md) para distribuição automática de partições à medida que aumenta ou diminui a escala dos clusters.

#### Gerenciar a simultaneidade no Cruise Control
<a name="cruise-control-managing-concurrency"></a>

O Cruise Control fornece parâmetros de ajuste automático para controlar a simultaneidade dos movimentos de partição e a liderança. Os parâmetros a seguir ajudam a manter uma carga aceitável durante as reatribuições:
+ **Máximo de movimentações simultâneas de partições**: defina `num.concurrent.partition.movements.per.broker` para limitar o máximo de movimentações simultâneas de partição entre agentes, evitando a utilização excessiva da rede.  
**Example Exemplo**  

  ```
  num.concurrent.partition.movements.per.broker = 5
  ```

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

#### Use o controle de utilização para monitorar a largura de banda
<a name="cruise-control-control-bandwidth"></a>
+ **Parâmetro de controle de utilização**: ao realizar a reatribuição de partições com `kafka-reassign-partitions.sh`, use `--throttle parameter` para definir uma taxa máxima de transferência (em bytes por segundo) para movimentação de dados entre agentes.  
**Example Exemplo**  

  ```
  --throttle 5000000
  ```

  Isso define uma largura de banda máxima de 5 MB/s.
+ **Configurações de controle de balanceamento**: escolher uma taxa de aceleração apropriada é crucial:

  Se estiver muito baixa, a reatribuição pode levar muito mais tempo.

  Se estiver muito alta, 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 preparação
<a name="cruise-control-partition-rebalancing-test"></a>

Antes de implementar reatribuições na produção, realize testes de carga em um ambiente de preparação com configurações semelhantes. Assim você pode ajustar os parâmetros e minimizar os impactos inesperados na produção real.