Kafka分布式容器数据发布实战

Kafka分布式数据发布实战

实验目的:

学会使用Kafka系统完成信息分发。

实验描述:

第一阶段通过Kafka完成一个生产者向一个消费者发布信息,第二阶段通过kafka收集3个nginx前端访问日志,并写入日志收集容器中以便进行后续分析。

阶段一

实验准备:

3个基于ubuntu bionic 的容器镜像文件(Kafaka server, Kafaka consumer, Kafaka producer),1个K8S部署文件。

实验步骤:

建立Kafka server 容器镜像。

建立Kafka consumer容器镜像。

建立Kafka producer 容器镜像。

实例化并连接三个容器。

在部署容器kafkaconsumer时出现了报错,相关命令为:

Kafka-console-consumer.sh --bootstrap-server kafkaserver:9092 --topic test --from-beginning

错误内容如下:

[2018-12-06 08:25:11,164] ERROR Error processing message, terminating consumer process: (kafka.tools.ConsoleConsumer$)

2018/12/6 下午4:25:11 java.lang.IllegalStateException: No entry found for connection 2147483647

20181207出现问题,Consumer连接Server报错,仍然是上图中的错误。需要检查Kafka中server.properties中地址注释对于部署有无影响。

20181208经检查得到,果然是server.properties的问题,其中的语句:

#listeners=PLAINTEXT://hostname:9092

需要取消注释,并且添加你的主机名,我的容器主机名为kafkaserver,并且已经加入了k8s内的DNS记录。

在修正这个错误的时候因为粗心大意,配置Consumer时将kafkaserver的端口号9092写成zookeeper端口号2181,导致消息接收不到,一下午的时间耗在了这两个地方,不过现在错误都已经获得了纠正,也能够得到正确的结果。

通过Kafka producer 容器创建一条消息。

已经能够正确的发送信息。

通过Kafka consumer 容器打印接收到的消息。

已经能够正确的接受信息。

自动化部署。

20181207自动化部署测试通过,各容器连接正常。

Consumer 接收到的消息:

使用k8s完成自动化部署,编写启动脚本和关闭脚本,测试结果通过,达到要求。

实验结论:

经过第一阶段的实验,大体上明白了Kafka的通讯过程,成功的完成了一个单server的启动,并使用producer生产一条消息,由consumer消费消息,且各容器使用k8s自动化部署。

 

项目代码地址:https://gitee.com/chinakun/kafka_practice

阅读更多

没有更多推荐了,返回首页