Я пытаюсь настроить 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 отладить его. Поскольку это наша производственная среда, у меня есть только ограниченная возможность изменить конфигурацию сервера. Но из того, что я ничего не могу сказать в журналах, кажется, указывает, что что-то не так. Заранее спасибо