You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vertica使用COPY从SSL/TLS认证Kafka集群导入数据配置疑问

关于Vertica KafkaSource SSL证书配置的说明

CA根证书、SSL客户端证书/私钥这类SSL相关配置,两种设置方式都支持,既可以通过KafkaSource的kafka_conf参数直接传入,也可以通过会话变量设置,优先推荐使用kafka_conf参数传入的方式,灵活性更高。

方式1:通过kafka_conf参数直接传入(推荐)

直接将SSL相关配置项追加到你现有kafka_conf的取值里,多个配置项用分号分隔即可,需要注意所有配置对应的证书/密钥文件,必须在Vertica集群的所有节点上都存储在相同的路径下,且Vertica运行用户有读取权限。
示例修改后的COPY语句:

COPY TEST_TABLE
      SOURCE KafkaSource(
        stream='test-topic|0|0',
        brokers='kafka-lab.com:32090',
        stop_on_eof=true,
        group_id='test-topic',
        kafka_conf='sasl.username=test_user;sasl.password=test_password;sasl.mechanism=PLAIN;security.protocol=SASL_SSL;ssl.ca.location=/opt/vertica/config/kafka_ca.crt'
      )
PARSER KafkaJSONParser(flatten_arrays=True, flatten_maps=True) ABORT ON ERROR REJECTMAX 1;

如果你的Kafka集群要求双向SSL认证,还需要追加以下配置到kafka_conf中:

  • ssl.certificate.location:客户端证书文件路径
  • ssl.key.location:客户端私钥文件路径
  • ssl.key.password:客户端私钥的密码(如无密码可省略)

方式2:通过会话变量设置

在执行COPY语句前,先通过SET语句设置对应会话变量,示例如下:

-- 设置CA根证书路径
SET KafkaSASLCAFile = '/opt/vertica/config/kafka_ca.crt';
-- 双向认证需要额外设置以下变量
SET KafkaSASLCertificateFile = '/opt/vertica/config/client.crt';
SET KafkaSASLKeyFile = '/opt/vertica/config/client.key';
SET KafkaSASLKeyPassword = 'your_private_key_password';

这种方式仅对当前会话生效,如果需要在多个会话中使用,需要每次会话执行前重复设置,且无法为不同Kafka集群配置不同证书,适用性低于kafka_conf传参的方式。

无数据导入的常见排查点

你当前执行无数据返回,大概率是缺少SSL相关配置导致连接Kafka失败,可以按以下步骤排查:

  • 执行查询查看COPY操作的错误日志:SELECT * FROM COPY_EVENTS WHERE TABLE_NAME = 'TEST_TABLE' ORDER BY EVENT_TIMESTAMP DESC LIMIT 10;
  • 确认stream参数指定的分区和偏移量是否正确,如果你指定的偏移量小于该分区当前的最早有效偏移量,也会读取不到数据
  • 确认所有Vertica节点上都存在配置的证书文件,且文件权限允许Vertica运行用户读取

内容的提问来源于stack exchange,提问作者Elias Ghali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:18:03