Logotipo de Zephyrnet

Cree una canalización de transmisión sin servidor con Amazon MSK Serverless, Amazon MSK Connect y MongoDB Atlas

Fecha:

Esta publicación fue coescrita con Babu Srinivasan y Robert Walters de MongoDB.

Streaming administrado por Amazon para Apache Kafka (Amazon MSK) es un servicio Apache Kafka totalmente administrado y de alta disponibilidad. Amazon MSK facilita la ingesta y el procesamiento de datos de transmisión en tiempo real y utiliza esos datos fácilmente dentro del ecosistema de AWS. Con Amazon MSK sin servidor, puede aprovisionar y administrar automáticamente los recursos necesarios para proporcionar almacenamiento y capacidad de transmisión bajo demanda para sus aplicaciones.

Amazon MSK también admite la integración de fuentes de datos como MongoDB Atlas a través de Conexión de Amazon MSK. MSK Connect permite la integración sin servidor de los datos de MongoDB con Amazon MSK utilizando el Conector MongoDB para Apache Kafka.

MongoDB Atlas sin servidor proporciona servicios de base de datos que se escalan dinámicamente hacia arriba y hacia abajo con el tamaño y el rendimiento de los datos, y el costo se escala en consecuencia. Es más adecuado para aplicaciones con demandas variables que deben administrarse con una configuración mínima. Proporciona un alto rendimiento y confiabilidad con funciones automatizadas de actualización, cifrado, seguridad, métricas y respaldo integradas con la infraestructura MongoDB Atlas.

MSK Serverless es un tipo de clúster para Amazon MSK. Al igual que MongoDB Atlas Serverless, MSK Serverless aprovisiona y escala automáticamente los recursos informáticos y de almacenamiento. Ahora puede crear flujos de trabajo sin servidor de extremo a extremo. Puede crear una canalización de transmisión sin servidor con ingesta sin servidor usando MSK Serverless y almacenamiento sin servidor usando MongoDB Atlas. Además, MSK Connect ahora admite nombres de host DNS privados. Esto permite que las instancias de MSK sin servidor se conecten a clústeres de MongoDB sin servidor a través de Enlace privado de AWS, brindándole conectividad segura entre plataformas.

Si está interesado en usar un clúster sin servidor, consulte Integración de MongoDB con Amazon Managed Streaming para Apache Kafka (MSK).

Esta publicación demuestra cómo implementar una canalización de transmisión sin servidor con MSK Serverless, MSK Connect y MongoDB Atlas.

Resumen de la solución

El siguiente diagrama ilustra la arquitectura de nuestra solución.

Flujo de datos entre AWS MSK y MongoDB Atlas

El flujo de datos comienza con un Nube informática elástica de Amazon (Amazon EC2) instancia de cliente que escribe registros en un tema de MSK. A medida que llegan los datos, una instancia de MongoDB Connector para Apache Kafka escribe los datos en una colección en el clúster MongoDB Atlas Serverless. Para una conectividad segura entre las dos plataformas, se crea una conexión de AWS PrivateLink entre el clúster de MongoDB Atlas y la VPC que contiene la instancia de MSK.

Esta publicación lo guía a través de los siguientes pasos:

  1. Cree el clúster de MSK sin servidor.
  2. Cree el clúster sin servidor de MongoDB Atlas.
  3. Configure el complemento MSK.
  4. Cree el cliente EC2.
  5. Configurar un tema de MSK.
  6. Configure MongoDB Connector para Apache Kafka como sumidero.

Configurar el clúster de MSK sin servidor

Para crear un clúster MSK sin servidor, complete los siguientes pasos:

  1. En la consola de Amazon MSK, elija Clusters en el panel de navegación.
  2. Elige Crear clúster.
  3. Método de creación, seleccione Creación personalizada.
  4. Nombre del clúster, introduzca MongoDBMSKCluster.
  5. Tipo de clústerSeleccione Sin servidor.
  6. Elige Siguiente.Interfaz de usuario de creación de clúster de MSK sin servidor
  7. En Networking página, especifique su VPC, las zonas de disponibilidad y las subredes correspondientes.
  8. Tenga en cuenta las zonas de disponibilidad y las subredes para usarlas más adelante.Configuración de clúster que muestra VPC y subredes
  9. Elige Siguiente.
  10. Elige Crear clúster.

Cuando el clúster está disponible, su estado pasa a ser Active.

Clúster disponible para su uso

Cree el clúster sin servidor MongoDB Atlas

Para crear un clúster de MongoDB Atlas, siga las Primeros pasos con Atlas tutorial. Tenga en cuenta que para los fines de esta publicación, debe crear una instancia sin servidor.

Crear nuevo cuadro de diálogo de clúster

Después de crear el clúster, configure un punto de enlace privado de AWS con los siguientes pasos:

  1. En Seguridad menú, seleccione Acceso a la red.Ubicación de acceso a la red en el menú de seguridad
  2. En Punto final privado pestaña, elegir Instancia sin servidor.
    Acceso a la red de instancias sin servidor
  3. Elige Crear nuevo punto final.
  4. Instancia sin servidor, elija la instancia que acaba de crear.
  5. Elige Confirmar.Crear interfaz de usuario de punto final privado
  6. Proporcione la configuración de su punto de enlace de la VPC y elija Siguiente.Interfaz de usuario de configuración del punto de enlace de la VPC
  7. Al crear el recurso de AWS PrivateLink, asegúrese de especificar exactamente las mismas VPC y subredes que utilizó anteriormente al crear la configuración de red para la instancia de MSK sin servidor.
  8. Elige Siguiente.Interfaz de usuario de configuración de la subred del punto de enlace de la VPC
  9. Siga las instrucciones del Finalizar página, luego elija Confirmar después de crear su punto de enlace de la VPC.

En caso de éxito, el nuevo punto final privado aparecerá en la lista, como se muestra en la siguiente captura de pantalla.

Página de confirmación de acceso a la red

Configurar el complemento MSK

A continuación, creamos un complemento personalizado en Amazon MSK utilizando MongoDB Connector para Apache Kafka. El conector debe cargarse en un Servicio de almacenamiento simple de Amazon (Amazon S3) antes de poder crear el complemento. Para descargar MongoDB Connector para Apache Kafka, consulte Descargar un archivo JAR del conector.

  1. En la consola de Amazon MSK, elija Complementos personalizados en el panel de navegación.
  2. Elige Crear complemento personalizado.
  3. URI de S3, ingrese la ubicación S3 del conector descargado.
  4. Elige Crear complemento personalizado.

Detalles del complemento MSK

Configurar un cliente EC2

A continuación, configuremos una instancia EC2. Usamos esta instancia para crear el tema e insertar datos en el tema. Para obtener instrucciones, consulte la sección Configurar un cliente EC2 en el post Integración de MongoDB con Amazon Managed Streaming para Apache Kafka (MSK).

Crear un tema en el clúster de MSK

Para crear un tema de Kafka, primero debemos instalar la CLI de Kafka.

  1. En la instancia EC2 del cliente, primero instale Java:

sudo yum install java-1.8.0

  1. A continuación, ejecute el siguiente comando para descargar Apache Kafka:

wget https://archive.apache.org/dist/kafka/2.6.2/kafka_2.12-2.6.2.tgz

  1. Descomprima el archivo tar usando el siguiente comando:

tar -xzf kafka_2.12-2.6.2.tgz

La distribución de Kafka incluye una carpeta bin con herramientas que se pueden usar para administrar temas.

  1. Visite la kafka_2.12-2.6.2 y emita el siguiente comando para crear un tema de Kafka en el clúster de MSK sin servidor:

bin/kafka-topics.sh --create --topic sandbox_sync2 --bootstrap-server <BOOTSTRAP SERVER> --command-config=bin/client.properties --partitions 2

Puede copiar el punto final del servidor de arranque en el Ver información del cliente página para su clúster MSK sin servidor.

Página de conexión del servidor Bootstrap

Puede configurar la autenticación de IAM siguiendo estos Instrucciones.

Configurar el conector del fregadero

Ahora, configuremos un conector receptor para enviar los datos a la instancia sin servidor de MongoDB Atlas.

  1. En la consola de Amazon MSK, elija Conectores en el panel de navegación.
  2. Elige Crear conector.
  3. Seleccione el complemento que creó anteriormente.
  4. Elige Siguiente.Interfaz de usuario del conector receptor
  5. Seleccione la instancia de MSK sin servidor que creó anteriormente.
  6. Ingrese su configuración de conexión como el siguiente código:
connector.class=com.mongodb.kafka.connect.MongoSinkConnector
key.converter.schema.enable=false
value.converter.schema.enable=false
database=MongoDBMSKDemo
collection=Sink
tasks.max=1
topics=MongoDBMSKDemo.Source
connection.uri=(MongoDB Atlas Connection String Gos Here) value.converter=org.apache.kafka.connect.storage.StringConverter key.converter=org.apache.kafka.connect.storage.StringConverter

Asegúrese de que la conexión a la instancia de MongoDB Atlas Serverless sea a través de AWS PrivateLink. Para obtener más información, consulte Conexión segura de aplicaciones a un plano de datos de MongoDB Atlas con AWS PrivateLink.

  1. En Permisos de acceso sección, cree una Gestión de identidades y accesos de AWS (IAM) rol con el política de confianza requerida.
  2. Elige Siguiente.Configuración de roles de IAM
  3. Especificar Registros de Amazon CloudWatch como su opción de entrega de registros.
  4. Completa tu conector.

Cuando el estado del conector cambia a Activo, la canalización está lista.

Página de confirmación del conector

Insertar datos en el tema MSK

En su cliente EC2, inserte datos en el tema MSK usando el kafka-console-producer como sigue:

bin/kafka-console-producer.sh --topic sandbox_sync2 --bootstrap-server <BOOTSTRAP SERVER> --producer.config=bin/client.properties

Para verificar que los datos fluyan con éxito desde el tema de Kafka al clúster de MongoDB sin servidor, usamos la interfaz de usuario de MongoDB Atlas.

Interfaz de usuario de MongoDB Atlas Examinar colecciones

Si tiene algún problema, asegúrese de revisar los archivos de registro. En este ejemplo, usamos CloudWatch para leer los eventos que se generaron desde Amazon MSK y MongoDB Connector para Apache Kafka.

Interfaz de usuario de registros de CloudWatch

Limpiar

Para evitar incurrir en cargos futuros, limpie los recursos que creó. Primero, elimine el clúster MSK, el conector y la instancia EC2:

  1. En la consola de Amazon MSK, elija Clusters en el panel de navegación.
  2. Seleccione su clúster y en el Acciones menú, seleccione Borrar.
  3. Elige Conectores en el panel de navegación.
  4. Seleccione su conector y elija Borrar.
  5. Elige Complementos personalizados en el panel de navegación.
  6. Seleccione su complemento y elija Borrar.
  7. En la consola de Amazon EC2, elija Instancias en el panel de navegación.
  8. Elija la instancia que creó.
  9. Elige Estado de la instancia, A continuación, elija Terminar instancia.
  10. En VPC de Amazon consola, elige Endpoints en el panel de navegación.
  11. Seleccione el punto final que creó y en el Acciones menú, seleccione Eliminar puntos de enlace de la VPC.

Ahora puede eliminar el clúster de Atlas y AWS PrivateLink:

  1. Inicie sesión en la consola del clúster de Atlas.
  2. Navegue hasta el clúster sin servidor que desea eliminar.
  3. En el menú desplegable de opciones, elija Terminar.
  4. Navegue hasta la Acceso a la red .
  5. Elija el punto final privado.
  6. Seleccione la instancia sin servidor.
  7. En el menú desplegable de opciones, elija Terminar.Interfaz de usuario de terminación de punto final

Resumen

En esta publicación, le mostramos cómo crear una canalización de ingesta de streaming sin servidor utilizando MSK Serverless y MongoDB Atlas Serverless. Con MSK Serverless, puede aprovisionar y administrar automáticamente los recursos necesarios según sea necesario. Usamos un conector MongoDB implementado en MSK Connect para integrar sin problemas los dos servicios y usamos un cliente EC2 para enviar datos de muestra al tema MSK. MSK Connect ahora admite Nombres de host DNS privados, lo que le permite utilizar nombres de dominio privados entre los servicios. En esta publicación, el conector usó los servidores DNS predeterminados de la VPC para resolver el nombre de DNS privado específico de la zona de disponibilidad. Esta configuración de AWS PrivateLink permitió una conectividad segura y privada entre la instancia sin servidor de MSK y la instancia sin servidor de MongoDB Atlas.

Para continuar con su aprendizaje, consulte los siguientes recursos:


Acerca de los autores

Igor Alekseev es socio sénior de arquitectura de soluciones en AWS en el dominio de datos y análisis. En su función, Igor está trabajando con socios estratégicos ayudándolos a construir arquitecturas complejas optimizadas para AWS. Antes de unirse a AWS, como arquitecto de soluciones/datos, implementó muchos proyectos en el dominio de Big Data, incluidos varios lagos de datos en el ecosistema de Hadoop. Como ingeniero de datos, participó en la aplicación de AI/ML a la detección de fraudes y la automatización de oficinas.

kiran matty es gerente principal de productos de Amazon Web Services (AWS) y trabaja con el equipo Amazon Managed Streaming para Apache Kafka (Amazon MSK) con sede en Palo Alto, California. Le apasiona crear servicios analíticos y de transmisión de alto rendimiento que ayuden a las empresas a darse cuenta de sus casos de uso críticos.

 Babu Srinivasan es Arquitecto de Soluciones de Socio Senior en MongoDB. En su puesto actual, trabaja con AWS para crear integraciones técnicas y arquitecturas de referencia para las soluciones de AWS y MongoDB. Cuenta con más de dos décadas de experiencia en tecnologías de Base de Datos y Nube. Le apasiona brindar soluciones técnicas a los clientes que trabajan con múltiples integradores de sistemas globales (GSI) en múltiples geografías.

Robert Walters Actualmente es gerente senior de productos en MongoDB. Antes de MongoDB, Rob pasó 17 años en Microsoft trabajando en varios roles, incluida la gestión de programas en el equipo de SQL Server, consultoría y preventa técnica. Rob es coautor de tres patentes de tecnologías utilizadas en SQL Server y fue el autor principal de varios libros técnicos sobre SQL Server. Rob es actualmente un bloguero activo en MongoDB Blogs.

punto_img

Información más reciente

punto_img