【问题标题】:Cannot create local docker-compose file for Confluent Cloud Setup无法为 Confluent Cloud 设置创建本地 docker-compose 文件
【发布时间】:2021-10-09 01:53:01
【问题描述】:

我想使用 docker-compose 创建一个本地 kafka 设置,该设置非常接近地复制融合云中的安全 kafka 设置。

我在 Confluent Cloud 中的集群可以使用

c = Consumer(
    {
        "bootstrap.servers": "broker_url",
        "sasl.mechanism": "PLAIN",
        "security.protocol": "SASL_SSL",
        "sasl.username": "key",
        "sasl.password": "secret",
        "group.id": "consumer-name",
    }
)

但我无法在本地创建具有相同配置并且可以使用相同代码连接的 docker-compose.yml。

version: '3'
services:
    zookeeper:
        image: confluentinc/cp-zookeeper:6.2.0
        ports:
            - "2181:2181"
        environment:
            ZOOKEEPER_CLIENT_PORT: 2181

    kafka:
        image: confluentinc/cp-kafka:6.2.0
        depends_on:
            - zookeeper
        ports:
            - '9092:9092'
            - '19092:19092'
        expose:
            - '29092'
        environment:
            KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
            KAFKA_LISTENERS: INSIDE-DOCKER-NETWORK://0.0.0.0:29092,OTHER-DOCKER-NETWORK://0.0.0.0:19092,HOST://0.0.0.0:9092
            KAFKA_ADVERTISED_LISTENERS: INSIDE-DOCKER-NETWORK://kafka:29092,OTHER-DOCKER-NETWORK://host.docker.internal:19092,HOST://localhost:9092
            KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE-DOCKER-NETWORK:PLAINTEXT,OTHER-DOCKER-NETWORK:PLAINTEXT,HOST:PLAINTEXT
            KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE-DOCKER-NETWORK
            KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
            KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
            # Allow to swiftly purge the topics using retention.ms
            KAFKA_LOG_RETENTION_CHECK_INTERVAL_MS: 100
            # Security Stuff
            KAFKA_LISTENER_NAME_EXTERNAL_PLAIN_SASL_JAAS_CONFIG: |
                org.apache.kafka.common.security.plain.PlainLoginModule required \
                username="broker" \
                password="broker" \
                user_alice="alice-secret";
            KAFKA_SASL_ENABLED_MECHANISMS: PLAIN
            KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: SASL_SSL

这是我在本地 docker-compose 文件方面的内容,但它不起作用 这是我尝试使用相同代码连接时遇到的错误

%3|1628019607.757|FAIL|rdkafka#consumer-1| [thrd:sasl_ssl://localhost:9092/bootstrap]: sasl_ssl://localhost:9092/bootstrap: SSL handshake failed: Disconnected: connecting to a PLAINTEXT broker listener? (after 9ms in state SSL_HANDSHAKE)

【问题讨论】:

  • 你有没有找到解决方案。我遇到了同样的问题
  • @Haha 不完全是。使用 SASL_SSL 和其他东西的整个安全性在本地复制非常复杂,因为据我所知,您需要证书。我只是在没有安全性的情况下设置它并在我的应用程序中配置为 None 以进行本地测试

标签: python apache-kafka confluent-kafka-python


【解决方案1】:

这是您的提示:Disconnected: connecting to a PLAINTEXT broker listener?

KAFKA_LISTENER_SECURITY_PROTOCOL_MAP 只有PLAINTEXT 映射,因此没有您的客户端可以使用的 SASL_SSL 连接

看起来你确实配置了 SASL_SSL,你只有一个代理,所以KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL 并没有真正做任何事情


this demo repo,您可以找到使用所有可能的协议映射的代理

【讨论】:

  • 很抱歉我无法弄清楚。似乎有很多示例,但我尝试使用的任何相关示例都会出现该错误。
  • security tutorial is here 的要点是 1)您需要经纪人和客户的证书 2)您需要让 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP 包含带有 :SASL_SSL 的内容
猜你喜欢
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多