Kafka-connect, Bootstrap брокер отключен - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь настроить Kafka Connect с намерением запустить ElasticsearchSinkConnector. Kafka-setup, состоящая из 3-х брокеров, защищенных с помощью Kerberos, SSL и ACL. До сих пор я экспериментировал с запуском connect-framework и локального сервера эластичного сервера с использованием docker / docker -compose (Confluent docker -image 5.4 с Kafka 2.4) для подключения к удаленной установке 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-framework все вроде нормально работает, я вижу логи, в которых утверждается, что аутентификация kerberos прошла успешно и c. Проблема возникает, когда я пытаюсь запустить соединение с помощью 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-topi c, я получаю:

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)

повторяется в логе соединения для всех брокеров. Какова природа этой проблемы? Связь с брокерами, кажется, работает хорошо - задание соединения передается обратно в kafka, как и предполагалось, и когда перезапускается структура соединения, задание, похоже, возобновляется как задумано (хотя все еще неисправно). У кого-нибудь есть идея, что может быть причиной этого? или как я должен go отладить его. Поскольку это наша производственная среда, у меня есть только ограниченная возможность изменить конфигурацию сервера. Но из того, что я ничего не могу сказать в журналах, кажется, указывает, что что-то не так. Заранее спасибо

1 Ответ

1 голос
/ 06 апреля 2020

За документы , вам также необходимо настроить безопасность на потребителе / ​​производителе для коннектора (ов), на котором работает 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_ слишком

...