Athrun Data Intelligence


Transmisión administrada de Amazon para Apache Kafka (MSK) Connect es un servicio totalmente administrado, escalable y mucho apto que permite la transmisión de datos entre Apache Kafka y otros sistemas de datos. Amazon MSK Connect está construido sobre Kafka Connectun ámbito de código campechano que proporciona una forma habitual de conectar kafka con sistemas de datos externos. Kafka Connect admite una variedad de conectores, que se utilizan para transmitir datos internamente y fuera de Kafka. MSK Connect extiende las capacidades de Kafka Connect al proporcionar un servicio administrado con características de seguridad adicionales, configuración directa y capacidades de escalera cibernética, lo que permite a las empresas centrarse en sus deposición de transmisión de datos sin la sobrecarga de la administración de la infraestructura subyacente.

En algunos casos de uso, es posible que deba usar un clúster MSK en una cuenta de AWS, pero MSK Connect se encuentra en una cuenta separada. En esta publicación, demostramos cómo crear un conector para obtener este caso de uso. Al momento de escribir este artículo, los conectores MSK Connect solo se pueden crear para clústeres de MSK que tienen la administración de identidad y comunicación de AWS (SOY) Autenticación basada en roles o sin autenticación. Demostramos cómo implementar la autenticación IAM posteriormente de establecer la conectividad de la red. IAM proporciona medidas de seguridad mejoradas, asegurándose de que sus sistemas estén protegidos contra el comunicación no calificado.

Descripción militar de la decisión

El conector se puede configurar para una variedad de propósitos, como hundir datos a un Servicio de almacenamiento simple de Amazon (Amazon S3) Bucket, rastrear los cambios de la saco de datos de origen o servir como una utensilio de migración como Mirrormaker2 en MSK Connect Para transferir datos de un clúster de origen a un clúster de destino, esto se encuentra en una cuenta diferente.

El futuro diagrama ilustra un caso de uso utilizando conectores fuente de Debezium y Amazon S3.

El futuro diagrama ilustra el uso del sumidero S3 y la migración a un clúster de conmutación por error de cuenta cruzada utilizando un conector espejo implementado en MSK Connect.

Actualmente, los conectores MSK Connect solo se pueden crear para grupos de MSK que tienen autenticación basada en roles de IAM o ninguna autenticación. En este blog, lo guiaré a través de los pasos esenciales para implementar la autenticación de IAM (identidad y administración de comunicación) recomendada por la industria posteriormente de establecer la conectividad de la red. IAM proporciona medidas de seguridad mejoradas, asegurando que sus sistemas estén protegidos contra el comunicación no calificado.

El divulgación de Conectividad privada multi-VPC (alimentado por AWS privateLink) y política de clúster El soporte para los clústeres de MSK simplifica la conectividad de los clientes de Kafka a los corredores. Al habilitar esta función en el clúster MSK, puede usar la política basada en clúster para ordenar todo el control de comunicación centralmente en un solo ocasión. En esta publicación, cubrimos el proceso de habilitar esta característica en el clúster MSK de origen.

No utilizamos completamente la conectividad multi-VPC proporcionada por esta nueva característica porque eso requiere que use diferentes URL de puesta en marcha con números de puerto (14001: 3) que MSK Connect no es compatible con la escritura de esta publicación. Exploramos una decisión segura de conectividad de red que utiliza patrones de conectividad privada, como se detalla en Cómo Goldman Sachs construye conectividad de cuenta cruzada a sus clústeres de Amazon MSK con AWS privateLink.

Conectarse a un clúster MSK de cuenta cruzada de MSK Connect implica los siguientes pasos.

Pasos para configurar el clúster MSK en la cuenta A:

  1. Habilite la función de conectividad privada de VPC (enlace privado) para el esquema de autenticación IAM que está recaudador para su clúster MSK.
  2. Configure la política de clúster para permitir un conector de cuenta cruzada.
  3. Implemente uno de los patrones de conectividad de red anteriores de acuerdo con su caso de uso para establecer la conectividad con la cuenta B VPC y realizar cambios de red en consecuencia.

Pasos para configurar el conector MSK en la cuenta B:

  1. Cree un conector MSK en subredes privados utilizando el Interfaz de radio de comandos de AWS (AWS CLI).
  2. Verifique la conectividad de red desde la cuenta A y realice cambios de red en consecuencia.
  3. Verifique el servicio de destino para corroborar los datos entrantes.

Requisitos previos

Para seguir con esta publicación, debe tener un clúster MSK en una cuenta de AWS y MSK Connect en una cuenta separada.

Configurar la configuración del clúster MSK en la cuenta A:

En esta publicación, solo mostramos los pasos importantes que se requieren para habilitar la función Multi-VPC en un clúster MSK:

  1. Cree un clúster MSK aprovisionado en la VPC de la cuenta A con las siguientes consideraciones, que se requieren para la función Multi-VPC:
    • La interpretación del clúster debe ser 2.7.1 o superior.
    • El tipo de instancia debe ser M5.Large o superior.
    • La autenticación debe ser IAM (no debe habilitar el comunicación no autenticado para este clúster).
  2. Luego de crear el clúster, vaya al Configuración de redes Sección de su clúster y elija Editar. Luego elija Activar la conectividad multi-VPC.

  1. Decantarse Autenticación basada en roles de IAM y designar Encender la selección.

Puede tomar más o menos de 30 minutos para habilitar. Se requiere este paso para habilitar la función de política de clúster que permite que el conector de contabilidad cruzada acceda al clúster MSK.

  1. Luego de que haya sido recaudador, desplácese alrededor de debajo a Configuración de seguridad y designar Editar política de clúster.
  2. Defina su política de clúster y elija Ahorrar cambios.

  1. La nueva política de clúster permite determinar un Primordial o Reformista Política de clúster. Con el Primordial opción, solo permite CreateVPCConnection, GetBootstrapBrokers, DescribeClustery DescribeClusterV2 Acciones que se requieren para crear la conectividad Cross-VPC a su clúster. Sin secuestro, tenemos que usar Reformista Para permitir más acciones requeridas por el conector MSK. La política debe ser la futuro:
    {
    
        "Version": "2012-10-17",
        "Statement": ({
            "Effect": "Allow",
            "Principal": {
                "AWS": "Connector-AccountId"
            },
            "Action": (
                "kafka:CreateVpcConnection",
                "kafka:GetBootstrapBrokers",
                "kafka:DescribeCluster",
                "kafka:DescribeClusterV2",
                "kafka-cluster:Connect",
                "kafka-cluster:DescribeCluster",
                "kafka-cluster:ReadData",
                "kafka-cluster:DescribeTopic",
                "kafka-cluster:WriteData",
                "kafka-cluster:CreateTopic",
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ),
    "Resource": (
                    "arn:aws:kafka:::cluster//",
                    "arn:aws:kafka:::topic///",
                    "arn:aws:kafka:::group///"
                )
        })
    }

Es posible que deba modificar los permisos anteriores para jalonar el comunicación a sus bienes (temas, grupos). Adicionalmente, puede restringir el comunicación a un conector específico dando el rol del conector IAM, o puede mencionar el número de cuenta para permitir que los conectores en esa cuenta.

Ahora el clúster está diligente. Sin secuestro, debe comprobar de la conectividad de red entre el conector de cuenta cruzada VPC y el clúster MSK VPC.

Si está utilizando VPC Peering o Transit Gateway mientras se conecta a MSK Connect desde la cuenta cruzada o la misma cuenta, no configure su conector para alcanzar los bienes de VPC en la ojeada con IPS en los siguientes rangos de CIDR (para más detalles, consulte. Conectación de conectores)

  • 10.99.0.0/16
  • 192.168.0.0/16
  • 172.21.0.0/16

En el peña de seguridad de clúster MSK, asegúrese de permitir el puerto 9098 de los bienes de la red de la cuenta B y realizar cambios en las subredes de acuerdo con su patrón de conectividad de red.

Configure el conector MSK en la cuenta B:

En esta sección, demostramos cómo usar el conector de sumidero S3. Sin secuestro, puede usar un conector diferente de acuerdo con su caso de uso y realizar los cambios en consecuencia.

  1. Cree un cubo S3 (o use un cubo existente).
  2. Asegúrese de que el VPC que está utilizando en esta cuenta tenga un peña de seguridad y subredes privados. Si su conector para MSK Connect necesita comunicación a Internet, consulte Habilitar el comunicación a Internet para Amazon MSK Connect.
  3. Verifique la conectividad de red entre la cuenta A y la cuenta B utilizando el comando Telnet para los puntos finales del corredor con el puerto 9098.
  4. Crear un Punto final S3 VPC.
  5. Crear un complemento de conector Según su proveedor de complementos de conector (confluente o antiparras). Tome una nota del nombre de petición de Amazon (ARN) personalizado para usar en un paso posterior.
  6. Cree un papel IAM para su conector para permitir el comunicación a su cubo S3 y al clúster MSK.
    • La relación de confianza del papel de IAM debería ser la futuro:
      {
          "Version": "2012-10-17",
          "Statement": (
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "kafkaconnect.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          )
      }

    • Agregue la futuro política de comunicación S3 a su rol de IAM:
      {
          "Version": "2012-10-17",
          "Statement": ({
              "Effect": "Allow",
              "Action": (
                  "s3:ListAllMyBuckets",
                  "s3:ListBucket",
                  "s3:GetBucketLocation",
                  "s3:DeleteObject",
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:AbortMultipartUpload",
                  "s3:ListMultipartUploadParts",
                  "s3:ListBucketMultipartUploads"
              ),
              "Resource": (
                              "arn:aws:s3:::",
                           "arn:aws:s3:::/*"
              ),
                 "Condition": {
              "StringEquals": {
                     "aws:SourceVpc": "vpc-xxxx"
                     }
                     }
          })
      }

    • La futuro política contiene las acciones requeridas por el conector:
      {
      "Version": "2012-10-17",
      "Statement": (
         {
              "Effect": "Allow",
              "Action": (
                  "kafka-cluster:Connect",
                  "kafka-cluster:DescribeCluster",
                  "kafka-cluster:ReadData",
                  "kafka-cluster:DescribeTopic",
                  "kafka-cluster:WriteData",
                  "kafka-cluster:CreateTopic",
                  "kafka-cluster:AlterGroup",
                  "kafka-cluster:DescribeGroup"
              ),
              "Resource": (
                  "arn:aws:kafka:::cluster//",
                  "arn:aws:kafka:::topic///",
                  "arn:aws:kafka:::group///"
              )
          }
      )
      }

Es posible que deba modificar los permisos anteriores para jalonar el comunicación a sus bienes (temas, grupos)

Finalmente, es hora de crear el conector MSK. Conveniente a que la consola de Amazon MSK no permite ver los clústeres de MSK en otras cuentas, le mostramos cómo usar la AWS CLI. Asimismo utilizamos la configuración básica de Amazon S3 para fines de prueba. Es posible que deba modificar la configuración de acuerdo con el caso de uso de su conector.

  1. Cree un conector utilizando la CLI de AWS con el futuro comando con los parámetros requeridos del conector, yuxtapuesto con los puntos finales de Broker MSK Cluster de la cuenta A:
    aws kafkaconnect create-connector 
    --capacity "autoScaling={maxWorkerCount=2,mcuCount=1,minWorkerCount=1,scaleInPolicy={cpuUtilizationPercentage=10},scaleOutPolicy={cpuUtilizationPercentage=80}}" 
    --connector-configuration 
    "connector.class=io.confluent.connect.s3.S3SinkConnector, 
    s3.region=, 
    schema.compatibility=NONE, 
    flush.size=2, 
    tasks.max=1, 
    topics=, 
    security.protocol=SASL_SSL, 
    s3.compression.type=gzip, 
    format.class=io.confluent.connect.s3.format.json.JsonFormat, 
    sasl.mechanism=AWS_MSK_IAM, 
    sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required, 
    sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler, 
    value.converter=org.apache.kafka.connect.storage.StringConverter, 
    storage.class=io.confluent.connect.s3.storage.S3Storage, 
    s3.bucket.name=, 
    timestamp.extractor=Record, 
    key.converter=org.apache.kafka.connect.storage.StringConverter" 
    --connector-name "Connector-name" 
    --kafka-cluster '{"apacheKafkaCluster": {"bootstrapServers": ":9098","vpc": {"securityGroups": ("sg-0b36a015789f859a3"),"subnets": ("subnet-07950da1ebb8be6d8","subnet-026a729668f3f9728")}}}' 
    --kafka-cluster-client-authentication "authenticationType=IAM" 
    --kafka-cluster-encryption-in-transit "encryptionType=TLS" 
    --kafka-connect-version "2.7.1" 
    --log-delivery workerLogDelivery='{cloudWatchLogs={enabled=true,logGroup=""}}' 
    --plugins "customPlugin={customPluginArn=,revision=1}" 
    --service-execution-role-arn ""

  2. Luego de crear el conector, conecte el productor a su tema e inserte datos en él. En el futuro código, utilizamos un cliente Kafka para insertar datos para fines de prueba:
    bin/kafka-console-producer.sh --broker-list  --producer.config client.properties --topic 

Si todo está configurado correctamente, debe ver los datos en su cubo S3 de destino. Si no, verifique los consejos de decisión de problemas en la futuro sección.

Consejos de resolución de problemas

Luego de implementar el conector, si está en el estado de creación en la página de detalles del conector, acceda a la Amazon CloudWatch Clase de registro especificado en su solicitud de creación de conector. Revise los registros de cualquier error. Si no se encuentran errores, espere a que el conector complete su proceso de creación.

Adicionalmente, asegúrese de que los roles IAM tengan sus permisos requeridos y verifique los grupos de seguridad y los NaCl para obtener la conectividad adecuada entre las VPC.

Hurtar

Cuando haya terminado de probar esta decisión, limpie los bienes no deseados para evitar cargos continuos

Conclusión

En esta publicación, demostramos cómo crear un conector MSK cuando necesita usar un clúster MSK en una cuenta AWS, pero MSK Connect se encuentra en una cuenta separada. Esta edificio incluye un conector de sumidero S3 para fines de demostración, pero puede acomodar otros tipos de fregadero y conectores de origen. Adicionalmente, esta edificio se centra nada más en los conectores autenticados IAM. Si se desea un conector no autenticado, se puede ignorar la conectividad de VPC múltiple (privateLink) y los componentes de la política de clúster. El proceso restante, que implica crear una conexión de red entre los VPC de la cuenta, sigue siendo el mismo.

Pruebe la decisión por sí mismo y háganos asimilar sus preguntas y comentarios en la sección de comentarios.

Mira más AWS Partners o comuníquese con un Representante de AWS Para formarse cómo podemos ayudar a acelerar su negocio.


Sobre el autor

Venkata Sai Mahesh Swargam es ingeniero de la aglomeración en AWS en Hyderabad. Se especializa en Amazon MSK y Amazon Kinesis Services. Mahesh se dedica a ayudar a los clientes al proporcionar orientación técnica y resolver problemas relacionados con sus arquitecturas de Amazon MSK. En su tiempo huido, le gusta estar con la grupo y alucinar por el mundo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *