debezium/connect此仓库已迁移至 quay.io/debezium/connect。
Kafka Connect 是一个用于将数据移入和移出Kafka的系统。所有Debezium连接器均遵循Kafka Connector API的_源连接器_规范,每个连接器监控特定类型的数据库管理系统的变更数据,然后将这些变更直接转发到按服务器、数据库和表组织的Kafka主题中。此镜像定义了一个可运行的Kafka Connect服务,预配置了所有Debezium连接器。该服务提供RESTful API用于管理连接器实例——只需启动容器,为每个要监控的数据源配置连接器,Debezium就会监控这些数据源的变更并将其转发到相应的Kafka主题。
Debezium是一个分布式平台,可将现有数据库转换为事件流,使应用程序能够快速响应数据库中的每一行级变更。Debezium构建于Kafka之上,并提供与Kafka Connect兼容的连接器,用于监控特定的数据库管理系统。Debezium将数据变更历史记录在Kafka日志中,因此应用程序可以随时停止和重启,并轻松消费其未运行期间错过的所有事件,确保所有事件都能被正确且完整地处理。
运行Debezium需要Zookeeper、Kafka以及运行Debezium连接器的服务。对于简单的评估和实验,所有服务都可以在单个主机上运行,使用下面概述的方案。然而,生产环境需要正确运行和联网多个服务实例,以提供性能、可靠性、复制和容错能力。这可以通过OpenShift等平台实现,该平台管理在多个主机和机器上运行的多个Docker容器。建议使用Kubernetes operator(如Strimzi,其提供Kafka、Kafka Connect、连接器等的operator和CRD)进行此类部署。
此镜像可通过多种方式使用。所有方式都需要已运行的Zookeeper服务,该服务要么通过名为zookeeper的容器在本地运行,要么在OpenShift中作为名为zookeeper的服务运行。还需要已运行的Kafka broker,要么通过名为kafka的容器在本地运行,要么在OpenShift中作为名为kafka的服务运行。
当运行一个或多个Kafka Connect服务实例的集群时,必须使用环境变量定义几个重要参数。请参见下面的部分,了解这些必需环境变量及其可接受值的列表。
使用此镜像启动Kafka Connect实例非常简单:
$ docker run -it --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my-connect-configs -e OFFSET_STORAGE_TOPIC=my-connect-offsets -e ADVERTISED_HOST_NAME=$(echo $DOCKER_HOST | cut -f3 -d'/' | cut -f1 -d':') --link zookeeper:zookeeper --link kafka:kafka debezium/connect
此命令使用此镜像并启动一个名为connect的新容器,该容器在前台运行并附加控制台,以显示服务的输出和错误消息。它在8083端口上公开其REST API,并映射到本地主机上的相同端口号。它使用名为zookeeper的容器(或服务)中的Zookeeper和名为kafka的容器(或服务)中的Kafka broker。此命令设置了三个必需的环境变量,但您应将其值替换为适合您环境的更有意义的值。
要以_分离_模式启动容器,只需将-it选项替换为-d。服务输出不会发送到控制台,但可以随时使用docker logs命令查看。例如,以下命令将显示输出并持续跟踪输出:
$ docker logs --follow --name connect
如果您已经运行了带有Kafka Connect服务的容器,可以使用此镜像连接到该容器并获取命令行shell:
$ docker exec -it connect bash
其中connect是现有容器的名称。shell将设置所有环境变量,与在容器中启动服务时完全相同。因此,可以指定到其他容器的链接和其他环境变量,这些都将反映在shell的导出变量中。
使用此镜像运行Kafka broker时,Debezium Kafka镜像使用多个环境变量。另请参见Kafka Connect的文档以了解更多特定设置。
GROUP_ID运行Kafka Connect服务时需要此环境变量。将其设置为唯一标识该服务及其工作节点所属的Kafka Connect集群的ID。
CONFIG_STORAGE_TOPIC运行Kafka Connect服务时需要此环境变量。将其设置为Kafka主题的名称,组中的Kafka Connect服务在该主题中存储连接器配置。该主题必须有单个分区并高度复制(例如3倍或更多)。
OFFSET_STORAGE_TOPIC运行Kafka Connect服务时需要此环境变量。将其设置为Kafka主题的名称,组中的Kafka Connect服务在该主题中存储连接器偏移量。该主题必须有大量分区(例如25或50),高度复制(例如3倍或更多),并应配置为压缩。
BOOTSTRAP_SERVERS此环境变量是高级设置,仅当Kafka未在可链接的容器或服务中运行时使用。将其设置为用于建立与Kafka集群的初始连接的主机/端口对列表。一旦与这些broker之一建立连接,服务将发现并使用集群中的所有Kafka broker,无论此处为引导指定了哪些服务器。列表的格式应为host1:port1,host2:port2,...。建议在此列表中包含多个broker,以防其中一个不可用。
HOST_NAME此环境变量是高级设置。将其设置为REST API将绑定的主机名。默认为容器的主机名。
ADVERTISED_HOST_NAME此环境变量是高级设置。将其设置为提供给其他工作节点连接的主机名。默认为容器的主机名。
ADVERTISED_PORT此环境变量是高级设置。将其设置为提供给其他工作节点连接的端口。
KEY_CONVERTER此环境变量是高级设置。将其设置为实现Kafka Connect的Converter类的Java类的完全限定名,用于将连接器的键转换为存储在Kafka中的形式。默认为org.apache.kafka.connect.json.JsonConverter。
VALUE_CONVERTER此环境变量是高级设置。将其设置为实现Kafka Connect的Converter类的Java类的完全限定名,用于将连接器的值转换为存储在Kafka中的形式。默认为org.apache.kafka.connect.json.JsonConverter。
INTERNAL_KEY_CONVERTER此环境变量是高级设置。将其设置为实现Kafka Connect的Converter类的Java类的完全限定名,用于将连接器偏移量和配置键转换为存储在Kafka中的形式。默认为org.apache.kafka.connect.json.JsonConverter。
INTERNAL_VALUE_CONVERTER此环境变量是高级设置。将其设置为实现Kafka Connect的Converter类的Java类的完全限定名,用于将连接器偏移量和配置值转换为存储在Kafka中的形式。默认为org.apache.kafka.connect.json.JsonConverter。
OFFSET_FLUSH_INTERVAL_MS此环境变量是高级设置。将其设置为服务定期尝试提交任务偏移量的时间间隔(以毫秒为单位)。默认值为60000,即60秒。
OFFSET_FLUSH_TIMEOUT_MS此环境变量是高级设置。将其设置为等待记录刷新和分区偏移量数据提交到偏移量存储的最大时间(以毫秒为单位),超时后将取消该过程并在未来尝试中恢复要提交的偏移量数据。默认值为5000,即5秒。
SHUTDOWN_TIMEOUT此环境变量是高级设置。将其设置为等待任务优雅关闭的时间(以毫秒为单位),期间连接器完成所有处理、记录任何最终数据并清理资源。这是总时间,不是每个任务的时间。所有任务都会触发关闭,然后按顺序等待它们。默认值为***,即10秒。
HEAP_OPTS此环境变量是推荐的。使用此设置Kafka Connect的JVM选项。默认值为“-Xms256M -Xmx2G”,意味着每个Connect工作节点最多使用2GB堆内存。内存太少可能导致性能问题,而太多可能会因机器可用内存不足而阻止工作节点正常启动。显然,容器必须能够使用此环境变量定义的内存量。
LOG_LEVEL此环境变量是可选的。使用此设置Kafka应用程序日志写入STDOUT和STDERR的详细级别。有效值为INFO(默认)、WARN、ERROR、DEBUG或TRACE。
ENABLE_APICURIO_CONVERTERS此环境变量是可选的。通过将ENABLE_APICURIO_CONVERTERS=true设置为容器环境变量,可使用此启用带有Apicurio Schema Registry的Apicur.io转换器。有效值为false(禁用,默认)或true(启用Apicurio转换器)。
ENABLE_DEBEZIUM_SCRIPTING此环境变量是可选的。通过将ENABLE_DEBEZIUM_SCRIPTING=true设置为容器环境变量,可使用此启用Debezium中使用脚本语言的功能(如消息过滤或基于内容的路由SMT)。有效值为false(禁用,默认)或true(启用脚本)。注意:为防止执行任意脚本表达式,仅当已适当保护对Kafka Connect配置接口的访问时,才应启用此选项。
以CONNECT_开头的环境变量将用于更新Kafka Connect工作节点配置文件。每个环境变量名将通过以下方式映射到配置属性名:
CONNECT_前缀;例如,环境变量CONNECT__HEARTBEAT_INTERVAL_MS转换为heartbeat.interval.ms属性。容器随后将更新Kafka Connect工作节点配置文件以包含该属性的名称和值。
环境变量的值不得包含'@'字符。
使用此镜像创建的容器将暴露8083端口,这是Kafka Connect服务绑定的标准端口。您可以使用标准Docker选项将其映射到运行容器的主机上的不同端口。
此镜像运行的Kafka Connect服务不在容器中存储数据,但会生成日志。保留这些文件的唯一方法是使用卷将容器内的特定目录映射到本地文件系统(或OpenShift持久卷)。
尽管此镜像会将Kafka Connect服务日志输出发送到标准输出,以便作为Docker日志可见,但此镜像还配置Kafka Connect服务将更多日志写入/kafka/logs的数据卷。所有日志每天轮换。
此镜像在/kafka/config定义了一个数据卷,其中存储broker的配置文件。请注意,这些配置文件始终会根据环境变量和链接的容器进行修改。此数据卷的最佳用途是能够查看Kafka使用的配置文件,尽管通过一些注意事项,也可以提供在启动时将被调整和使用的自定义配置文件。
如果要使用Oracle连接器,必须添加由于许可限制未包含在镜像中的依赖项。在这种情况下,您应创建一个从此镜像派生的新镜像,并内置Oracle Instant Client JAR文件。
相关文件可从Oracle Instant Client for Linux获取。请参考示例了解生成的镜像应如何构建。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务