簡體   English   中英

無法使用 elasticsearch sink 連接器(kafka-connect)

[英]Unable to use elasticsearch sink connector (kafka-connect)

我目前正在嘗試在 kafka-connect 集群(分布式模式)上啟動一個 elasticsearch sink 連接器這個集群使用 confluent 提供的 helm charts 部署在 kubernetes 中,並在其中進行了一些調整。 這是相關部分:

對於 values.yaml

configurationOverrides:
  "plugin.path": "/usr/share/java,/usr/share/confluent-hub-components"
  "key.converter": "org.apache.kafka.connect.storage.StringConverter"
  "value.converter": "org.apache.kafka.connect.json.JsonConverter"
  "key.converter.schemas.enable": "false"
  "value.converter.schemas.enable": "false"
  "internal.key.converter": "org.apache.kafka.connect.json.JsonConverter"
  "internal.value.converter": "org.apache.kafka.connect.json.JsonConverter"
  "config.storage.replication.factor": "3"
  "offset.storage.replication.factor": "3"
  "status.storage.replication.factor": "3"
  "security.protocol": SASL_SSL
  "sasl.mechanism": SCRAM-SHA-256

對於 kube 集群部分:

releases:
  - name: kafka-connect
    tillerless: true
    tillerNamespace: qa3-search
    chart: ../charts/cp-kafka-connect
    namespace: qa3-search
    values:
      - replicaCount: 2
      - configurationOverrides:
          config.storage.topic: kafkaconnectKApp_connect-config_private_json
          offset.storage.topic: kafkaconnectKApp_connect-offsets_private_json
          status.storage.topic: kafkaconnectKApp_connect-statuses_private_json
          connect.producer.client_id: "connect-worker-producerID"
          groupId: "kafka-connect-group-ID"
          log4j.root.loglevel: "INFO"
          bootstrap_servers: "SASL_SSL://SOME_ACCESSIBLE_URL:9094"
          client.security.protocol: SASL_SSL
          client.sasl.mechanism: SCRAM-SHA-256
      - prometheus:
          jmx:
            enabled: false
      - ingress:
          enabled: true
          hosts:
            - host: kafka-connect.qa3.k8s.XXX.lan
              paths:
                - /
      - cp-schema-registry:
          url: "https://SOME_ACCESSIBLE_URL"

然后我正在加載 elasticsearch sink 連接器:

curl -X POST -H 'Content-Type: application/json' http://kafka-connect.qa3.k8s.XXX.lan/connectors -d '{
"name": "similarads3",
"config": {
"connector.class": "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
"consumer.interceptor.classes": "io.confluent.monitoring.clients.interceptor.MonitoringConsumerInterceptor",
"topics": "SOME_TOPIC_THAT_EXIST",
"topic.index.map": "SOME_TOPIC_THAT_EXIST:test_similar3",
"connection.url": "http://vqa38:9200",
"batch.size": 1,
"type.name": "similads",
"key.ignore": true,
"errors.log.enable": true,
"errors.log.include.messages": true,
"value.converter": "io.confluent.connect.avro.AvroConverter",
"value.converter.schema.registry.url": "SOME_ACCESSIBLE_URL",
"schema.ignore": true
}
}' -vvv

此外,我正在通過環境變量加載代理身份驗證的用戶和密碼,而且我很確定它與權限 ACL 相關...

令我煩惱的是,連接器啟動時沒有創建索引,並且 kafka-connect 的日志中沒有任何錯誤......它說一切都已經開始

Starting connectors and tasks using config offset 68

在 /connectors/similarads3/status 上運行 curl 時,一切都在運行,沒有錯誤。

所以似乎我忽略了一些東西,但我無法弄清楚缺少什么。 當我檢查消費者在這個特定主題上的滯后時,似乎從來沒有消費過的消息。

如果沒有足夠的信息,我可以提供更多。 有人有想法嗎?

編輯:我應該提到我試圖用一個不存在的主題配置它:日志中再次沒有錯誤。 (我不知道如何解釋這個)

編輯 2:這個問題已解決實際上我們發現了這個問題,看來我確實忽略了一些東西:為了讀取受 ACL 權限保護的主題,您必須為連接器和接收器使用者提供 SASL 配置。 所以只需復制以consumer.為前綴的配置consumer. 修復了這個問題。 但是我仍然很驚訝沒有日志可以指出這一點。

我們在嘗試使用 topic.index.map 屬性時遇到了問題。 即使你讓它工作了,文檔中也會有一條說明它已被棄用。

topic.index.map
This option is now deprecated. A future version may remove it completely. Please use single message transforms, such as RegexRouter, to map topic names to index names.

我會嘗試使用RegexRouter來完成此操作。

"transforms": "renameTopicToIndex",
"transforms.renameTopicToIndex.type": "org.apache.kafka.connect.transforms.RegexRouter"
"transforms.renameTopicToIndex.regex": ".*"
"transforms.renameTopicToIndex.replacement": "test_similar3"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM