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
Crie uma EC2 instância da Amazon na mesma Amazon VPC do cluster Amazon MSK.
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.
-
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. -
Descompacte o arquivo do Cruise Control e acesse a pasta descompactada.
-
Execute o comando a seguir para instalar o git.
sudo yum -y install git
-
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." -
Execute o seguinte comando para compilar o código-fonte.
./gradlew jar copyDependantLibs
Para configurar e executar o Cruise Control
-
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. -
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 entradaDISK
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 . -
Opcionalmente, você pode instalar a interface do usuário do Cruise Control. Para baixá-la, acesse Como configurar o frontend do Cruise Control
. -
Execute o comando a seguir para iniciar o Cruise Control. Considere usar uma ferramenta como
screen
outmux
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 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
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 com
kafka-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.