我正在尝试将ec2实例中容器中的提供者的kafka主题镜像到使用者,并且消息未通过。我怀疑我正在使用.properties
配置搞砸了,因为这是我第一次使用MirrorMaker。我也可能一路上都指向错误的端口。
可能的提供者代理在ec2实例中的centOS容器中运行。该提供程序正在通过自定义配置的jdbc源连接器从远程MySQL服务器接收数据,该连接器连接到名为mysql-jdbc-events
的主题。提供者已成功接收消息。
可能的使用者当前在主机ec2实例上,尽管一旦成功测试,它将改变。我将主机的端口12181映射到了容器的端口2181(运行Zookeeper的端口)。我正在从使用者运行MirrorMaker命令。
我运行了命令
./kafka-run-class.sh kafka.tools.MirrorMaker --consumer.config /path/to/config/consumer.properties --producer.config /path/to/config/producer.properties --whitelist "mysql-jdbc-events"
consumer.properties:
# format: host1:port1,host2:port2 ...
zookeeper.connect=(host ip-address):12181
zookeeper.connection.timeout.ms=10000
bootstrap.servers=localhost:9092
# consumer group id
group.id=mirror_group
producer.properties:
# format: host1:port1,host2:port2 ...
zookeeper.connect=(host ip-address):2181
bootstrap.servers=localhost:9092
# specify the compression codec for all data generated: none, gzip, snappy, lz4, zstd
compression.type=none
我在生产者配置中尝试了有无zookeeper.connect
参数,因为我发现有必要冲突。我也收到了WARN The configuration 'zookeeper.connect' was supplied but isn't a known config.
的警告,但我在SO的其他地方读到了可以忽略的内容。
在消费者上我没有收到任何有关该主题的消息,但是在生产者上该主题中有消息。
如果有更多信息会有所帮助,请告诉我。
我也不喜欢这种配置-如果有一种更简单的方式将jdbc保留在容器中并将消息转发到容器外部的kafka实例,那也很好。