摘要
本文主要介绍如何使用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可以简化数据流的创建和管理,帮助用户构建高效、可靠的数据流管理系统,实现不同系统之间的数据集成和传输。
主要功能
- 数据导入和导出: Kafka Connect能够将数据从各种来源(如数据库、文件系统、消息队列等)导入到Kafka集群中。 同时,它也能将数据从Kafka集群导出到外部系统(如二次存储系统、查询系统、批处理系统等)进行进一步的处理或分析。
- 数据转换: Kafka Connect支持对数据进行转换和处理,以满足不同系统之间的数据格式和结构要求。
- 实时数据流: 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注册配置
这里主要在原来的配置基础上增加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';"
}
}