Centos下安装Zookeeper和Kafka
前言
Zookeeper和Kafka安装练习,ZooKeeper是用Java编写的,运行在Java环境上,因此,在部署zookeeper的机器上需要安装Java运行环境。为了正常运行zookeeper,我们需要JRE1.6或者以上的版本。
一、单机版模式
1、zookeeper安装
(1)这里使用的是 apache-zookeeper-3.5.8-bin.tar.gz 这个版本,如有需要新本可自行下载,下载地址
#在安装插件之前,我会在当前目录/home/nsm下创建一个log文件夹,便于以后其它插件日志都存在该文件夹下,寻找方便
mkdir /home/nsm/all-logs/zookeeper
#在目录/home/nsm下,解压压缩包
tar -xvf apache-zookeeper-3.5.8-bin.tar.gz
(2)进入到config下,查看该文件夹下是否有zoo.cfg文件,若没有则创建一个,修改配置文件。
#创建一个zoo.cfg文件
cp zoo_sample.cfg zoo.cfg
(3)修改完毕后,保存 :wq 退出。
(4)启动zookeeper,在bin目录下,后台启动zookeeper服务。
报错一:若出现启动失败情况,这里未截图,情况为 FAILER TO STARTED,那么进入到/home/nsm/all-logs/zookeeper下,将该目录下的所有日志全部删除。
原因:可能是zookeeper异常关闭时,日志记录就会出现异常,所以会把当时的情况记录到该目录下的日志中,重新启动zookeeper时此文件会对启动造成影响。
2、Kafka安装
(1)Kafka的前置依赖组件为zookeeper,因此须先安装部署zookeeper后在安装部署kafka,这里使用的是 kafka_2.12-2.5.0.tar.gz 这个版本,如有需要新本可自行下载,下载地址
#在/home/nsm/all-logs目录下创建一个文件夹
mkdir /home/nsm/all-logs/kafka
#在/home/nsm/下解压压缩包
tar -xvf kafka_2.12-2.5.0.tar.gz
#在/home/nsm/kafka_2.12-2.5.0/config目录下编辑server.properties文件
vim server.properties
#以下内容需要修改
broker.id=0
log.dir=/home/nsm/all-logs/kafka ## 统一管理日志的地方
zookeeper.connect=192.40.10.189:2181 ## 即安装启动的zookeeper地址
#可选择性修改配置文件如下内容,若配置文件中没有则添加
num.network.threads =4 ## broker处理消息的最大线程数,一般情况下数量为cpu核数
num.io.threads =8 ## broker处理磁盘IO的线程数,数值一般为cpu核数2倍
auto.create.topics.enable =true ## 是否允许自动创建topic,若是false,就需要通过命令创建topic
#添加配置内容:
listeners=PLAINTEXT\://192.40.10.88\:6667
port=6667 ## 服务端端口
(2)启动kafka,进入到kafka的bin目录
#启动kafka
./kafka-server-start.sh ../config/server.properties
报错一:出现以下错误说明zookeeper未启动。
解决方法:启动zookeeper后在启kafka。
报错二:启动kafka时出现以下情况。
原因:kafka配置日志路径,用来保存执行过程中的各种信息,当kafka异常关闭时,日志记录就会出现异常,会把当时的情况记录到meta.properties文件中,重新启动时此文件会对启动造成影响,kafka重启报错的原因就在这里。
解决方法:删除配置文件配置的日志路径的文件,以上配置的路径为 /home/nsm/all-logs/kafka。
二、集群版安装
在具有java环境的前提下,我们来部署kafka的集群环境。使用的kafka版本,kafka_2.13-2.8.0.tgz,需要其它版本的往上走点击提供的下载地址。
2.1 准备3个环境
192.168.3.85、192.168.3.86、192.168.3.87
2.2 解压并重命名
tar -xvf kafka_2.13-2.8.0.tgz
mv kafka_2.13-2.8.0 /usr/kafka
2.3 hosts添加映射
vi /etc/hosts
# 添加以下参数映射
192.168.3.85 kafka1
192.168.3.86 kafka2
192.168.3.87 kafka3
2.4 zookeeper.properties 配置
(1)进入到 /usr/kafka/config 目录下,修改 zookeeper.properties 配置文件。
# 添加如下参数,存在的参数不需要重复添加
# zookeeper 数据存放位置
dataDir=/tmp/zookeeper
clientPort=2181
maxClientCnxns=60
tickTime=2000
initLimit=10
syncLimit=5
# 集群映射
server.1=kafka1:2888:3888
server.2=kafka2:2888:3888
server.3=kafka3:2888:3888
(2)进入到 /tmp/zookeeper 目录下,创建一个myid文件,并设置一个值,在其它的节点中设置时类似,但不能设置为同一个数字,可在/tmp/zookeeper下直接执行以下一条命令。
192.168.3.85中执行: echo 1 > myid
192.168.3.86中执行: echo 2 > myid
192.168.3.87中执行: echo 3 > myid
2.5 server.properties 配置
(1)需要修改以下内容
# kafka的id,唯一值,每个节点的这个参数不能一样
broker.id=0
# 访问地址修改为自己的
host.name=192.168.3.85
listeners=PLAINTEXT://192.168.3.85:9092
advertised.listeners=PLAINTEXT://192.168.3.85:9092
log.dirs=/tmp/kafka-logs/kafka
# zookeeper的连接地址
zookeeper.connect=192.168.3.85:2181,192.168.3.86:2181,192.168.3.87:2181
(2)修改完后将kafka整个文件夹拷贝到其它两个节点中,其它的两个节点需要重复 2.3 、 2.4 和 2.5 的操作。
2.6 启动zookeeper集群
(1)通过命令执行,切换到 /usr/kafka 目录下,每个节点都需要启动,刚开始启动时会报错,因为在推选主节点。
直接启动:./bin/zookeeper-server-start.sh ./config/zookeeper.properties
后台启动:./bin/zookeeper-server-start.sh -daemon ./config/zookeeper.properties
&号启动:./bin/zookeeper-server-start.sh ./config/zookeeper.properties &
2.7 启动kafka集群
(1)通过命令启动kafka集群,每个节点都需要启动。
直接启动:./bin/kafka-server-start.sh ./config/kafka.properties
后台启动(常用):./bin/kafka-server-start.sh -daemon ./config/kafka.properties
&号启动:./bin/kafka-server-start.sh ./config/kafka.properties &
2.8 测试
(1)创建生产者
./bin/kafka-console-producer.sh --broker-list 192.168.3.85:9092 --topic test
(2)创建消费者
./bin/kafka-console-consumer.sh --bootstrap-server 192.168.3.85:9092 --topic test --from-beginning
(3)topic 创建
./bin/kafka-topics.sh --create --zookeeper 192.168.3.85:2181 --replication-factor 1 --partitions 2 --topic test
(4)topic 删除
./bin/kafka-topics.sh --delete --topic test6 --zookeeper 192.168.3.85:2181
(5)topic 查看
./bin/kafka-topics.sh --list --zookeeper 192.168.3.85:2181
(6)偏移量查询
./bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.3.85:9092 --topic test --time -1
(7)查看所有分组
./bin/kafka-consumer-groups.sh --bootstrap-server 192.168.3.85:9092 --list
(8)查看消费情况
./bin/kafka-consumer-groups.sh --describe --bootstrap-server 192.168.3.85:9092 --group test
2.9 添加安全认证
看看另一篇文章: https://blog.csdn.net/qq_42057890/article/details/117564848?spm=1001.2014.3001.5501
三、独立安装zookeeper集群
3.1 下载安装包
我使用的版本为 apache-zookeeper-3.6.3-bin.tar.gz,大家可以根据上面提供的官网地址访问选择最新最稳定的版本使用。
3.2 准备3个环境
192.168.3.85、192.168.3.86、192.168.3.87
3.3 hosts添加映射
vi /etc/hosts
# 添加以下参数映射
192.168.3.85 kafka1
192.168.3.86 kafka2
192.168.3.87 kafka3
3.4 解压并重命名
tar -xvf apache-zookeeper-3.6.3-bin.tar.gz
mv apache-zookeeper-3.6.3-bin /usr/zookeeper
3.5 zoo.cfg 配置
# 进入到 /usr/zookeeper/conf 目录下
cd /usr/zookeeper/conf/
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
# 需要有如下配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
server.1=kafka1:2888:3888
server.2=kafka2:2888:3888
server.3=kafka3:2888:3888
进入到 /tmp/zookeeper 目录下,创建一个myid文件,并设置一个值,在其它的节点中设置时类似,但不能设置为同一个数字,可在/tmp/zookeeper下直接执行以下一条命令。
192.168.3.85中执行: echo 1 > myid
192.168.3.86中执行: echo 2 > myid
192.168.3.87中执行: echo 3 > myid
3.6 zoo.cfg 启动
# 进入bin目录
cd /usr/zookeeper/bin/
# 启动zk
./zkServer.sh start
# 查看状态
./zkServer.sh status
# 停止zk
./zkServer.sh stop
总结