ClickHouse连接SSL认证的Kafka

一.配置Kafka的SSL认证

1.生成 SSL 证书和密钥:
首先,生成一个私钥(private key)文件:

openssl genpkey -algorithm RSA -out server.key

然后,使用私钥生成证书签名请求(Certificate Signing Request,CSR)文件:
 

openssl req -new -key server.key -out server.csr

最后,使用 CSR 文件和私钥生成服务器证书: 这将生成一个名为 server.crt 的服务器证书文件。
 

openssl x509 -req -in server.csr -signkey server.key -out server.crt

 2. 创建 Kafka 服务器密钥库(Keystore):将服务器证书和私钥导出为 PKCS12 格式:

openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name kafka-server

将 PKCS12 文件转换为 JKS 格式的密钥库: 这将生成一个名为 server.keystore.jks 的密钥库文件。
 

keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -destkeystore server.keystore.jks -deststoretype JKS

3. 创建客户端信任库(Truststore):将根证书导出为 PEM 格式:
 

openssl x509 -in server.crt -out server.pem -outform PEM

将 PEM 格式的根证书导入到 JKS 格式的信任库中: 这将生成一个名为 client.truststore.jks 的信任库文件,并将根证书导入其中。
 

keytool -import -trustcacerts -alias server -file server.pem -keystore client.truststore.jks

二.配置 Kafka 服务器:

在kafka的config目录下创建ssl2目录复制 server.properties 到ssl下命名server_ssl.properties

修改server_ssl.properties

#启用 SSL 加密 添加
listeners=PLAINTEXT://0.0.0.0:9092,SSL://:9093
advertised.listeners=PLAINTEXT://172.29.128.71:9092,SSL://172.29.128.71:9093
ssl.keystore.location=/usr/local/soft/kafka_2.12-3.2.3/config/ssl2/server.keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
ssl.truststore.location=/usr/local/soft/kafka_2.12-3.2.3/config/ssl2/server.truststore.jks
ssl.truststore.password=123456
ssl.client.auth=required

创建client-ssl.properties

security.protocol=SSL
ssl.truststore.location=/usr/local/soft/kafka_2.12-3.2.3/config/ssl2/server.truststore.jks
ssl.truststore.password=123456
ssl.keystore.location=/usr/local/soft/kafka_2.12-3.2.3/config/ssl2/server.keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
ssl.enabled.protocols=TLSv1.2
ssl.truststore.type=JKS
ssl.keystore.type=JKS
ssl.endpoint.identification.algorith
启动zk
./bin/zookeeper-server-start.sh ./config/zookeeper.properties
启动kafka
./bin/kafka-server-start.sh ./config/ssl2/server_ssl.properties

创建主题

 bin/kafka-topics.sh --create --topic ssl --partitions 1 --replication-factor 1 --bootstrap-server localhost:9093 --command-config ./config/ssl2/client-ssl.properties

启动生产者消费者

#生产者
./bin/kafka-console-producer.sh --broker-list 172.29.128.71:9093 --topic ssl --producer.config ./config/ssl2/client-ssl.properties
#消费者
./bin/kafka-console-consumer.sh --bootstrap-server 172.29.128.71:9093 --topic ssl --from-beginning --consumer.config ./config/ssl2/client-ssl.properties

三.clickhouse配置kafka连接信息

在/etc/clickhouse-server/config.d创建  metrika.xml

将密钥文件复制到clickhouse的目录下的创建ssl目录下,server.crt,server.pem,server.key

<yandex>
    <kafka>
        <max_poll_interval_ms>60000</max_poll_interval_ms>
        <session_timeout_ms>60000</session_timeout_ms>
        <heartbeat_interval_ms>10000</heartbeat_interval_ms>
        <reconnect_backoff_ms>5000</reconnect_backoff_ms>
        <reconnect_backoff_max_ms>60000</reconnect_backoff_max_ms>
        <request_timeout_ms>20000</request_timeout_ms>
        <retry_backoff_ms>500</retry_backoff_ms>
        <message_max_bytes>20971520</message_max_bytes>
        <debug>all</debug><!-- only to get the errors -->
        <security_protocol>SSL</security_protocol>
        <ssl_ca_location>/etc/clickhouse-server/ssl2/server.crt</ssl_ca_location>
        <ssl_certificate_location>/etc/clickhouse-server/ssl2/server.pem</ssl_certificate_location>
        <ssl_key_location>/etc/clickhouse-server/ssl2/server.key</ssl_key_location>
        <ssl_key_password>123456</ssl_key_password>
    </kafka>
</yandex>

重启clickhouse

systemctl restart clickhouse-server.service

创表测试

#kafka引擎表
 CREATE TABLE kafka_test.log_kafka
(
    `CONTENT` String
)
ENGINE = Kafka
SETTINGS kafka_broker_list = '172.29.128.71:9093', kafka_topic_list = 'sasl_ssl', kafka_group_name = 'consumer-group1', kafka_format = 'TabSeparated', kafka_num_consumers = 1

#物化视图

CREATE MATERIALIZED VIEW kafka_test.log_content
(
    `CONTENT` Nullable(String),
    `addTime` DateTime
)
ENGINE = MergeTree
ORDER BY addTime
SETTINGS index_granularity = 8192 AS
SELECT
    CONTENT,
    now() AS addTime
FROM kafka_test.log_kafka

验证生产者生产数据

 

kafka引擎表成功消费数据,clickhouse连接带有ssl认证的Kafka成功

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值