威联通安装Kafka

最近在学习 Kafka 的知识,遇到一些问题网上搜到的信息不全。想要在本地安装一个 Kafka 进行验证,想到了之前买的 Nas 就开始折腾。

用 Docker 的方式安装 Kafka

现在的 Nas 很多都支持 Docker,我买的也支持。威联通的 Docker 叫 Container Station,因为提供了图形化界面就不用写命令了。现在的 Kafka 似乎可以在没有 Zookeeper 的情况下运行,但我考虑到万一以后要用到 Zookeeper 再腾出时间来安装太费事了,就索性一起装了。

安装 Zookeeper

选择映像

Zookeeper 的映像我使用的是搜索出来的第一个镜像,因为看起来像是官方出品。下载完映像后开始安装过程。

发布网络端口

配置一下Zookeeper 对外暴露的网络端口,这个映像已经把用到的端口写上了,只需要配置主机上要暴露的端口就可以了。如果不填就是与容器的端口保持一致,我直接在所有的端口前面加了一个 1(2181 变成 12181)。容器端口最好不要改,如果改了的话要在 Kafka 的配置里做相同的更改。

存储映射

在高级设置中配置文件夹的映射,映像也已经把用到的几个文件夹提出来了(本来还想去网上搜一下要用的哪些文件夹)。为了方面看文件,我把这三个文件夹 绑定装载主机路径 ,绑定到 Nas 的文件夹里。

Zookeeper 安装完成

配置完网络和存储就直接安装完成了,Zookeeper 自己会启动。等启动完之后看日志没有报错,再登录容器执行 zkCli.sh,能连接上就说明成功了。

安装 Kafka

选择映像

Kafka 的映像我使用的是星星最多的 bitnami/kafka 映像。下载映像后直接开始安装。

配置文件

Kafka 依赖几个配置文件,要在安装之前先准备好并放到 Nas 上的一个目录里,我在 Nas 上新建了一个 Container\kafka\config 目录,在安装 Kafka 的步骤里映射到容器里。

server.properties

server.properties 是 Kafka 的核心配置文件,没有启动会报错。文件的内容如下

broker.id=0
listeners=PLAINTEXT://{Ip}:{Port}
log.dirs=/var/lib/kafka/data
zookeeper.connect={Ip}:{Port}
  • broker.id:Broker 的 id,随便写一个大于等于 0 的整数就可以了
  • listeners:监听的端口,PLAINTEXT:// 是固定的,后面是 ip 和端口,默认端口是 9092,没有特殊需求可以不用改
  • log.dirs:日志文件夹
  • zookeeper.connect:Zookeeper 的 ip 和端口.注意这里的端口是 zk 容器的端口,不要写成主机映射的端口(在安装 zookeeper 时不管有没有绑定主机端口都没有影响,用容器端口)
log4j.properties

Kafka 的日志文件,网上直接拷贝一份就可以了。我是直接在 Github 上拉的 Kafka 项目里的 log4j.properties 文件。

tools-log4j.properties

Kafka 工具的日志文件,同样网上直接拷贝。我还是直接在 Github 上拉的 Kafka 项目里的 tools-log4j.properties 文件。

网络映射

这个映像文件已经把要用的端口提出来了,根据需要绑定主机端口,如果不填就是对外暴露 9092 端口。

存储映射

存储映射的时候配置文件的目录是一定要绑定的,因为要把刚才新建的几个配置文件映射到容器里让 Kafka 能够使用。我还映射了一个 data 文件夹,方便后面看文件学习。

Kafka 安装完成

网络映射和存储映射都配置好了之后,就可以完成安装了。等容器启动完成后看下日志,没有报错就算成功了。为了验证安装是否成功可以登录容器创建一个 Topic

shell 复制代码
kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --create --replication-factor 1 --partitions 1 --topic first-topic

注意这里的 ip 和端口一定要和配置文件里的一致,不然可能会报错。Topic 创建成功就说明 Kafka 安装成功了(其实只要 Kafka 响应了就算安装成功了)。

关于网络

安装之间看到有文章说 Docker 容器之间互相访问需要对网络做一些配置,想着先安装完试一下再说。结果安装完直接可以用,不需要对网络做处理,不知道是否威联通做了处理。反正不用处理最好。

相关推荐
lucky_syq1 小时前
Flume和Kafka的区别?
大数据·kafka·flume
观测云1 小时前
Confluent Cloud Kafka 可观测性最佳实践
kafka·confluent
攻心的子乐1 小时前
Kafka可视化工具 Offset Explorer (以前叫Kafka Tool)
分布式·kafka
小林想被监督学习2 小时前
RabbitMQ 的7种工作模式
分布式·rabbitmq
初晴~3 小时前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
有一个好名字4 小时前
zookeeper分布式锁模拟12306买票
分布式·zookeeper·云原生
漫无目的行走的月亮5 小时前
Ubuntu下C语言操作kafka示例
kafka·librdkafka
yukai080087 小时前
【最后203篇系列】002 - 两个小坑(容器时间错误和kafka模块报错
分布式·kafka
老猿讲编程8 小时前
OMG DDS 规范漫谈:分布式数据交互的演进之路
分布式·dds
C++忠实粉丝8 小时前
服务端高并发分布式结构演进之路
分布式