Un clúster de Connect proporciona un entorno para los conectores que ayuda a mover datos de las implementaciones de Kafka existentes a un clúster de Google Cloud Managed Service para Apache Kafka o mover datos de un clúster de Managed Service para Apache Kafka a otro servicio de Google Cloud o a otro clúster de Kafka. El clúster de Kafka secundario puede ser otro clúster de Google Cloud Managed Service para Apache Kafka, uno autoadministrado o uno local.
Antes de comenzar
Asegúrate de haber creado un clúster de Managed Service para Apache Kafka. Necesitas el nombre del clúster de Managed Service para Apache Kafka al que se adjuntará el clúster de Connect.
Cada clúster de Connect está asociado con un clúster de Managed Service para Apache Kafka. Este clúster almacena el estado de los conectores que se ejecutan en el clúster de Connect.
Roles y permisos necesarios para crear un clúster de Connect
Para obtener los permisos que
necesitas para crear un clúster de Connect,
pídele a tu administrador que te otorgue el rol de IAM de
editor de clústeres de Kafka Connect administrado (roles/managedkafka.connectClusterEditor) en tu proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para crear un clúster de Connect. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear un clúster de Connect:
-
Otorga el permiso para crear un clúster de Connect en la ubicación especificada:
managedkafka.connectClusters.create
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Principales de ACL obligatorias
De forma predeterminada, los clústeres de Managed Service para Apache Kafka permiten que el clúster de Connect
acceda a los recursos si no se configuran ACL. Para ello, se debe configurar allow.everyone.if.no.acl.found como true, que es el parámetro de configuración predeterminado.
Sin embargo, si el clúster de Managed Service para Apache Kafka tiene ACL configuradas, el clúster de Connect no tiene automáticamente los permisos de lectura y escritura en los recursos. Debes otorgarlos de forma manual.
La cuenta de servicio del clúster de Connect que se usa como principal en las LCA
tiene el siguiente formato: User:service-{consumer project
number}@gcp-sa-managedkafka.iam.gserviceaccount.com.
Si configuraste ACL en tu clúster de Kafka, otorga al clúster de Connect permisos de lectura y escritura para los temas y permisos de lectura para los grupos de consumidores con los siguientes comandos:
/bin/kafka-acls.sh \
--bootstrap-server BOOTSTRAP_ADDR \
--command-config PATH_TO_CLIENT_PROPERTIES \
--add \
--allow-principal User:service-{consumer project number}@gcp-sa-managedkafka.iam.gserviceaccount.com \
--operation READ --operation WRITE --topic *
/bin/kafka-acls.sh \
--bootstrap-server BOOTSTRAP_ADDR \
--command-config PATH_TO_CLIENT_PROPERTIES \
--add \
--allow-principal User:service-{consumer project number}@gcp-sa-managedkafka.iam.gserviceaccount.com \
--operation READ --group *
Para obtener más información sobre estos comandos, consulta Configura las ACL de Apache Kafka para el control de acceso detallado.
Crea un clúster de Connect en otro proyecto
Managed Service para Apache Kafka usa un agente de servicio para acceder a los recursos de Google Cloud . El agente de servicio se asocia con el proyecto en el que creas el clúster.
Si creas un clúster de Connect en un proyecto diferente del clúster de Managed Service para Apache Kafka, el clúster de Connect y el clúster de Kafka usarán los agentes de servicio asociados con sus respectivos proyectos. En ese caso, el agente de servicio del clúster de Connect necesita permiso para acceder a los recursos de Google Cloud en el proyecto del clúster de Kafka.
Para otorgar los permisos necesarios, asigna el rol de
agente de servicio de Kafka administrado
al agente de servicio del clúster de Connect en el proyecto del clúster de Kafka. Por
ejemplo, si creas un clúster de Kafka en el proyecto kafka-project y un
clúster de Connect en el proyecto connect-project, otorga el rol de agente de servicio de Kafka administrado
en kafka-project al agente de servicio asociado con
connect-project.
La dirección de correo electrónico del agente de servicio tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com,
en el que PROJECT_NUMBER es el número del proyecto. Para obtener más
información sobre cómo otorgar el rol, consulta
Crea y otorga roles a los agentes de servicio.
Propiedades de un clúster de Connect
En esta sección, se describen las propiedades de un clúster de Connect.
Nombre del clúster de Connect
Es el nombre del clúster de Connect que estás creando. Si necesitas ayuda para asignarle un nombre a un clúster de Connect, consulta los Lineamientos para asignarles nombres a los recursos de Managed Service para Apache Kafka. Los nombres de clústeres son inmutables.
Clúster principal de Kafka
Es el clúster de Managed Service para Apache Kafka asociado con tu clúster de Connect. Este clúster asociado (clúster principal) almacena el estado de los conectores que se ejecutan en el clúster de Connect. Por lo general, el clúster principal de Managed Service para Apache Kafka también funciona como el destino de todos los conectores de origen y la entrada de todos los conectores receptores que se ejecutan en el clúster de Connect.
Un solo clúster de Managed Service para Apache Kafka puede tener varios clústeres de Connect. Si eliges un clúster de Managed Service para Apache Kafka en un proyecto diferente, asegúrate de que se configuren los permisos adecuados.
No puedes actualizar a un clúster de Kafka diferente después de crear el clúster de Connect.
Beneficios de la coubicación de regiones para la latencia y los costos de red
La ubicación conjunta de tus clústeres de Managed Service para Apache Kafka y Connect en
la misma región reduce la latencia y los costos de red. Por ejemplo, supongamos que tu
clúster de Managed Service para Apache Kafka está en region-a y usas un
conector receptor para escribir datos de este clúster de Managed Service para Apache Kafka (origen) en una tabla de BigQuery (receptor) que también está en
region-a. Si implementas tu clúster de Connect en region-a, esta opción de implementación
minimiza la latencia de la operación de escritura de BigQuery y
elimina los costos de transferencia de red entre regiones entre el
clúster de Managed Service para Apache Kafka y el clúster de Connect.
Consideraciones de latencia y costo de varios sistemas
Kafka Connect usa conectores para mover datos entre sistemas. Un lado del conector siempre interactúa con un clúster de Managed Service para Apache Kafka. Un solo clúster de Kafka Connect puede ejecutar varios conectores, cada uno de los cuales actúa como una fuente (extrae datos de un sistema) o un receptor (envía datos a un sistema).
Si bien un clúster de Connect en la misma región que el clúster de Managed Service para Apache Kafka se beneficia de una menor latencia de comunicación entre ellos, cada conector también interactúa con otro sistema, como una tabla de BigQuery o un clúster de Kafka diferente. Incluso si el clúster de Connect y el clúster de Managed Service para Apache Kafka se encuentran en la misma ubicación, ese otro sistema podría estar en una región diferente. Esto genera una mayor latencia y un costo más alto. La latencia general de la canalización depende de las ubicaciones de los tres sistemas: el clúster de Managed Service para Apache Kafka, el clúster de Connect y el sistema de origen o receptor.
Por ejemplo, si tu clúster de Managed Service para Apache Kafka está en
region-a, tu clúster de Connect en region-b y usas un
conector de Cloud Storage para un bucket en region-c, se te cobrarán dos
saltos de red (de region-a a region-b y, luego, de region-b a region-c, o
al revés, según la dirección del conector).
Considera cuidadosamente todas las regiones involucradas cuando planifiques la ubicación de tu clúster de Connect para optimizar la latencia y el costo.
Configuración de capacidad
La configuración de capacidad requiere que establezcas la cantidad de CPU virtuales y de memoria para cada CPU virtual de tu clúster de Connect. Puedes actualizar la capacidad de un clúster de Connect después de crearlo. Las siguientes son las propiedades de la configuración de capacidad:
CPU virtuales: Es la cantidad de CPU virtuales asignadas a un clúster de Connect. El valor mínimo es de 3 CPU virtuales.
Memoria: Es la cantidad de memoria que se asigna a cada CPU virtual. Debes aprovisionar entre 1 GiB y 8 GiB por CPU virtual. La cantidad de memoria se puede aumentar o disminuir dentro de estos límites después de crear el clúster.
Por ejemplo, si creas un clúster con 6 CPU virtuales, la memoria mínima que puedes asignar al clúster es de 6 GiB (1 GiB por CPU virtual) y el máximo es de 48 GiB (8 GiB por CPU virtual).
La CPU virtual y la memoria asignadas a cada trabajador en un clúster de Connect tienen un impacto significativo en el rendimiento, la capacidad y el costo del clúster. Aquí tienes un desglose de cómo la CPU virtual y la memoria afectan a un clúster de Connect.
Recuento de CPU virtuales
Kafka Connect divide el trabajo de un conector en tareas. Cada tarea puede procesar datos en paralelo. Más CPUs virtuales implican que se pueden ejecutar más tareas de forma simultánea, lo que genera una mayor capacidad de procesamiento.
Más CPU virtuales aumentan los costos de tu clúster de Connect.
Memoria
Kafka Connect usa la memoria para almacenar datos en búfer a medida que fluyen entre los conectores y Managed Service para Apache Kafka. Una memoria más grande permite búferes más grandes. Una memoria grande puede mejorar la capacidad de procesamiento, en especial para los flujos de datos de gran volumen. Los conectores que manejan mensajes o registros muy grandes requieren memoria suficiente para procesarlos sin encontrarse con excepciones
OutOfMemoryError.Más memoria aumenta el costo de tu clúster de Connect.
Si usas una lógica de transformación pesada, necesitas más asignación de memoria.
Tu objetivo es elegir la configuración de capacidad adecuada para tu clúster de Connect. Para ello, debes comprender la capacidad de procesamiento que puede controlar tu clúster de Connect.
Subred de trabajadores (principal)
La subred de trabajadores, también conocida como subred principal, conecta tu red de VPC al clúster de Connect. Esta subred permite que los trabajadores del clúster lleguen a los extremos de las fuentes y los receptores en la red del consumidor, como los clústeres de Managed Service para Apache Kafka o los clústeres de Kafka autohospedados.
Estos son algunos requisitos para configurar la subred de trabajadores:
La subred de trabajadores es obligatoria.
La subred debe estar ubicada en la misma región que el clúster de Connect.
La subred debe estar en la misma VPC superior que una de las subredes conectadas de la lista del clúster principal de Kafka.
El rango CIDR de la subred debe tener un tamaño mínimo de /22 (1,024 direcciones).
A los trabajadores del clúster se les asignan direcciones IP en la subred de trabajadores con una interfaz de Private Service Connect. Los trabajadores pueden llegar a cualquier destino de red al que se pueda acceder desde la red de VPC de la subred, con los siguientes requisitos:
- El extremo no debe estar en el rango CIDR
172.16.0.0/14. Este rango está reservado para el uso interno de Managed Service para Apache Kafka Connect. - Las reglas de firewall deben permitir el tráfico. Consulta Configura la seguridad para los adjuntos de red.
- Para el tráfico de Internet, debes configurar una Cloud NAT. Por ejemplo, se requiere una Cloud NAT para que un conector de MirrorMaker replique datos de un clúster de Kafka al que se puede acceder a través de Internet.
- Para acceder a los extremos de Private Service Connect que se encuentran en una VPC diferente de la VPC de la subred de trabajadores, debes asegurarte de usar una configuración de consumidor compatible (por ejemplo, NCC). Para obtener más información, consulta Información sobre el acceso a servicios publicados a través de extremos.
Dominios del DNS que se pueden resolver
Los dominios de DNS que se pueden resolver, también conocidos como nombres de dominio de DNS, permiten que las direcciones DNS de la red de VPC del consumidor estén disponibles para la VPC del usuario. Esto permite que el clúster de Connect resuelva los nombres de DNS en direcciones IP, lo que facilita la comunicación con otros servicios, incluidos otros clústeres de Kafka para los conectores de MirrorMaker.
En el caso de los dominios de DNS que se pueden resolver, puedes seleccionar un clúster de Managed Service para Apache Kafka. No es necesario que configures el nombre de dominio de DNS para el clúster principal de Managed Service para Apache Kafka, ya que su dirección de arranque se incluye automáticamente en la lista de dominios de DNS que se pueden resolver.
Sin embargo, también puedes especificar un dominio de DNS de forma manual, lo que es necesario si seleccionas un clúster de Kafka externo. El dominio DNS del clúster principal de Managed Service para Apache Kafka se incluye automáticamente. Otros clústeres de Kafka aún requieren configurar dominios de DNS.
Recursos de Secret Manager
Algunos conectores requieren datos sensibles, como contraseñas, como parte de su configuración. Para administrar este tipo de datos de forma segura, puedes almacenarlos en Secret Manager y otorgar al clúster de Connect acceso al Secret.
Para usar los secretos de Secret Manager con Kafka Connect, haz lo siguiente:
Otorga los siguientes roles de IAM a la cuenta de servicio administrada de Kafka. Estos roles permiten que tu clúster de Connect vea los secretos y acceda a sus cargas útiles.
- Visualizador de Secret Manager (
roles/secretmanager.viewer) - Descriptor de acceso de secretos de Secret Manager (
roles/secretmanager.secretAccessor)
- Visualizador de Secret Manager (
Crea un Secret que contenga los datos sensibles. Para obtener más información, consulta Crea un secreto.
Cuando crees o actualices tu clúster de Connect, especifica los secretos a los que tiene acceso. Puedes especificar hasta 32 secretos por clúster de Connect.
Los Secrets se activan como archivos en los trabajadores del clúster. Los conectores tienen acceso de solo lectura a estos archivos. Cuando creas un conector, las propiedades de configuración del conector pueden hacer referencia a los secretos.
Para hacer referencia a la ruta de acceso a un archivo de Secret, usa el siguiente formato:
/var/secrets/PROJECT_NAME-SECRET_NAME-SECRET_VERSION
Ejemplo:
ssl.truststore.location=/var/secrets/project1-truststore-1Para usar el valor de un Secret como un valor de configuración (por ejemplo, una contraseña), usa el siguiente formato:
${directory:/var/secrets:PROJECT_NAME-SECRET_NAME-SECRET_VERSION}Ejemplo:
password=${directory:/var/secrets:project1-database_password-3}
Reemplaza lo siguiente:
- PROJECT_NAME: Es el nombre del proyecto de Google Cloud .
- SECRET_NAME: Es el nombre del secreto.
- SECRET_VERSION: Es la versión del Secret.
Etiquetas
Las etiquetas son pares clave-valor que te ayudan con la organización y la identificación.
Te ayudan a organizar los clústeres de Connect. Puedes adjuntar una etiqueta a cada clúster de Connect
y, luego, filtrar los recursos según las etiquetas. Algunos ejemplos de etiquetas son
environment:prod y application:web-app.
Crea un clúster de Connect
Antes de crear un clúster, revisa la documentación sobre las propiedades del clúster de Connect.
La creación de un clúster de Connect tarda entre 20 y 30 minutos.
Console
En la consola de Google Cloud , ve a la página Conectar clústeres.
Haga clic en Crear.
En el campo Nombre del clúster de Connect, ingresa un nombre para el clúster de Connect. Para obtener más información, consulta Lineamientos para asignarles nombres a los recursos de Managed Service para Apache Kafka.
En la lista Clúster principal de Kafka, selecciona un clúster de Managed Service para Apache Kafka. Para obtener más información, consulta Clúster de Kafka principal.
En la lista Región, selecciona una ubicación para el clúster de Connect. Para obtener más información sobre cómo seleccionar una ubicación, consulta Clúster principal de Kafka.
En la sección Configuración de la capacidad, ingresa los valores para los siguientes campos o mantén los valores predeterminados.
En el campo vCPUs, ingresa la cantidad de CPU virtuales para el clúster.
En el campo Memoria, ingresa la cantidad de memoria por CPU, en GiB. El valor no puede superar los 8 GiB por CPU.
Para obtener más información, consulta Configuración de la capacidad.
En la sección Configuración de red, selecciona una red de VPC de la lista Red o deja el valor predeterminado. Esta lista se completa cuando seleccionas el clúster principal de Kafka.
En la sección Subred de trabajador, selecciona una subred de la lista Subred o deja el valor predeterminado. Para obtener más información, consulta Subred de trabajador. El campo Ruta de URI de la subred se completa automáticamente cuando seleccionas la subred.
Opcional: Agrega un dominio de DNS que se pueda resolver. El dominio del DNS del clúster principal de Kafka se agrega automáticamente como un dominio DNS que se puede resolver. Para especificar dominios de DNS adicionales, haz lo siguiente:
Expande la sección Dominios del DNS que se pueden resolver.
Haz clic en Agregar dominio de DNS.
Para agregar el dominio de DNS de un clúster existente de Managed Service para Apache Kafka, selecciona el clúster de la lista Clúster de Kafka. De lo contrario, ingresa el dominio de DNS en el campo Dominio de DNS.
Haz clic en Listo.
Opcional: Para agregar recursos de Secret Manager, haz lo siguiente:
Expande la sección Recursos de Secret Manager.
Haz clic en Agregar recurso de Secret.
En la lista Secreto, selecciona un secreto.
En la lista Versión del Secret, selecciona una versión del Secret.
Haz clic en Listo.
Opcional: Agrega etiquetas para organizar tu proyecto. Para agregar una etiqueta, haz lo siguiente:
Expande la sección Etiquetas.
Haz clic en Agregar etiqueta.
En el campo Clave, ingresa la clave de la etiqueta.
En el campo Valor, ingresa el valor de la etiqueta.
Haz clic en Crear.
gcloud
-
En la consola de Google Cloud , activa Cloud Shell.
En la parte inferior de la consola de Google Cloud , se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
Ejecuta el comando
gcloud managed-kafka connect-clusters create:gcloud managed-kafka connect-clusters create CONNECT_CLUSTER_ID \ --location=LOCATION \ --cpu=CPU \ --memory=MEMORY \ --primary-subnet=WORKER_SUBNET \ --kafka-cluster=KAFKA_CLUSTER \ [--project=PROJECT_ID] \ [--secret=SECRET] \ [--dns-name=DNS_DOMAIN_NAME] \ [--config-file=CONFIG_FILE] \ [--labels=LABELS] [--async]Reemplaza lo siguiente:
CONNECT_CLUSTER_ID: Es el ID o el nombre del clúster de Connect. Si necesitas ayuda para asignarle un nombre a un clúster de Connect, consulta los Lineamientos para asignarles nombres a los recursos de Managed Service para Apache Kafka. El nombre de un clúster de Connect es inmutable.
LOCATION: Es la ubicación en la que creas el clúster de Connect. Debe ser una región de Google Cloudcompatible. No puedes cambiar la ubicación de un clúster de Connect después de crearlo. Para ver la lista de ubicaciones disponibles, consulta las ubicaciones de Managed Service para Apache Kafka. Para obtener más información sobre las recomendaciones de ubicación, consulta Clúster de Kafka principal.
CPU: Es la cantidad de CPU virtuales para el clúster de Connect. El valor mínimo es 3 CPUs virtuales. Consulta Recuento de CPU virtuales.
MEMORY: Es la cantidad de memoria para el clúster de Connect. Usa las unidades "MB", "MiB", "GB", "GiB", "TB" o "TiB". Por ejemplo, "3GiB". Debes aprovisionar entre 1 GiB y 8 GiB por CPU virtual. Consulta Memoria.
WORKER_SUBNET: Es la subred de trabajador para el clúster de Connect.
El formato de la subred es
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_ID.La subred de trabajadores debe estar en la misma región que el clúster de Connect.
PROJECT_ID: Es el ID del proyecto de Google Cloud (opcional). Si no se proporciona, se usa el proyecto actual.
KAFKA_CLUSTER: Es el ID o el nombre completamente calificado del clúster principal de Managed Service para Apache Kafka asociado con el clúster de Connect. Consulta Clúster de Kafka. El formato del clúster de Kafka es
projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID.No puedes actualizar a un clúster de Kafka diferente después de crear el clúster de Connect.
SECRET: (Opcional) Son los secretos que se cargarán en los trabajadores. Se deben proporcionar las versiones exactas de los secretos de Secret Manager, ya que no se admiten alias. Se pueden cargar hasta 32 Secrets en un clúster. Formato:
projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION_IDDNS_DOMAIN_NAME: Son los nombres de dominio de DNS de la subred que se harán visibles para el clúster de Connect (opcional). El clúster de Connect puede acceder a los recursos con nombres de dominio en lugar de depender de direcciones IP. Consulta Intercambio de tráfico de DNS.
LABELS: Son las etiquetas que se asociarán con el clúster (opcional). Para obtener más información sobre el formato de las etiquetas, consulta Etiquetas. Es la lista de pares KEY=VALUE de etiquetas que se agregarán. Las claves deben comenzar con un carácter en minúscula y contener solo guiones (-), guiones bajos (_), caracteres en minúscula y números. Los valores deben contener solo guiones (-), guiones bajos (_), caracteres en minúscula y números.
CONFIG_FILE: (Opcional) Es la ruta de acceso al archivo JSON o YAML que contiene la configuración que se anula de los valores predeterminados del clúster o del conector. Este archivo también admite JSON o YAML intercalados.
--async: (Opcional) Devuelve de inmediato, sin esperar a que se complete la operación en curso. Con la marca--async, puedes continuar con otras tareas mientras se crea el clúster en segundo plano. Si no usas la marca, el sistema espera a que se complete la operación antes de devolver una respuesta. Debes esperar hasta que el clúster se actualice por completo antes de poder continuar con otras tareas.
Recibirás una respuesta similar a la siguiente:
Create request issued for: [sample-connectcluster] Check operation [projects/test-project/locations/us-east1/operations/operation-1753590328249-63ae19098cc06-64300a0a-06512d02] for status.Almacena el
OPERATION_IDpara hacer un seguimiento del progreso. Por ejemplo, el valor aquí esoperation-1753590328249-63ae19098cc06-64300a0a-06512d02.
Terraform
Puedes usar un recurso de Terraform para crear un clúster de Connect.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en Instala las bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Go de Managed Service para Apache Kafka.
Para autenticarte en Managed Service para Apache Kafka, configura las credenciales predeterminadas de la aplicación(ADC). Para obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en Instala las bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Managed Service para Apache Kafka.
Para autenticarte en Managed Service para Apache Kafka, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python que encontrarás en Instala las bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Managed Service para Apache Kafka.
Para autenticarte en Managed Service para Apache Kafka, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Supervisa la operación de creación del clúster
Puedes ejecutar el siguiente comando solo si ejecutaste gcloud CLI para crear el clúster de Connect.
Por lo general, crear un clúster de Connect tarda entre 20 y 30 minutos. Para hacer un seguimiento del progreso de la creación del clúster, el comando
gcloud managed-kafka connect-clusters createusa una operación de larga duración (LRO), que puedes supervisar con el siguiente comando:gcloud managed-kafka operations describe OPERATION_ID \ --location=LOCATIONReemplaza lo siguiente:
OPERATION_IDpor el valor del ID de la operación de la sección anterior.LOCATIONpor el valor de la ubicación de la sección anterior.