kafka: fka_2.12-1.0.2.tgz
jdk: jdk-8u261-linux-x64.rpm
zookeeper: zookeeper-3.4.14.tar.gz
一、Java环境安装
- jdk安装
rpm -ivh jdk-8u261-linux-x64.rpm
- 配置环境变量
在最后追加vim /etc/profile
退出后生效配置export JAVA_HOME=/usr/java/jdk1.8.0_261-amd64 export PATH=$PATH:$JAVA_HOME/bin
. /etc/profile #验证 java -version
二、 Zookeeper的安装配置
- 解压到/opt
tar -zxvf zookeeper-3.4.14.tar.gz -C /opt
- 编辑/etc/profile
末尾追加vi /etc/profile
生效配置#ZOOKEEPER_PREFIX指向Zookeeper的解压目录 export ZOOKEEPER_PREFIX=/opt/zookeeper-3.4.14 #将Zookeeper的bin目录添加到PATH中 export PATH=$PATH:$ZOOKEEPER_PREFIX/bin #设置环境变量ZOO_LOG_DIR,指定Zookeeper保存日志的位置 export ZOO_LOG_DIR=/var/lossdate/zookeeper/log
. /etc/profile
- 配置zookeeper的conf
修改cd /opt/zookeeper-3.4.14/conf/ cp zoo_sample.cfg zoo.cfg vi zoo.cfg
dataDir=/var/lossdate/zookeeper/data
- 启动
zkServer.sh start
三、 Kafka的安装与配置
-
解压
tar -zxf fka_2.12-1.0.2.tgz -C /opt
-
配置环境变量
vi /etc/profile
末尾追加
export KAFKA_HOME=/opt/kafka_2.12-1.0.2 export PATH=$PATH:$KAFKA_HOME/bin
生效配置
. /etc/profile
-
配置server.properties
cd /opt/kafka_2.12-1.0.2/config/ vi server.properties
修改zookeeper.connect和log.dirs
advertised.listeners=PLAINTEXT://192.168.200.142:9092 zookeeper.connect=localhost:2181/myKafka log.dirs=/var/lossdate/kafka/kafka-logs
创建日志目录
mkdir -p /var/lossdate/kafka/kafka-logs
-
启动kafka
cd /opt/kafka_2.12-1.0.2/bin kafka-server-start.sh ../config/server.properties #后台启动,使用命令 kafka-server-start.sh -daemon ../config/server.properties
-
查看
zkCli.sh ls / ls /myKafka
可以看到kafka已经注册到zookeeper上了
-
退出
kafka-server-stop.sh
-
P.S. 内外网隔离配置
在配置文件里vi /etc/profilelistener.security.protocol.map=INTERNAL:SSL,EXTERNAL:SSL listeners=INTERNAL://192.168.200.141:9000,EXTERNAL://192.168.200.142:9001 advertised.listeners=EXTERNAL://192.168.200.142:9001 inter.broker.listener.name=EXTERNAL
listener.security.protocol.map : 监听器名称和安全协议的映射配置, 可以将内外网隔离,即使它们都使用SSL,每个监听器的名称只能在map中出现一次
listeners : 用于配置broker监听的URI以及监听器名称列表,使用逗号隔开多个URI及监听器名称
advertised.listeners : 需要将该地址发布到zookeeper供客户端使用,如果客户端使用的地址与listeners配置不同, advertised.listeners的地址必须是listeners中配置的或配置的一部分
inter.broker.listener.name : 用于配置broker之间通信使用的监听器名称,该名称必须在advertised.listeners列表中
四、Kafka生产与消费
-
查看zookeeper状态正常并启动kafka
zkServer.sh status kafka-server-start.sh -daemon /opt/kafka_2.12-1.0.2/config/server.properties
-
kafka-topics.sh 主题管理
#列出现有的主题 kafka-topics.sh --list --zookeeper localhost:2181/myKafka #创建主题,该主题包含一个分区,分区为Leader分区,它没有Follower分区副本 kafka-topics.sh --zookeeper localhost:2181/myKafka --create --topic topic_1 --partitions 1 --replication-factor 1 #查看分区信息 kafka-topics.sh --zookeeper localhost:2181/myKafka --list #查看指定主题的详细信息 kafka-topics.sh --zookeeper localhost:2181/myKafka --describe --topic topic_1 #删除指定主题 kafka-topics.sh --zookeeper localhost:2181/myKafka --delete --topic topic_1
-
kafka-console-producer.sh 生产消息
#开启生产者, 就可以输入消息了 kafka-console-producer.sh --topic topic_1 --broker-list localhost:9092
-
kafka-console-consumer.sh 消费消息
#开启消费者方式一,按照偏移量消费 kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic_1 #开启消费者方式二,从头消费,不按照偏移量消费 kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic_1 --from-beginning
问题:Will not attempt to authenticate using SASL (unknown error)
解决:进入zookeeper的conf目录的zoo.cfg追加zookeeper.client.sasl=falsevim zoo.cfg zookeeper.client.sasl=false