kafka连接,引导代理已断开连接

1cosmwyk  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(511)

我试图设置Kafka连接与运行一个弹性连接器的意图。
kafka设置,由3个使用kerberos、ssl和acl保护的代理组成。
到目前为止,我一直在尝试使用docker/docker compose(docker image 5.4与kafka 2.4合流)本地运行connect框架和elasticserch服务器,并将其连接到远程kafka安装(kafka 2.0.1—实际上是我们的生产环境)。

KAFKA_OPTS: -Djava.security.krb5.conf=/etc/kafka-connect/secrets/krb5.conf
      CONNECT_BOOTSTRAP_SERVERS: srv-kafka-1.XXX.com:9093,srv-kafka-2.XXX.com:9093,srv-kafka-3.XXX.com:9093
      CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect
      CONNECT_REST_PORT: 8083
      CONNECT_GROUP_ID: user-grp
      CONNECT_CONFIG_STORAGE_TOPIC: test.internal.connect.configs
      CONNECT_OFFSET_STORAGE_TOPIC: test.internal.connect.offsets
      CONNECT_STATUS_STORAGE_TOPIC: test.internal.connect.status
      CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_ZOOKEEPER_CONNECT: srv-kafka-1.XXX.com:2181,srv-kafka-2.XXX.com:2181,srv-kafka-3.XXX.com:2181
      CONNECT_SECURITY_PROTOCOL: SASL_SSL
      CONNECT_SASL_KERBEROS_SERVICE_NAME: "kafka"
      CONNECT_SASL_JAAS_CONFIG: com.sun.security.auth.module.Krb5LoginModule required \
                                useKeyTab=true \
                                storeKey=true \
                                keyTab="/etc/kafka-connect/secrets/kafka-connect.keytab" \
                                principal="<principal>;
      CONNECT_SASL_MECHANISM: GSSAPI
      CONNECT_SSL_TRUSTSTORE_LOCATION: <path_to_truststore.jks>
      CONNECT_SSL_TRUSTSTORE_PASSWORD: <PWD>

当启动connect框架时,一切似乎都正常工作,我可以看到一些日志,声称kerberos身份验证成功等等。
当我尝试使用curl开始连接作业时,问题就出现了。

curl -X POST -H "Content-Type: application/json" --data '{ "name": "kafka-connect", "config": { "connector.class": "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector", "tasks.max": 1, "topics": "test.output.outage", "key.ignore": true, "connection.url": "http://elasticsearch1:9200", "type.name": "kafka-connect" } }' http://localhost:8083/connectors

这项工作似乎开始时没有问题,但当它即将开始消费从Kafka主题我得到:

kafka-connect     | [2020-04-06 10:35:33,482] WARN [Consumer clientId=connector-consumer-user-grp-2-0, groupId=connect-user-2] Bootstrap broker srv-kafka-1.XXX.com:9093 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)

在所有代理的连接日志中重复。
这个问题的性质是什么?与代理的通信似乎工作得很好-connect作业按预期传回kafka,当connect框架重新启动时,作业似乎按预期恢复(即使仍然有故障)。
有人知道是什么原因导致的吗?或者我应该如何去调试它。
因为这是我们的生产环境,所以我更改服务器配置的可能性有限。但据我所知,日志中没有任何东西表明出了问题。
提前谢谢

k3fezbri

k3fezbri1#

根据文档,您还需要为kafka connect正在运行的连接器在使用者/生产者上配置安全性。您可以通过添加 consumer / producer 前缀。因此,由于您使用的是docker,并且错误表明您正在创建接收器连接器(即需要使用者),请将以下内容添加到配置中:

CONNECT_CONSUMER_SECURITY_PROTOCOL: SASL_SSL
  CONNECT_CONSUMER_SASL_KERBEROS_SERVICE_NAME: "kafka"
  CONNECT_CONSUMER_SASL_JAAS_CONFIG: com.sun.security.auth.module.Krb5LoginModule required \
                            useKeyTab=true \
                            storeKey=true \
                            keyTab="/etc/kafka-connect/secrets/kafka-connect.keytab" \
                            principal="<principal>;
  CONNECT_CONSUMER_SASL_MECHANISM: GSSAPI
  CONNECT_CONSUMER_SSL_TRUSTSTORE_LOCATION: <path_to_truststore.jks>
  CONNECT_CONSUMER_SSL_TRUSTSTORE_PASSWORD: <PWD>

如果还要创建一个源连接器,则需要复制上面的 PRODUCER_

相关问题