将zookeeper压缩包及kafka压缩包上传至服务器
zookeeper的安装需要依赖jdk,所以需要先安装jdk(下面提供环境变量配置,jdk安装包自行下载)
JDK配置Linux环境变量
编辑profile文件
vim /etc/profile
在末尾加入以下内容
#java environment
JAVA_HOME=/app/jdk1.8.0_301
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH说明:JAVA_HOME对应jdk的安装目录
刷新配置文件使环境变量生效
source /etc/profile
zookeeper与kafka也可在linux中直接下载,进入app目录下(没有就创建)
一、zookeeper集群服务搭建
1.下载zookeeper压缩包
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
2.解压
tar -zxvf zookeeper-3.4.8.tar.gz
说明:将zookeeper压缩包解压到当前目录下
3.创建数据目录
cd /app/zookeeper-3.4.8
mkdir data说明:此目录在配置zookeeper服务配置文件时会用到
4.修改配置
cp conf/zoo_sample.cfg conf/zoo.cfg
vim conf/zoo.cfg说明:复制一份文件,修改复制的文件(防止修改错误导致配置文件损坏)
说明:编辑复制后的配置文件
修改数据文件目录
dataDir=/app/zookeeper-3.4.8/data
说明:对应你创建的data目录
在末尾新增集群配置
server.1=ip1:2288:3388
server.2=ip2:2288:3388
server.3=ip3:2288:3388
5.创建记录id文件
vim /app/zookeeper-3.4.8/data/myid
说明:创建一个myid文件,编辑其中内容
内容:1(当前服务器ip为ip1)
内容:2(当前服务器ip为ip2)
内容:3(当前服务器ip为ip3)
在ip1、ip2、ip3服务其中依次执行上述命令
6、开放端口(ip1、ip2、ip3都需要执行)
firewall-cmd --zone=public --add-port=2181/tcp --permanent
说明:防火墙开放2181端口
firewall-cmd --zone=public --add-port=2288/tcp --permanent说明:防火墙开放2288端口
firewall-cmd --zone=public --add-port=3388/tcp --permanent说明:防火墙开放3388端口
firewall-cmd --reload说明:重新启动防火墙
firewall-cmd --list-ports说明:查看服务器开放的端口列表
出现上面三个端口即开放成功
7、启动验证zookeeper启动
进入zookeeper-3.4.8/bin目录下
sh zkServer.sh start /app/zookeeper-3.4.8/conf/zoo.cfg
说明:使用bin目录下的zkServer.sh脚本启动、/app/zookeeper-3.4.8/conf/zoo.cfg含义表示使zookeeper读取我们定义的配置文件
sh zkServer.sh status /app/zookeeper-3.4.8/conf/zoo.cfg说明:查看zookeeper启动的状态
我的三个服务器显示如下
二、kafka集群搭建
1.若无压缩包,执行下方命令下载
依然在/app目录下操作
wget https://archive.apache.org/dist/kafka/2.2.0/kafka_2.12-2.2.0.tgz
2.解压
tar -zxvf kafka_2.12-2.2.0.tgz
cd /app/kafka_2.12-2.2.0
mkdir data
说明:进入/app/kafka_2.12-2.2.0目录下创建data文件夹
3.修改配置
cd /app/kafka_2.12-2.2.0/config
说明:进入kafka下方的config包
cp server.properties server.properties.bak
说明:跟上方zookeeper一样,备份一份依赖防止修改出错
ip1、ip2、ip3服务器分别执行上述命令
4.ip1服务器修改配置(下方配置三台服务器会略有不同,以红色注释标识)
vim server.properties
配置内容如下(将下方配置覆盖原先文件内容即可)
# ip1服务器代理id(ip2服务器上的配置改为2,ip3服务器上的配置改为3)
broker.id=1
# 对应本机服务器ip1地址(若为ip2,只需将ip修改即可,ip3同理)
listeners=PLAINTEXT://ip1:9092# 对应本机服务器ip1地址(若为ip2,只需将ip修改即可,ip3同理)
advertised.listeners=PLAINTEXT://ip1:9092
port=9092# 对应本机服务器ip1地址(若为ip2,只需将ip修改即可,ip3同理)
host.name=ip1.125
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/app/kafka/data
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=24
log.retention.bytes=1073741824
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000# 此处修改为集群服务器的ip即可(下方这一条配置,三台服务器上配置内容一样)
zookeeper.connect=ip1:2181,ip2:2181,ip3:2181
zookeeper.connection.timeout.ms=6000
auto.create.topics.enable = false
delete.topic.enable=true
message.max.byte=52428880
log.cleanup.policy=delete
log.segment.delete.delay.ms=0
group.initial.rebalance.delay.ms=0
5、防火墙开放端口 (ip1、ip2、ip3依次执行)
firewall-cmd --zone=public --add-port=9092/tcp --permanent
说明:开放9092端口号
firewall-cmd --reload
说明:重启防火墙,使开放端口生效
firewall-cmd --list-ports
说明:查看防火墙开放端口列表,下方截图增加了9092端口
6、启动kafka
cd /app/kafka_2.12-2.2.0/bin
说明:进入kafka下方的bin目录下
sh kafka-server-start.sh /app/kafka_2.12-2.2.0/config/server.properties
说明:启动kafka,/app/kafka_2.12-2.2.0/config/server.properties表示指向我们自定义的服务配置 ;(此命令为前台启动,ctrl+c或者窗口关闭,kafka服务将关闭)
sh kafka-server-start.sh -daemon /app/kafka_2.12-2.2.0/config/server.properties
说明:此命令为后台启动 (ctrl+c或者窗口关闭,kafka服务不会关闭)
7、测试验证kafka集群创建topic
进入kafka安装的根目录
bin/kafka-topics.sh --create --zookeeper ip1:2181,ip2:2181,ip3:2181 --replication-factor 1 --partitions 1 --topic topic名称
查看topic
bin/kafka-topics.sh --list --zookeeper localhost:2181
kafka向ip1发送消息
bin/kafka-console-producer.sh --broker-list ip1:9092 --topic topic名称
ip1消费消息
bin/kafka-console-consumer.sh --bootstrap-server ip1:9092 --from-beginning --topic topic名称