Produce y consume mensajes con las herramientas de línea de comandos de Kafka

Aprende a usar las herramientas de línea de comandos de Kafka para conectarte a un clúster de Managed Service para Apache Kafka, producir mensajes y consumirlos.

Antes de comenzar

Antes de comenzar este instructivo, crea un nuevo clúster de Managed Service para Apache Kafka. Si ya tienes un clúster, puedes omitir este paso.

Cómo crear un clúster

Console

  1. Ve a la página Managed Service para Apache Kafka > Clústeres.

    Ir a los clústeres

  2. Haz clic en Crear.
  3. En el cuadro Nombre del clúster, ingresa un nombre para el clúster.
  4. En la lista Región, selecciona una ubicación para el clúster.
  5. En Configuración de red, configura la subred en la que se puede acceder al clúster:
    1. En Proyecto, selecciona tu proyecto.
    2. En Red, selecciona la red de VPC.
    3. En Subred, selecciona la subred.
    4. Haz clic en Listo.
  6. Haz clic en Crear.

Después de hacer clic en Crear, el estado del clúster es Creating. Cuando el clúster esté listo, el estado será Active.

gcloud

Para crear un clúster de Kafka, ejecuta el managed-kafka clusters create comando.

gcloud managed-kafka clusters create KAFKA_CLUSTER \
--location=REGION \
--cpu=3 \
--memory=3GiB \
--subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
--async

Reemplaza lo siguiente:

  • KAFKA_CLUSTER: un nombre para el clúster de Kafka
  • REGION: la ubicación del clúster
  • PROJECT_ID: Es el ID del proyecto.
  • SUBNET_NAME: la subred en la que deseas crear el clúster, por ejemplo, default

Para obtener información sobre las ubicaciones admitidas, consulta Ubicaciones de Managed Service para Apache Kafka.

El comando se ejecuta de forma asíncrona y muestra un ID de operación:

Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.

Para hacer un seguimiento del progreso de la operación de creación, usa el gcloud managed-kafka operations describe comando:

gcloud managed-kafka operations describe OPERATION_ID \
  --location=REGION

Cuando el clúster esté listo, el resultado de este comando incluirá la entrada state: ACTIVE. Para obtener más información, consulta Supervisa la operación de creación del clúster.

Roles obligatorios

Para obtener los permisos que necesitas para crear y configurar una VM de cliente, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Crear una VM de cliente

Crea una instancia de máquina virtual (VM) de Linux en Compute Engine que pueda acceder al clúster de Kafka. Cuando configures la VM, establece las siguientes opciones:

  • Región. Crea la VM en la misma región que tu clúster de Kafka.

  • Subred. Crea la VM en la misma red de VPC que la subred que usaste en la configuración del clúster de Kafka. Para obtener más información, consulta Visualiza las subredes de un clúster.

  • Permisos de acceso. Asigna el https://www.googleapis.com/auth/cloud-platform permiso de acceso a la VM. Este permiso autoriza a la VM a enviar solicitudes a la API de Managed Kafka.

En los siguientes pasos, se muestra cómo establecer estas opciones.

Console

  1. En la Google Cloud consola, dirígete a la página Crear una instancia.

    Crea una instancia

  2. En el panel Configuración de la máquina, haz lo siguiente:

    1. En el campo Nombre, especifica un nombre para tu instancia. Para obtener más información, consulta Convención de asignación de nombres de recursos.

    2. En la lista Región, selecciona la misma región que tu clúster de Kafka.

    3. En la lista Zona, selecciona una zona.

  3. En el menú de navegación, haz clic en Herramientas de redes. En el panel Herramientas de redes que aparece, haz lo siguiente:

    1. Ve a la sección Interfaces de red.

    2. Para expandir la interfaz de red predeterminada, haz clic en la flecha.

    3. En el campo Red, elige la red de VPC.

    4. En la lista Subred, selecciona la subred.

    5. Haz clic en Listo.

  4. En el menú de navegación, haz clic en Seguridad. En el panel Seguridad que aparece, haz lo siguiente:

    1. En Permisos de acceso, selecciona Configurar acceso para cada API.

    2. En la lista de permisos de acceso, busca la lista desplegable Cloud Platform y selecciona Habilitada.

  5. Haz clic en Crear para crear la VM.

gcloud

Para crear la instancia de VM, usa el gcloud compute instances create comando.

gcloud compute instances create VM_NAME \
  --scopes=https://www.googleapis.com/auth/cloud-platform \
  --subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET \
  --zone=ZONE

Reemplaza lo siguiente:

  • VM_NAME: El nombre de la VM
  • PROJECT_ID: Es el ID del proyecto.
  • REGION: La región en la que creaste el clúster de Kafka , por ejemplo, us-central1
  • SUBNET: Una subred en la misma red de VPC que la subred que usaste en la configuración del clúster
  • ZONE: una zona en la región en la que creaste el clúster, por ejemplo, us-central1-c

Para obtener más información sobre cómo crear una VM, consulta Crea una instancia de VM en una subred específica.

Asigna roles de IAM

Otorga los siguientes roles de Identity and Access Management (IAM) a la cuenta de servicio predeterminada de Compute Engine:

  • Cliente de Kafka administrado (roles/managedkafka.client)
  • Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator)
  • Creador de tokens de OpenID para cuentas de servicio (roles/iam.serviceAccountOpenIdTokenCreator)

Console

  1. En la Google Cloud consola de, dirígete a la página IAM.

    Ir a IAM

  2. Busca la fila de la cuenta de servicio predeterminada de Compute Engine y haz clic en Editar principal.

  3. Haz clic en Agregar otra función y selecciona la función Cliente de Kafka administrado. Repite este paso para los roles Creador de tokens de cuenta de servicio y Creador de tokens de OpenID para cuentas de servicio.

  4. Haz clic en Guardar.

gcloud

Para otorgar roles de IAM, usa el gcloud projects add-iam-policy-binding comando.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role=roles/managedkafka.client

gcloud projects add-iam-policy-binding PROJECT_ID\
  --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role=roles/iam.serviceAccountTokenCreator

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role=roles/iam.serviceAccountOpenIdTokenCreator

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto.

  • PROJECT_NUMBER: Es el número de tu proyecto.

Para obtener el número de proyecto, ejecuta el gcloud projects describe comando:

gcloud projects describe PROJECT_ID

Para obtener más información, consulta Encuentra el nombre, el número y el ID del proyecto.

Conéctate a la VM

Usa SSH para conectarte a la instancia de VM.

Console

  1. Ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. En la lista de instancias de VM, busca el nombre de la VM y haz clic en SSH.

gcloud

Para conectarte a la VM, usa el gcloud compute ssh comando.

gcloud compute ssh VM_NAME \
  --project=PROJECT_ID \
  --zone=ZONE

Reemplaza lo siguiente:

  • VM_NAME: El nombre de la VM
  • PROJECT_ID: Es el ID del proyecto.
  • ZONE: La zona en la que creaste la VM

Es posible que se requiera configuración adicional para el uso de SSH por primera vez. Para obtener más información, consulta Acerca de las conexiones SSH.

Instala las herramientas de línea de comandos de Kafka

Desde tu sesión de SSH, ejecuta los siguientes comandos para instalar las herramientas de línea de comandos de Kafka.

  1. Instala Java, que es necesario para ejecutar las herramientas de línea de comandos de Kafka, y wget para ayudar a descargar dependencias. En los siguientes comandos, se supone que usas un entorno de Debian Linux.

    sudo apt-get install default-jre wget
    
  2. Instala las herramientas de línea de comandos de Kafka.

    wget -O kafka_2.13-3.7.2.tgz https://archive.apache.org/dist/kafka/3.7.2/kafka_2.13-3.7.2.tgz
    tar xfz kafka_2.13-3.7.2.tgz
    
  3. Configura las siguientes variables de entorno:

    export KAFKA_HOME=$(pwd)/kafka_2.13-3.7.2
    export PATH=$PATH:$KAFKA_HOME/bin
    export CLASSPATH=$CLASSPATH:$KAFKA_HOME/libs/release-and-dependencies/*:$KAFKA_HOME/libs/release-and-dependencies/dependency/*
    

Configura la autenticación

Desde tu sesión de SSH, sigue los siguientes pasos para configurar la biblioteca de autenticación de Managed Service para Apache Kafka.

  1. Descarga la biblioteca y, luego, instálala de forma local.

    wget https://github.com/googleapis/managedkafka/releases/download/v1.0.5/release-and-dependencies.zip
    sudo apt-get install unzip
    unzip -n -j release-and-dependencies.zip -d $KAFKA_HOME/libs/
    

    Este comando instala la biblioteca en el directorio lib del directorio de instalación de Kafka. Las herramientas de línea de comandos de Kafka buscan dependencias de Java en este directorio.

  2. Con un editor de texto, crea un archivo llamado client.properties y pega lo siguiente:

    security.protocol=SASL_SSL
    sasl.mechanism=OAUTHBEARER
    sasl.login.callback.handler.class=com.google.cloud.hosted.kafka.auth.GcpLoginCallbackHandler
    sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;
    

    Guarda el archivo. Este archivo configura un cliente de Kafka con los siguientes parámetros de configuración:

    • Usa SASL_SSL para la comunicación segura con el clúster de Kafka.

    • Usa tokens de portador de OAuth 2.0 para la autenticación.

    • Usa la clase proporcionada por la biblioteca GcpLoginCallbackHandler como el controlador de devolución de llamada de acceso para obtener tokens de OAuth 2.0.

Produce y consume mensajes

Desde tu sesión de SSH, ejecuta los siguientes comandos para producir y consumir mensajes de Kafka.

  1. Configura la dirección de bootstrap como una variable de entorno.

    export BOOTSTRAP=$(gcloud managed-kafka clusters describe CLUSTER_ID \
     --location=LOCATION \
     --project=PROJECT_ID\
     --format="value(bootstrapAddress)"
    )
    

    Reemplaza lo siguiente:

    • CLUSTER_ID: Es el nombre de tu clúster.
    • LOCATION: Es el lugar donde creaste el clúster.
    • PROJECT_ID: Es el ID del proyecto.

    Para obtener más información, consulta Obtén la dirección de bootstrap.

  2. Enumera los temas del clúster.

    kafka-topics.sh --list \
      --bootstrap-server $BOOTSTRAP \
      --command-config client.properties
    
  3. Escribe un mensaje en un tema.

    echo "hello world" | kafka-console-producer.sh \
      --topic KAFKA_TOPIC_NAME \
      --bootstrap-server $BOOTSTRAP \
      --producer.config client.properties
    

    Reemplaza KAFKA_TOPIC_NAME por el nombre del tema.

  4. Consume mensajes del tema.

    kafka-console-consumer.sh \
      --topic KAFKA_TOPIC_NAME \
      --from-beginning \
      --bootstrap-server $BOOTSTRAP \
      --consumer.config client.properties
    

    Para dejar de consumir mensajes, ingresa Ctrl+C.

  5. Ejecuta una prueba de rendimiento del productor.

    kafka-producer-perf-test.sh \
      --topic KAFKA_TOPIC_NAME \
      --num-records 1000000 --throughput 1000 --print-metrics --record-size 1024 \
      --producer-props bootstrap.servers=$BOOTSTRAP \
      --producer.config client.properties
    

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu Google Cloud cuenta de por los recursos que usaste en esta página.

Console

  1. Borra la instancia de VM.

    1. Ve a la página Instancias de VM.

      Ir a Instancias de VM

    2. Selecciona la VM y haz clic en Borrar.

  2. Borra el clúster de Kafka.

    1. Ve a la página Managed Service para Apache Kafka > Clústeres.

      Ir a los clústeres

    2. Selecciona el clúster de Kafka y haz clic en Borrar.

gcloud

  1. Para borrar la VM, usa el gcloud compute instances delete comando.

    gcloud compute instances delete VM_NAME --zone=ZONE
    
  2. Para borrar el clúster de Kafka, usa el gcloud managed-kafka clusters delete comando.

    gcloud managed-kafka clusters delete CLUSTER_ID \
      --location=REGION --async
    

¿Qué sigue?

Apache Kafka® es una marca registrada de The Apache Software Foundation o sus afiliados de Estados Unidos y otros países.