首页 > 其他分享 >Debezium教程翻译02:启动Docker,Debezium,Zookeeper,Kafka

Debezium教程翻译02:启动Docker,Debezium,Zookeeper,Kafka

时间:2023-01-13 23:37:00浏览次数:36  
标签:02 INFO Zookeeper 07 16 09 main Debezium 21


使用Docker运行Debezium

运行Debezium涉及三个主要服务:Zookeeper、Kafka和Debezium的连接器服务。
本教程将指导您使用Docker和Debezium的Docker映像启动这些服务的单个实例。
另一方面,生产环境需要运行每个服务的多个实例,以保证性能、可靠性、复制和容错。
这可以通过OpenShift和Kubernetes这样的平台来实现,该平台可以管理运行在多个主机和机器上的多个Docker容器,但通常需要在专用硬件上安装。

启动Docker

确保Docker安装并运行在Linux、OS X或Windows上。
我们强烈推荐在这些平台上使用Docker的最新版本,我们在编写这些说明时也考虑到了这一点。
(通过Docker machine在虚拟机中运行Docker不再是首选方法,Docker建议您升级。)

为了进行简单的评估和实验,本教程将指导您在本地机器上的单独容器中启动每个服务的单个实例。
Zookeeper和Kafka都在容器内部本地存储数据,正常使用需要将主机上的目录作为卷挂载,这样容器停止时,持久化数据就会保留下来。
在本教程中我们将跳过这一点,尽管Docker镜像的文档描述了如何做到这一点。
这意味着当一个容器被移除时,所有的持久化数据都会丢失。
这对于我们的实验来说是很理想的,因为当我们完成的时候,你的电脑上什么都没有留下,你可以多次运行这个实验,而不需要清理中间的任何东西。

在本地运行多个服务可能会造成混淆,因此我们将使用一个单独的终端来运行前台中的每个容器。
这样,容器的所有输出都将显示在用于运行它的终端中。

提示:

这不是运行Docker容器的唯一方法。
与在前台(使用-it)运行容器不同,Docker允许您以分离模式(使用-d)运行容器,容器在其中启动,Docker命令立即返回。
分离模式容器不会在终端中显示它们的输出,尽管您总是可以通过使用docker日志命令

docker logs --follow --name <container-name>

来看到输出内容。这是我们为运行的每个容器命名的原因之一。
有关更多细节,请参阅Docker文档。

启动Zookeeper

在构成Debezium的所有不同服务/进程中,首先启动的是Zookeepe。
通过以下命令来启动一个新的终端和一个带有Zookeeper的容器:

$ docker run -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:0.8

这将使用debezium/zookeeper映像的0.8版本运行一个新的容器,并将zookeeper名称分配给这个容器。
"-it"命令使容器具有交互性,这意味着它将终端的标准输入和输出附加到容器上,以便您可以看到容器中发生了什么。
“–rm"命令可以使Docker在容器停止时移除容器。
这三个”-p"选项将容器的三个端口(例如,2181、2888和3888)映射到Docker主机上的相同端口,以便其他容器(以及容器外的软件)可以与Zookeeper通信。

你应该可以在你的终端看到zookeeper的典型输出:

Starting up in standalone mode
ZooKeeper JMX enabled by default
Using config: /zookeeper/conf/zoo.cfg
2017-09-21 07:15:55,417 - INFO [main:QuorumPeerConfig@134] - Reading configuration from: /zookeeper/conf/zoo.cfg
2017-09-21 07:15:55,419 - INFO [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3
2017-09-21 07:15:55,419 - INFO [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 1
2017-09-21 07:15:55,420 - WARN [main:QuorumPeerMain@113] - Either no config or no quorum defined in config, running in standalone mode
2017-09-21 07:15:55,420 - INFO [PurgeTask:DatadirCleanupManager$PurgeTask@138] - Purge task started.
2017-09-21 07:15:55,425 - INFO [PurgeTask:DatadirCleanupManager$PurgeTask@144] - Purge task completed.
2017-09-21 07:15:55,427 - INFO [main:QuorumPeerConfig@134] - Reading configuration from: /zookeeper/conf/zoo.cfg
2017-09-21 07:15:55,427 - INFO [main:ZooKeeperServerMain@96] - Starting server
2017-09-21 07:15:55,432 - INFO [main:Environment@100] - Server environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
2017-09-21 07:15:55,432 - INFO [main:Environment@100] - Server environment:host.name=51b46dd211d0
2017-09-21 07:15:55,432 - INFO [main:Environment@100] - Server environment:java.version=1.8.0_131
2017-09-21 07:15:55,432 - INFO [main:Environment@100] - Server environment:java.vendor=Oracle Corporation
2017-09-21 07:15:55,432 - INFO [main:Environment@100] - Server environment:java.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64/jre
2017-09-21 07:15:55,432 - INFO [main:Environment@100] - Server environment:java.class.path=/zookeeper/bin/../build/classes:/zookeeper/bin/../build/lib/*.jar:/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/zookeeper/bin/../lib/netty-3.10.5.Final.jar:/zookeeper/bin/../lib/log4j-1.2.16.jar:/zookeeper/bin/../lib/jline-0.9.94.jar:/zookeeper/bin/../zookeeper-3.4.10.jar:/zookeeper/bin/../src/java/lib/*.jar:/zookeeper/conf:
2017-09-21 07:15:55,432 - INFO [main:Environment@100] - Server environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2017-09-21 07:15:55,432 - INFO [main:Environment@100] - Server environment:java.io.tmpdir=/tmp
2017-09-21 07:15:55,433 - INFO [main:Environment@100] - Server environment:java.compiler=<NA>
2017-09-21 07:15:55,433 - INFO [main:Environment@100] - Server environment:os.name=Linux
2017-09-21 07:15:55,433 - INFO [main:Environment@100] - Server environment:os.arch=amd64
2017-09-21 07:15:55,433 - INFO [main:Environment@100] - Server environment:os.version=4.4.0-93-generic
2017-09-21 07:15:55,433 - INFO [main:Environment@100] - Server environment:user.name=zookeeper
2017-09-21 07:15:55,433 - INFO [main:Environment@100] - Server environment:user.home=/zookeeper
2017-09-21 07:15:55,433 - INFO [main:Environment@100] - Server environment:user.dir=/zookeeper
2017-09-21 07:15:55,435 - INFO [main:ZooKeeperServer@829] - tickTime set to 2000
2017-09-21 07:15:55,435 - INFO [main:ZooKeeperServer@838] - minSessionTimeout set to -1
2017-09-21 07:15:55,435 - INFO [main:ZooKeeperServer@847] - maxSessionTimeout set to -1
2017-09-21 07:15:55,440 - INFO [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181

最后一行很重要,报告Zookeeper已经准备好,并监听端口2181。终端将继续显示Zookeeper生成的其他输出。

启动Kafka

打开一个新的终端,在一个新的容器中运行Kafka:

$ docker run -it --rm --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka:0.8

提示

在本教程中,我们总是在Docker容器中连接Kafka,只要我们连接到Kafka容器,就总是能够看到Kafka容器并与之通信。如果我们想从Docker容器外部连接到Kafka,那么我们就会希望Kafka通过Docker的主机地址告知外界,我们可以通过添加

-e ADVERTISED_HOST_NAME=

紧随其后的是在Linux或Mac上运行的Docker的主机的IP地址或主机名解析,这是主机的IP地址(不是localhost)。

我们使用debezium/kafka镜像的0.8版本运行一个新的容器,并将kafka名称分配给这个容器。"-it"选项使容器具有交互性,这意味着它将终端的标准输入和输出附加到容器上,以便您可以看到容器中发生了什么,"–rm"命令可以使Docker在容器停止时移除容器。该命令将容器中的端口9092映射到Docker主机上的相同端口,以便容器外部的软件可以与Kafka通信。最后,使用"–link zookeeper:zookeeper"参数告诉容器,它可以在名为zookeeper的容器中找到在同一个Docker主机上运行的zookeeper。

你应该可以在你的终端看到Kafka的典型输出,内容结尾为:

...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed (SyncConnected)
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
2017-09-21 07:16:59,221 - WARN [main:Logging$class@85] - No meta.properties file under dir /kafka/data/1/meta.properties
2017-09-21 07:16:59,247 - INFO [ThrottledRequestReaper-Fetch:Logging$class@70] - [ThrottledRequestReaper-Fetch]: Starting
2017-09-21 07:16:59,247 - INFO [ThrottledRequestReaper-Produce:Logging$class@70] - [ThrottledRequestReaper-Produce]: Starting
2017-09-21 07:16:59,248 - INFO [ThrottledRequestReaper-Request:Logging$class@70] - [ThrottledRequestReaper-Request]: Starting
2017-09-21 07:16:59,308 - INFO [main:Logging$class@70] - Loading logs.
2017-09-21 07:16:59,312 - INFO [main:Logging$class@70] - Logs loading complete in 4 ms.
2017-09-21 07:16:59,349 - INFO [main:Logging$class@70] - Starting log cleanup with a period of 300000 ms.
2017-09-21 07:16:59,353 - INFO [main:Logging$class@70] - Starting log flusher with a default period of 9223372036854775807 ms.
2017-09-21 07:16:59,385 - INFO [main:Logging$class@70] - Awaiting socket connections on 172.17.0.4:9092.
2017-09-21 07:16:59,387 - INFO [main:Logging$class@70] - [Socket Server on Broker 1], Started 1 acceptor threads
2017-09-21 07:16:59,394 - INFO [ExpirationReaper-1-Produce:Logging$class@70] - [ExpirationReaper-1-Produce]: Starting
2017-09-21 07:16:59,395 - INFO [ExpirationReaper-1-Fetch:Logging$class@70] - [ExpirationReaper-1-Fetch]: Starting
2017-09-21 07:16:59,395 - INFO [ExpirationReaper-1-DeleteRecords:Logging$class@70] - [ExpirationReaper-1-DeleteRecords]: Starting
2017-09-21 07:16:59,435 - INFO [ExpirationReaper-1-topic:Logging$class@70] - [ExpirationReaper-1-topic]: Starting
2017-09-21 07:16:59,441 - INFO [ExpirationReaper-1-Heartbeat:Logging$class@70] - [ExpirationReaper-1-Heartbeat]: Starting
2017-09-21 07:16:59,442 - INFO [controller-event-thread:Logging$class@70] - Creating /controller (is it secure? false)
2017-09-21 07:16:59,447 - INFO [ExpirationReaper-1-Rebalance:Logging$class@70] - [ExpirationReaper-1-Rebalance]: Starting
2017-09-21 07:16:59,456 - INFO [controller-event-thread:Logging$class@70] - Result of znode creation is: OK
2017-09-21 07:16:59,458 - INFO [main:Logging$class@70] - [GroupCoordinator 1]: Starting up.
2017-09-21 07:16:59,459 - INFO [main:Logging$class@70] - [GroupCoordinator 1]: Startup complete.
2017-09-21 07:16:59,460 - INFO [group-metadata-manager-0:Logging$class@70] - [Group Metadata Manager on Broker 1]: Removed 0 expired offsets in 1 milliseconds.
2017-09-21 07:16:59,487 - INFO [main:Logging$class@70] - [ProducerId Manager 1]: Acquired new producerId block (brokerId:1,blockStartProducerId:0,blockEndProducerId:999) by writing to Zk with path version 1
2017-09-21 07:16:59,530 - INFO [main:Logging$class@70] - [Transaction Coordinator 1]: Starting up.
2017-09-21 07:16:59,532 - INFO [TxnMarkerSenderThread-1:Logging$class@70] - [Transaction Marker Channel Manager 1]: Starting
2017-09-21 07:16:59,532 - INFO [main:Logging$class@70] - [Transaction Coordinator 1]: Startup complete.
2017-09-21 07:16:59,551 - INFO [main:Logging$class@70] - Will not load MX4J, mx4j-tools.jar is not in the classpath
2017-09-21 07:16:59,590 - INFO [main:Logging$class@70] - Creating /brokers/ids/1 (is it secure? false)
2017-09-21 07:16:59,604 - INFO [main:Logging$class@70] - Result of znode creation is: OK
2017-09-21 07:16:59,605 - INFO [main:Logging$class@70] - Registered broker 1 at path /brokers/ids/1 with addresses: EndPoint(172.17.0.4,9092,ListenerName(PLAINTEXT),PLAINTEXT)
2017-09-21 07:16:59,606 - WARN [main:Logging$class@85] - No meta.properties file under dir /kafka/data/1/meta.properties
2017-09-21 07:16:59,648 - INFO [main:AppInfoParser$AppInfo@83] - Kafka version : 0.11.0.0
2017-09-21 07:16:59,648 - INFO [main:AppInfoParser$AppInfo@84] - Kafka commitId : cb8625948210849f
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started

上面显示的最后一行显示Kafka broker已经成功启动,并为客户机连接做好了准备。终端将继续显示Kafka生成的额外输出。

提示

Debezium 0.8.3.Final需要Kafka Connect 1.1.0,在本教程中,我们还使用Kafka broker的1.1.0版本。查看Kafka文档,了解不同版本的Kafka Connect和Kafka broker之间的兼容性。

标签:02,INFO,Zookeeper,07,16,09,main,Debezium,21
From: https://blog.51cto.com/u_15936016/6006781

相关文章

  • Java基础02 关键字与标识符
    关键字与标识符关键字随着不断深入学习Java逐渐理解和掌握标识符定义Java中所有的组成部分都需要名字,类名,变量名,各种方法名都称为标识符命名首字母:a-z;A-......
  • HGAME 2023 WP week1
    WEEK1webClassicChildhoodGame一眼顶真,直接翻js文件,在Events.js中找到mota(),猜测是获取flag,vara=['\x59\x55\x64\x6b\x61\x47\x4a\x58\x56\x6a\x64\x61\x62\x46\x......
  • 2022跨境支付回顾,iPayLinks让“链接”更高效
    从2015年服务第一个客户开始iPayLinks已陪伴用户走过8个春秋作为贴心的跨境资金管家iPayLinks跨越山海,链接全球以产品为基石这一年,iPayLinks持续开发新产品、新功能,帮助......
  • 中睿天下入选“2023年网络安全服务阳光行动”成员单位
    近日,中国网络安全产业联盟(CCIA)正式公布了“2023年网络安全服务阳光行动”成员单位名单。中睿天下作为以“实战对抗”为特点的能力价值型网络安全厂商,凭借领先的产品方案、专......
  • 02,调试kali
    0,编辑器乱码vi编辑器上下按键乱码处理新装系统在使用vi编辑器编辑文件时,在使用编辑模式时,按上下键出现乱码像出现:DAC这些字母,退格键(Backspace)使用不了处理方法很简单:修......
  • 电动滑板车出欧盟EN17128:2020标准测试
    EN17128:2020《载人和货物及相关设施运输的轻型机动车辆,未经道路使用类型批准-轻型电动车辆(PLEV)》于2020年10月21日发布,该标准由技术委员会CEN/TC354负责编写,由法国标......
  • ICRA2022 | 数据集:用于移动机器人视觉异常检测
    00  摘要这篇文章主要关注自主移动机器人的视觉异常检测任务。本文结构如下:对相关类型的视觉异常进行分类,并讨论如何通过无监督的深度学习方法检测它们;提出一个专门为此任......
  • 破惑、问道、安顿。我的2022年终总结。
    靠近年底的月份,内心深处总会不断提醒你,该写年终总结了。无论是工作上,生活上,亦或是互联网、APP上,无数的年终报告提醒我,一年了也该总结一下自己了,不然这之前的1年是不是白过了......
  • 题解 P8294 [省选联考 2022] 最大权独立集问题
    Solution根据一些逝去的记忆可以得到一个DP状态:\(f_{u,x,y}\)表示\(u\)这棵子树,\(x\)从子树出去,\(y\)进来这棵子树。然后讨论一下状态转移,可以暴力枚举状态,暴力枚......
  • 2023/1 做题记录 #1
    2023/1/13[ABC284A]SequenceofStringshttps://www.luogu.com.cn/problem/AT_abc284_a不愧是ABC的A题,依题意模拟即可。#include<bits/stdc++.h>usingnamespacestd......