Ошибка SSL kafka-connect при использовании открытого текста

Я следую этому руководству: https://docs.confluent.io/4.0.0/installation/docker/docs/tutorials/connect-avro-jdbc.html

и поместите здесь свой код: https://github.com/lexsteens/kafka-connect-tutorial < / а>

У меня проблема при регистрации коннектора JDBC: он регистрируется, но при просмотре его статуса в http://localhost:28083/connector/quickstart-jdbc-source/status, я получаю статус FAILED и следующую трассировку стека:

org.apache.kafka.connect.errors.DataException: quickstart-jdbc-test
    at io.confluent.connect.avro.AvroConverter.fromConnectData(AvroConverter.java:77)
    at org.apache.kafka.connect.runtime.WorkerSourceTask.sendRecords(WorkerSourceTask.java:220)
    at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:187)
    at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:170)
    at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:214)
    at java.util.concurrent.Executors.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.kafka.common.errors.SerializationException: Error serializing Avro message
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710)
    at sun.security.ssl.InputRecord.read(InputRecord.java:527)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1283)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at io.confluent.kafka.schemaregistry.client.rest.RestService.sendHttpRequest(RestService.java:161)
    at io.confluent.kafka.schemaregistry.client.rest.RestService.httpRequest(RestService.java:218)
    at io.confluent.kafka.schemaregistry.client.rest.RestService.registerSchema(RestService.java:307)
    at io.confluent.kafka.schemaregistry.client.rest.RestService.registerSchema(RestService.java:299)
    at io.confluent.kafka.schemaregistry.client.rest.RestService.registerSchema(RestService.java:294)
    at io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient.registerAndGetId(CachedSchemaRegistryClient.java:61)
    at io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient.register(CachedSchemaRegistryClient.java:100)
    at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.serializeImpl(AbstractKafkaAvroSerializer.java:79)
    at io.confluent.connect.avro.AvroConverter.serialize(AvroConverter.java:110)
    at io.confluent.connect.avro.AvroConverter.fromConnectData(AvroConverter.java:75)
    at org.apache.kafka.connect.runtime.WorkerSourceTask.sendRecords(WorkerSourceTask.java:220)
    at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:187)
    at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:170)
    at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:214)
    at java.util.concurrent.Executors.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Однако я не запрашивал шифрование SSL (см. Мой docker-compose ...).

Я попытался найти эту проблему в Google или найти ее здесь, но безуспешно.


person laurent exsteens    schedule 17.08.2018    source источник


Ответы (1)


Для начала полностью удалите localhost из файла Compose. Я удивлен, что сервисы запустятся правильно. Просмотрите Сеть в Compose и узнайте, что установка свойства hostname не требуется, и вы можете связать службу используя только «название службы». Например, kafka будет подключаться к zookeeper:32181, а не к localhost, а ваш JSON-коннектор должен подключаться к mysql:3306 адресу, а не к localhost:3306 и т. Д.

Вы можете посмотреть мой файл для справки, который частично взят из Docker Compose от Confluent.

Пока я тестировал только S3 Connect, ваша проблема исходит от AvroConverter, который используется во всех этих проектах, и я могу убедиться, что он действительно работал для записи сообщений Avro на S3.

В частности, что касается ошибок, они связаны с реестром схемы, и ваша служба Connect имеет адрес HTTPS, но не похоже, что вы настроили SSL для этого контейнера.

Кстати, я предлагаю попробовать хотя бы 4.1.2 изображений, а не 4.0.0, чтобы получить последние исправления. в противном случае последний в настоящее время 5.0.0

person OneCricketeer    schedule 18.08.2018
comment
Спасибо за Ваш ответ. На самом деле проблема заключалась в том, что я поместил https в URL-адреса схемы реестра. После исправления это сработало. К сожалению, я никогда не видел этого, даже прочитав себя 5x, я спросил другую пару глаз, и это сразу было замечено :) - person laurent exsteens; 21.08.2018