1、环境配备
JAVA1.8以上
2、下载kafka包到本地
下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz
最新的安装包为2.13
$wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz
3、解压安装包
$tar -xzf kafka_2.13-2.8.0.tgz
cd kafka_2.13-2.8.0/
4、端口设置
由于kafka的需要zookeeper支持,收集消息,,在新的kafka中已经自带了zookeeper。
如果需要单独的安装zookeeper请参考:https://www.cnblogs.com/happydreamzjl/articles/12186171.html
kafka:9092
zookeeper:2181
5、zookeeper自动zookeeper。
切换到kafka的目录下自行一下命令:
$ /data/tool/kafka_2.13-2.8.0/bin/zookeeper-server-start.sh /data/tool/kafka_2.13-2.8.0/config/zookeeper.properties
6、配置kafka
$ vim /config/service.properties
默认配置 advertised.listeners=PLAINTEXT://your.host.name:9092
修改为 advertised.listeners=PLAINTEXT://ip:9092
例:advertised.listeners=PLAINTEXT://192.168.244.128:9092
- ip为服务器ip
- hostname和端口是用来建议给生产者和消费者使用的,如果没有设置,将会使用listeners的配置,如果listeners也没有配置,将使用java.net.InetAddress.getCanonicalHostName()来获取这个hostname和port,对于ipv4,基本就是localhost了。
- "PLAINTEXT"表示协议,可选的值有PLAINTEXT和SSL,hostname可以指定IP地址,也可以用"0.0.0.0"表示对所有的网络接口有效,如果hostname为空表示只对默认的网络接口有效。也就是说如果你没有配置advertised.listeners,就使用listeners的配置通告给消息的生产者和消费者,这个过程是在生产者和消费者获取源数据(metadata)。
- 配置链接zookeeper的配置:
主要注意三个配置:
- broker.id标识本机
- log.dirs是kafka接收消息存放路径
- zookeeper.connect指定连接的zookeeper集群地址
7、启动kafka 执行一下命令:
8、检查端口是否启动正常 执行一下命令
$ netstat -tunlp|egrep "(2181|9092)"
如上图所示 服务启动正常。
注意:如果使用阿里或者华为云的ECS服务,请在安全组里面添加端口9092 2181端口,外网可以访问。要不然程序还是连接不了,我在这里踩过坑,浪费了2个多小时。
以上只是kafuka单机部署。集群部署方式请看关注下期。
启动生产者:bin/kafka-console-producer.sh --broker-list localhost:9092 --topic yinzhengjie-kafka
启动消费者:bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic yinzhengjie-kafka