kafka-connect使用debezium连接器配置kerberos认证

434 阅读2分钟

摘要

本文主要介绍如何使用debezium-connector-mysql连接使用kerberos认证的kafka集群,以及kafka-connect server的配置。

关键字: debezium kafka-connect Kafka kerberos

Kerberos介绍

参考文章: www.cnblogs.com/wuyongyin/p…

kafka-connect介绍

定义:Kafka Connect是一个可扩展的、可靠的流式传输数据的工具,它允许用户快速定义将大量数据集合移入和移出Kafka的连接器。

作用:Kafka Connect可以简化数据流的创建和管理,帮助用户构建高效、可靠的数据流管理系统,实现不同系统之间的数据集成和传输。

主要功能

  1. 数据导入和导出: Kafka Connect能够将数据从各种来源(如数据库、文件系统、消息队列等)导入到Kafka集群中。 同时,它也能将数据从Kafka集群导出到外部系统(如二次存储系统、查询系统、批处理系统等)进行进一步的处理或分析。
  2. 数据转换: Kafka Connect支持对数据进行转换和处理,以满足不同系统之间的数据格式和结构要求。
  3. 实时数据流: Kafka Connect支持实时数据流处理,确保数据在系统之间的快速、可靠传输。

debezium介绍

定义:Debezium基于Apache License 2.0协议,它通过非侵入式的方式捕获数据库的变更事件,如表的增、删、改等,然后将这些事件转换为实时数据流,供其他系统或应用程序使用。

Debezium通过数据库的日志或复制功能来捕获变更事件。例如,在MySQL中,它使用binlog来捕获变更;在PostgreSQL中,则使用WAL(Write-Ahead Logging)日志。捕获到变更事件后,Debezium会将这些事件转换为Kafka中的消息,并发布到指定的Kafka主题中。下游应用程序可以订阅这些主题,以实时获取数据库的变更信息。

kafka开启kerberos认证

参考文章,写得非常好,无需补充:www.cnblogs.com/myownswords…

kafka-connect配置

参考:docs.confluent.io/platform/cu…

修改配置:config/connect-distributed.properties

在最后追加

security.protocol=SASL_PLAINTEXT
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka-server
sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required \
   useKeyTab=true \
   storeKey=true \
   keyTab="/data/kafka_2.13-3.7.0/config/kerberos/kafka-client.keytab" \
   principal="kafka-client@HADOOP.COM";
producer.sasl.mechanism=GSSAPI
producer.sasl.kerberos.service.name=kafka-server
# Configure SASL_SSL if TLS/SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
producer.security.protocol=SASL_PLAINTEXT
producer.sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required \
   useKeyTab=true \
   storeKey=true \
   keyTab="/data/kafka_2.13-3.7.0/config/kerberos/kafka-client.keytab" \
   principal="kafka-client@HADOOP.COM";
consumer.sasl.mechanism=GSSAPI
consumer.sasl.kerberos.service.name=kafka-server
# Configure SASL_SSL if TLS/SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
consumer.security.protocol=SASL_PLAINTEXT
consumer.sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required \
   useKeyTab=true \
   storeKey=true \
   keyTab="/data/kafka_2.13-3.7.0/config/kerberos/kafka-client.keytab" \
   principal="kafka-client@HADOOP.COM";

connector注册配置

参考:debezium.io/documentati…

这里主要在原来的配置基础上增加database.history.producer.* database.history.consumer.*

{
    "name": "test-mysql",
    "config": {
        "connector.class": "io.debezium.connector.mysql.MySqlConnector",
        "database.hostname": "192.168.139.1",
        "database.port": "3306",
        "database.user": "root",
        "database.password": "xxxxxx",
        "database.server.id": "184054",
        "database.server.name": "test-mysql",
        "table.include.list": "test.table",
        "database.history.kafka.bootstrap.servers": "test:9092",
        "database.history.kafka.topic": "dbhistory.test.table",
        "include.schema.changes": "false",
        "database.history.producer.security.protocol": "SASL_PLAINTEXT",
        "database.history.producer.sasl.mechanism":"GSSAPI",
        "database.history.producer.sasl.kerberos.service.name":"kafka-server",
        "database.history.producer.sasl.jaas.config":"com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab='/data/kafka_2.13-3.7.0/config/kerberos/kafka-client.keytab' principal='kafka-client@HADOOP.COM';",
        "database.history.consumer.security.protocol": "SASL_PLAINTEXT",
        "database.history.consumer.sasl.mechanism": "GSSAPI",
        "database.history.consumer.sasl.kerberos.service.name": "kafka-server",
        "database.history.consumer.sasl.jaas.config": "com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab='/data/kafka_2.13-3.7.0/config/kerberos/kafka-client.keytab' principal='kafka-client@HADOOP.COM';"
    }
}