Migración y expansión de Kafka

Visión de conjunto

Es fácil agregar un servidor a un clúster de Kafka, simplemente asígnele un ID de agente único y luego inicie Kafka en el nuevo servidor. Sin embargo, no se asignan particiones de datos automáticamente a estos nuevos servidores, por lo que, a menos que las particiones se muevan a ellos, no harán ningún trabajo hasta que se cree el nuevo tema. Por lo tanto, normalmente al agregar equipos al clúster, deberá migrar algunos datos existentes a estos equipos.

El proceso de migración de datos se inicia manualmente pero es completamente automático. Detrás de escena, Kafka agregará el nuevo servidor como seguidor de la partición a migrar y le permitirá replicar completamente los datos existentes en esa partición. Una vez que el nuevo servidor copia completamente el contenido de la partición y se une a la copia sincronizada, una de las copias existentes eliminará los datos de su partición.

La herramienta de reasignación de particiones se puede utilizar para mover particiones entre agentes. La asignación de partición ideal garantizará una carga de datos y un tamaño de partición uniformes entre todos los agentes. La herramienta de redistribución de particiones no tiene la capacidad de estudiar automáticamente la distribución de datos en el clúster de Kafka y mover las particiones para lograr una distribución uniforme de la carga. Por lo tanto, el administrador debe determinar qué temas o particiones deben moverse.

La herramienta de reasignación de particiones se puede ejecutar en 3 modos mutuamente excluyentes:

  • generar: en este modo, dada una lista de temas y una lista de agentes, la herramienta genera reasignaciones de candidatos para mover todas las particiones del tema especificado al nuevo agente. Dada una lista de temas y agentes de destino, esta opción solo proporciona una forma conveniente de generar un plan de reasignación de partición.
  • ejecutar: En este modo, la herramienta iniciará la reasignación de particiones de acuerdo con el plan de reasignación proporcionado por el usuario. (Utilice la opción --reassignment-json-file). Este puede ser un plan de redistribución personalizado hecho a mano por el administrador, o puede proporcionarse mediante la opción --generate
  • Verificar: En este modo, la herramienta verificará el estado de reasignación de todas las particiones enumeradas durante la última ejecución. El estado se puede completar con éxito, fallar o en progreso

Migración de particiones:

Crea un tema con tres particiones y dos réplicas

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 3 --topic topic_test

Ver tema

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic topic_test

Inserte la descripción de la imagen aquí

Escribir archivos de migración

vi topics-to-move.json

topics-to-move.json:

{
    
    "topics": [{
    
    "topic": "topic_test"}], "version":1}

Una vez que el archivo json esté listo, use la herramienta de reasignación de particiones para generar asignaciones candidatas

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --topics-to-move-json-file topics-to-move.json --broker-list "1,2" --generate

Inserte la descripción de la imagen aquí

Current partition replica assignment
{
    
    "version":1,"partitions":[{
    
    "topic":"topic_test","partition":2,"replicas":[2,0],"log_dirs":["any","any"]},{
    
    "topic":"topic_test","partition":1,"replicas":[1,2],"log_dirs":["any","any"]},{
    
    "topic":"topic_test","partition":0,"replicas":[0,1],"log_dirs":["any","any"]}]}

Proposed partition reassignment configuration
{
    
    "version":1,"partitions":[{
    
    "topic":"topic_test","partition":0,"replicas":[2,1],"log_dirs":["any","any"]},{
    
    "topic":"topic_test","partition":2,"replicas":[2,1],"log_dirs":["any","any"]},{
    
    "topic":"topic_test","partition":1,"replicas":[1,2],"log_dirs":["any","any"]}]}

La herramienta genera una asignación de candidato y mueve todas las particiones del tema topic_test al agente 1,2. Pero tenga en cuenta que el movimiento de partición aún no ha comenzado en este momento, solo le indica la asignación actual y la nueva asignación propuesta. La asignación actual debe guardarse en caso de que desee revertirla. La nueva asignación debe guardarse en
un archivo json (por ejemplo, expand-cluster-reassignment.json) para ingresar a la herramienta usando la opción --execute para
guardar la asignación actual

vi old-expand-cluster-reassignment.json

old-expand-cluster-reassignment.json:

{
    
    "version":1,"partitions":[{
    
    "topic":"topic_test","partition":2,"replicas":[2,0],"log_dirs":["any","any"]},{
    
    "topic":"topic_test","partition":1,"replicas":[1,2],"log_dirs":["any","any"]},{
    
    "topic":"topic_test","partition":0,"replicas":[0,1],"log_dirs":["any","any"]}]}
vi expand-cluster-reassignment.json

expand-cluster-reassignment.json:

{
    
    "version":1,"partitions":[{
    
    "topic":"topic_test","partition":0,"replicas":[2,1],"log_dirs":["any","any"]},{
    
    "topic":"topic_test","partition":2,"replicas":[2,1],"log_dirs":["any","any"]},{
    
    "topic":"topic_test","partition":1,"replicas":[1,2],"log_dirs":["any","any"]}]}

Realizar migración

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json --execute

Vea los resultados de la migración,
Inserte la descripción de la imagen aquí
puede ver que la partición se ha migrado correctamente,
también puede ver los resultados a través de comandos

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json --verify 

Inserte la descripción de la imagen aquí

Copiar migración

Primero necesitamos restaurar la partición original

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file old-expand-cluster-reassignment.json --execute

Inserte la descripción de la imagen aquí
Luego migre la copia 2 a la partición 0 y
escriba el archivo de migración

vi increase-replication-factor.json

aumentar-factor-de-replicación.json:

{
    
    "version":1,"partitions":[{
    
    "topic":"topic_test","partition":0,"replicas":[0,1,2]}]}

Realizar migración

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file increase-replication-factor.json --execute

Inserte la descripción de la imagen aquí
Puede ver que la copia 2 se ha migrado correctamente a la partición 1.


Supongo que te gusta

Origin blog.csdn.net/weixin_42494845/article/details/108882042
Recomendado
Clasificación