我目前正在尝试在kafka-connect集群上启动Elasticsearch Sink连接器(分布式模式) 使用由融合进行的调整提供的头盔图表将这个集群部署在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.
的配置即可解决此问题。
但是,我仍然感到惊讶的是,没有日志可以指向这一点。
答案 0 :(得分:1)
我们在尝试使用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"