【问题标题】:Using Confluent Schema Registry with MSK将 Confluent Schema Registry 与 MSK 一起使用
【发布时间】:2022-01-26 17:16:36
【问题描述】:

是否可以将 Confluent Schema Registry 与 AWS MSK 集成? 如果你以前做过这个,你能提供一些你遵循的指针/博客来实现它吗?

【问题讨论】:

    标签: apache-kafka confluent-schema-registry aws-msk


    【解决方案1】:

    这是可能的。我的设置使用 ec2 和 docker。

    1. 如果您使用基于 IAM 的身份验证,请下载 IAM 身份验证 jar
    mkdir -p /usr/share/java/aws
    wget -P /usr/share/java/aws https://github.com/aws/aws-msk-iam-auth/releases/download/v1.1.1/aws-msk-iam-auth-1.1.1-all.jar
    chmod -R 444 /usr/share/java/aws
    
    1. 使用 confluent 官方 docker 镜像进行架构注册
    ...
    
      schema-registry:
        image: confluentinc/cp-schema-registry:5.4.6-1-ubi8
        hostname: schema-registry
        container_name: schema-registry
        ports:
          - "8081:8081"
        volumes:
          - /usr/share/java/aws/aws-msk-iam-auth-1.1.1-all.jar:/usr/share/java/cp-base-new/aws-msk-iam-auth-1.1.1-all.jar
          - /usr/share/java/aws/aws-msk-iam-auth-1.1.1-all.jar:/usr/share/java/rest-utils/aws-msk-iam-auth-1.1.1-all.jar
        environment: # https://docs.confluent.io/platform/current/schema-registry/installation/config.html#schemaregistry-config
          SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081
          SCHEMA_REGISTRY_HOST_NAME: "${HOSTNAME}" # 
          SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: "${BOOTSTRAP_BROKERS_SASL_IAM}"
          SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: "SASL_SSL"
          SCHEMA_REGISTRY_KAFKASTORE_SASL_MECHANISM: "AWS_MSK_IAM"
          SCHEMA_REGISTRY_KAFKASTORE_SASL_JAAS_CONFIG: "software.amazon.msk.auth.iam.IAMLoginModule required awsDebugCreds=true;"
          SCHEMA_REGISTRY_KAFKASTORE_SASL_CLIENT_CALLBACK_HANDLER_CLASS: "software.amazon.msk.auth.iam.IAMClientCallbackHandler"
    
    ...
    
    • HOSTNAME 是您的 ec2 机器 DNS 名称或 IP,例如 ip-10-0-0-84.ec2.internal
    • BOOTSTRAP_BROKERS_SASL_IAM 以逗号分隔 host1:port,host2:port 网址。端口信息see this

    如果您使用的是 PLAINTEXT 或 SSL 身份验证,则最后 4 个环境变量会更改。而且你不必下载iam auth jar

    1. 使用这些属性配置源连接器或接收器连接器
    ...
    key.converter=org.apache.kafka.connect.json.JsonConverter
    key.converter.schemas.enable=false
    value.converter=io.confluent.connect.avro.AvroConverter
    value.converter.schemas.enable=true
    value.converter.schema.registry.url=http://ip-10-0-0-84.ec2.internal:8081
    value.converter.enhanced.avro.schema.support=true
    

    就是这样。
    请在您的 EC2 实例安全组中为 MSK 集群打开 8081 端口

    资源:


    我尝试过的替代选项是AWS Glue Schema registry 但是我们必须使用 KSQL,而 KSQL 没有 3rd 方模式注册表集成或自定义 SerDe Github issue

    【讨论】:

    • 这太好了,谢谢!我让它工作。我现在正在尝试启用在 EKS 上运行的 HA(多个 SR 实例)。你以前试过这个吗?
    • 没有。我今天自己配置了这个。无需配置多个 SR 实例。但也许在不久的将来我们需要这样做。完成后,请在此处发布一些博客或资源。我还需要一些有关 MSK 连接的帮助来配置接收器连接器。如果你能加入这个聊天室chat.stackoverflow.com/rooms/240550/aws-msk-config我们可以讨论更多
    【解决方案2】:

    这是可能的,并且与在常规 Kafka 安装中使用它没有什么不同。

    您将其引导服务器属性指向 MSK,然后将客户端应用程序指向它。

    【讨论】:

    • 谢谢,但我正在查看 Confluent Kafka 的 Schema Registry 服务。 MSK 本身就很好。当我尝试提供 'schema.registry.url' 属性时,我收到这样的警告:2021-12-27 15:18:10.886 WARN 65921 --- [nio-7869-exec-1] o.a.k.clients.producer.ProducerConfig : The configuration 'schema.registry.url' was supplied but isn't a known config. 所以KafkaProducer 无法理解架构注册表是什么,并且不会使用它来保存/注册架构.我想知道 Schema Registry 是否对 Confluent 安装有硬依赖。
    • 1) “Confluent Kafka”不是一回事。 MSK 和 Confluent.Kafka.IAdminClient.html 平台包含相同的 Apache Kafka 2)您需要使用特定的序列化程序才能使 schema.registry.url 属性工作;它不是“生产者配置”,而是序列化程序。那么,您使用的是哪一个?
    • 是的,我让它与 MSK 一起工作。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 2019-07-21
    • 2023-01-11
    • 1970-01-01
    • 2021-10-04
    • 2017-10-06
    • 2019-05-01
    • 2019-03-25
    相关资源
    最近更新 更多