1、准备
环境准备很重要,尤其是版本对应,如果不注意jdk和kafka的版本,kafka和zookeeper的版本,中间会报一些奇奇怪怪的错。对应准备的版本:
- 三台服务器:
192.168.0.128,192.168.0.129,192.168.0.130
(以下操作均为三台服务器) - kafka:
kafka_2.12-2.3.1
- jdk:
jdk-8u241-linux-x64.tar.gz
- zookeeper:
zookeeper-3.4.14
(kafka有内置的zookeeper,如果不知道zk应该用哪个版本,可以再kafka中查看对应的版本号)。
2、 jdk安装配置
# 下载jdk,解压
tar -zxvf jdk-8u241-linux-x64.tar.gz
# 配置环境变量
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_241
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 配置生效
source /etc/profile
3、 zookeeper集群搭建
# 下载zookeeper-3.4.14.tar.gz,解压
tar -zxvf zookeeper-3.4.14.tar.gz
# 配置环境变量
vi /etc/profile
# zk环境变量
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.14
export PATH=$ZOOKEEPER_HOME/bin:$PATH
# 配置生效
source /etc/profile
修改配置文件zoo.cfg
:
# 修改配置文件 zoo.cfg
vi zookeeper-3.4.14/conf/zoo.cfg
修改zoo.cfg
内容(三台服务器都一样):
tickTime=2000
syncLimit=5
dataDir=/opt/zookeeper-3.4.14/data
clientPort=2181
server.1=192.168.0.128:2888:3888
server.2=192.168.0.129:2888:3888
server.3=192.168.0.130:2888:3888
在dataDir=/opt/zookeeper-3.4.14/data
(上边zoo.cfg
配置的dataDir
路径)下添加myid文件(不能相同,要唯一),这是zookeeper集群互认对方的唯一标识。
192.168.0.128 : echo 1 > /opt/zookeeper-3.4.14/data/myid
192.168.0.129 : echo 2 > /opt/zookeeper-3.4.14/data/myid
192.168.0.130 : echo 3 > /opt/zookeeper-3.4.14/data/myid
查看:
192.168.0.128:
192.168.0.129:
192.168.0.130:
至此安装完成!
启动三台服务器的zookeeper:/opt/zookeeper-3.4.14/bin/zkServer.sh start
查看启动状态:/opt/zookeeper-3.4.14/bin/zkServer.sh status
这样就启动成功了!
4、kafka集群搭建
# 下载 kafka_2.12-2.3.1.tgz,解压
tar -zxvf kafka_2.12-2.3.1.tgz
# 配置环境变量
vi /etc/profile
# kafka环境变量
export KAFKA_HOME=/opt/kafka_2.12-2.3.1
export PATH=$KAFKA_HOME/bin:$PATH
# 配置生效
source /etc/profile
修改配置文件server.properties
:
# 修改配置文件server.properties
vi /opt/kafka_2.12-2.3.1/config/server.properties
修改server.properties
内容:
# 三台服务器都要配置
# 192.168.0.128 为 broker.id=1,192.168.0.129 为 broker.id=2,192.168.0.130 为 broker.id=3
broker.id=1
# 各服务器写各自的ip,128的服务器就写128,129的就写129......
listeners=PLAINTEXT://192.168.0.128:9092
advertised.listeners=PLAINTEXT://192.168.0.128:9092
# log.dirs 路径自己配,单文件夹一定要存在,不会自己生成,如果路径不存在启动会报错。
log.dirs=/opt/kafka_2.12-2.3.1/kafka-data
# topic 允许删除配置
delete.topic.enable=true
# 以下配置三台服务器都一样
zookeeper.connect=localhost:192.168.0.128:2181,192.168.0.129:2181,192.168.0.130:2181
zookeeper.connection.timeout.ms=60000
配置完成,启动kafka集群:bin/kafka-server-start.sh -daemon config/server.properties
,jps 查看,启动成功!
可能会出现的错误:解决
验证:
- 创建一个topic(例如在128的服务器上)
# 在kafka目录下运行:
bin/kafka-console-producer.sh --broker-list 192.168.0.128:9092 --topic ttt
- 运行 producer(在128的服务器上),然后在控制台输入一些消息以发送到服务器。
# 在kafka目录下运行:
bin/kafka-console-producer.sh --broker-list 192.168.0.128:9092 --topic ttt
- Kafka 还有一个命令行consumer(消费者)(在129的服务器上),将消息转储到标准输出。
# 在kafka目录下运行:
bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.128:9092 --topic ttt --from-beginning
成功!