Modificare l'assegnazione delle partizioni in un cluster Managed Service per Apache Kafka

In Managed Service per Apache Kafka, puoi modificare i broker assegnati a una partizione di un argomento. La riassegnazione delle partizioni degli argomenti può aiutarti a bilanciare il carico su ogni broker o a isolare il carico su un broker con traffico elevato.

Panoramica

Quando crei un nuovo argomento in Managed Service per Apache Kafka, scegli il numero di partizioni e il fattore di replica.

Il fattore di replica è il numero di broker che archiviano una replica di ogni partizione nell'argomento. Uno di questi broker funge da leader, mentre gli altri sono follower. Il leader gestisce le richieste di scrittura per la partizione e i follower replicano i dati. Se il leader presenta errori, uno dei follower viene eletto leader.

Se il bilanciamento automatico è abilitato su un cluster, lo scale up del cluster potrebbe comportare la riassegnazione delle partizioni per mantenere approssimativamente lo stesso numero di partizioni per broker.

Potresti voler modificare l'assegnazione della partizione per i seguenti motivi:

  • Esegui lo scale up di un cluster con il bilanciamento del carico automatico disattivato e un broker appena aggiunto non gestisce alcun carico.

  • Una partizione riceve molto più traffico rispetto alle altre e vuoi isolare il carico spostando le altre partizioni su broker diversi.

Puoi riassegnare le partizioni utilizzando gli strumenti a riga di comando di Kafka, come descritto nella sezione successiva.

Modifica l'assegnazione delle partizioni

Per modificare i broker assegnati alle partizioni, segui questi passaggi.

  1. Installa gli strumenti a riga di comando di Kafka su una VM di Compute Engine. La VM deve essere in grado di raggiungere una subnet connessa al cluster. Per saperne di più, consulta Produci e consuma messaggi con gli strumenti a riga di comando di Kafka.

  2. Ottieni un elenco di broker nel cluster chiamando il comando kafka-configs.sh --describe.

    kafka-configs.sh --describe --entity-type brokers \
      --bootstrap-server=BOOTSTRAP_ADDRESS \
      --command-config client.properties
    

    Sostituisci BOOTSTRAP_ADDRESS con l'indirizzo di bootstrap del cluster. Il comando restituisce un elenco di ID broker e impostazioni dinamiche del broker.

    Output di esempio:

    Dynamic configs for broker 10 are:
    Dynamic configs for broker 11 are:
    Dynamic configs for broker 12 are:
    Default configs for brokers in the cluster are:
    

    In questo esempio, gli ID broker sono 10, 11 e 12. Non sono presenti impostazioni del broker dinamico.

  3. Crea un file JSON che elenchi gli argomenti da riassegnare a broker diversi. Formatta il file come nell'esempio seguente:

     {
       "topics": [
         { "topic": "topic-1" },
         { "topic": "topic-2" }
       ]
     }
    
  4. Chiama il comando kafka-reassign-partitions.sh con il flag --generate per ottenere la mappatura delle partizioni corrente e generare una riassegnazione delle partizioni candidata.

    kafka-reassign-partitions.sh --generate \
      --bootstrap-server=BOOTSTRAP_ADDRESS \
      --topics-to-move-json-file TOPICS_FILE \
      --broker-list BROKER_LIST \
      --command-config client.properties
    

    Sostituisci quanto segue:

    • TOPICS_FILE: il percorso del file JSON del passaggio precedente.
    • BROKER_LIST: un elenco separato da virgole di broker a cui devono essere riassegnate le partizioni dell'argomento. Esempio: 11,10.

    Output di esempio:

    Current partition replica assignment
    {"version":1,"partitions":[{"topic":"topic-1","partition":0,"replicas":[12,10],"log_dirs":["any","any"]}]}
    
    Proposed partition reassignment configuration
    {"version":1,"partitions":[{"topic":"topic-1","partition":0,"replicas":[11,10],"log_dirs":["any","any"]}]}
    

    In questo esempio, la partizione 0 di topic-1 è assegnata ai broker 12 e 10.

  5. Crea un file JSON che definisca una mappatura dei broker alle partizioni. Puoi iniziare con la riassegnazione proposta nel passaggio precedente, modificandola in base alle tue esigenze.

    Ad esempio, la seguente mappatura sposta la partizione 0 di topic-1 ai broker 11 e 10.

    {
      "version":1,
      "partitions":[
        {
          "topic":"topic-1",
          "partition":0,
          "replicas":[11,10]
        }
      ]
    }
    
  6. Assegna le partizioni chiamando il comando kafka-reassign-partitions.sh --execute.

    kafka-reassign-partitions.sh --execute \
      --reassignment-json-file PARTITION_MAP \
      --bootstrap-server=BOOTSTRAP_ADDRESS \
      --command-config client.properties
    

    Sostituisci PARTITION_MAP con il percorso del file JSON del passaggio precedente.

Passaggi successivi

Apache Kafka® è un marchio registrato di Apache Software Foundation o delle sue società affiliate negli Stati Uniti e/o in altri paesi.