单机部署
实验环境
将服务压缩包都存放至服务器的/data/install目录中
服务器ip地址 | 服务名称 | 服务版本 | 安装路径 |
192.168.10.100 | JDK | 15.0.1 | /data/install/jdk |
zookeeper | 3.8.0 | /data/zookeeper-3.8.0 | |
kafka | 2.12-3.2.0 | /data/kafka_2.12-3.2.0 |
kafka是依赖于zookeeper服务启动的,zookeeper和kafka都是java服务,需要安装jdk。
一、服务安装包下载地址。
jdk:https://www.jb51.net/softs/691593.html
zookeeper :https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
kafka:Index of /dist/kafka
二、将下载安装包上传至服务器
安装包下载完成后上传至服务器的/data/install目录中后解压
#解压jdk
cd /data/install
tar -zxvf jdk-15.tar.gz
#解压zookeeper
tar -zxvf zookeeper-3.8.0 -C ../
#解压kafka
tar -zxvf kafka_2.12-3.2.0 -C ../
三、设置环境变量(全部shell生效)
编辑/etc/profile文件
vim /etc/profile
#在文件末尾添加以下内容
#java
export JAVA_HOME=/data/install/jdk
#zookeeper
export ZOOKEEPER_HOME=/data/zookeeper-3.8.0
#kafka
export KAFKA_HOME=/data/kafka_2.12-3.2.0
export PATH=$JAVA_HOME/bin:$KAFKA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
保存退出后让环境变量生效
source /etc/profile
检查环境变量是否生效
四、修改zookeeper的配置文件
先将zk的配置文件拷贝为zoo.cfg
cd /data/zookeeper-3.8.0/conf/
cp zoo_sample.cfg zoo.cfg
编辑zoo.cfg的配置文件内容
vim zoo.cfg
#修改数据存放目录
dataDir=/data/zookeeper-3.8.0/data
创建数据存放目录
mkdir /data/zookeeper-3.8.0/data
五、启动zookeeper服务
修改配置文件和创建数据存放目录完成后启动zk服务
zkServer.sh start
启动完成后检查服务器运行状态
ps -ef | grep zookeeper
netstat -anlp | grep 2181
六、修改kafka配置文件
直接修改kafka的配置文件并创建对应的数据存放目录
mkdir /data/kafka_2.12-3.2.0/logs
cd /data/kafka_2.12-3.2.0/
vim config/server.properties
#添加以下内容
listeners=PLAINTEXT://192.168.10.100:9092
advertised.listeners=PLAINTEXT://192.168.10.100:9092
#修改以下内容
log.dirs=/data/kafka_2.12-3.2.0/logs
zookeeper.connect=192.168.10.100:2181
配置文件内容如下
broker.id=0 #集群部署是的节点id
listeners=PLAINTEXT://192.168.10.100:9092 #本机服务器ip
advertised.listeners=PLAINTEXT://192.168.10.100:9092 #本机服务器ip
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=/data/kafka_2.12-3.2.0/data #数据存放目录
num.partitions=1 #集群节点数量
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.10.100:2181 #集群节点ip和端口以逗号隔开
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
七、启动kafka服务
配置文件完成修改后就可以启动kafka了
kafka-server-start.sh config/server.properties &
检查kafka服务启动情况
ps -ef | grep kafka
netstat -anlp | 9092
八、测试
测试kafka搭建是否正常
创建一个topic,其中replication-factor为副本数,partitions为分区数,topic-test为创建的topic名字
kafka-topics.sh --create --bootstrap-server 192.168.10.100:9092 replication-factor 1 --partitions 1 --topic topic-test
查看kafka所有的topic
kafka-topics.sh --list --bootstrap-server 192.168.10.100:9092
可以看到刚才创建的topic了
打开两个shell,一个用于生产着发送消息,一个用于消费着接收消息
生产者
kafka-console-producer.sh --broker-list 192.168.10.100:9092 --topic topic-test
消费者
kafka-console-consumer.sh --bootstrap-server 192.168.10.100:9092 --topic topic-test
至此说明kafka单机部署完成
集群部署
实验环境:在原本单机部署的情况下新增两台服务器当作节点服务器
服务器ip地址 | 192.168.10.100 |
192.168.10.101 | |
192.168.10.102 |
其他服务版本,路径等内容相同。
一、新增两台服务器服务部署
按照单机部署时进行服务下载,上传,解压;设置环境变量;创建数据目录等相同操作。
二、设置10.100的服务配置文件
删除zk和kafka中数据存放目录中的文件
rm -rf /data/zookeeper-3.8.0/data/*
rm -rf /data/kafka_2.12-3.2.0/logs*
编辑zoo.cfg的配置文件内容
cd /data/zookeeper-3.8.0/conf/
vim zoo.cfg
#有修改,新增的内容如下
dataDir=/data/zookeeper-3.8.0/data
#在文件末尾添加以下内容
server.1=192.168.10.100:2888:3888
server.2=192.168.10.101:2888:3888
server.3=192.168.10.102:2888:3888
并且在存放zk的数据目录添加myid内容为1与server.x对应
cd /data/zookeeper-3.8.0/data
echo 1 > myid
编辑kafka的配置文件
cd /data/kafka_2.12-3.2.0/
vim config/server.properties
#添加以下内容
listeners=PLAINTEXT://192.168.10.100:9092 #本机ip地址
advertised.listeners=PLAINTEXT://192.168.10.100:9092 #本机ip地址
#修改以下内容
broker.id=0
num.partitions=3
log.dirs=/data/kafka_2.12-3.2.0/logs
#zookeeper.connect=ip:port,ip:port,ip:port
zookeeper.connect=192.168.10.100:2181,192.168.10.101:2181,192.168.10.102:2181
三、设置10.101的服务配置文件
编辑zoo.cfg的配置文件内容
cd /data/zookeeper-3.8.0/conf/
vim zoo.cfg
#有修改新增的内容如下
dataDir=/data/zookeeper-3.8.0/data
#在文件末尾添加以下内容
server.1=192.168.10.100:2888:3888
server.2=192.168.10.101:2888:3888
server.3=192.168.10.102:2888:3888
并且在存放zk的数据目录添加myid内容为2与server.x对应
cd /data/zookeeper-3.8.0/data
echo 2 > myid
编辑kafka的配置文件
cd /data/kafka_2.12-3.2.0/
vim config/server.properties
#添加以下内容
listeners=PLAINTEXT://192.168.10.101:9092 #本机ip地址
advertised.listeners=PLAINTEXT://192.168.10.101:9092 #本机ip地址
#修改以下内容
broker.id=1
num.partitions=3
log.dirs=/data/kafka_2.12-3.2.0/logs
#zookeeper.connect=ip:port,ip:port,ip:port
zookeeper.connect=192.168.10.100:2181,192.168.10.101:2181,192.168.10.102:2181
四、设置10.102的服务配置文件
编辑zoo.cfg的配置文件内容
cd /data/zookeeper-3.8.0/conf/
vim zoo.cfg
#有修改新增的内容如下
dataDir=/data/zookeeper-3.8.0/data
#在文件末尾添加以下内容
server.1=192.168.10.100:2888:3888
server.2=192.168.10.101:2888:3888
server.3=192.168.10.102:2888:3888
并且在存放zk的数据目录添加myid内容为3与server.x对应
cd /data/zookeeper-3.8.0/data
echo 3 > myid
编辑kafka的配置文件
cd /data/kafka_2.12-3.2.0/
vim config/server.properties
#添加以下内容
listeners=PLAINTEXT://192.168.10.102:9092 #本机ip地址
advertised.listeners=PLAINTEXT://192.168.10.102:9092 #本机ip地址
#修改以下内容
broker.id=2
num.partitions=3
log.dirs=/data/kafka_2.12-3.2.0/logs
#zookeeper.connect=ip:port,ip:port,ip:port
zookeeper.connect=192.168.10.100:2181,192.168.10.101:2181,192.168.10.102:2181
五、关闭防火墙
关闭防火墙,保证服务器之间网络可以连通
开放指定端口
firewall-cmd --add-port=8080/tcp --permanent
重载入添加的端口
firewall-cmd --reload
查看指定端口是否已经开放
firewall-cmd --query-port=8080/tcp
移除指定端口
firewall-cmd --permanent --remove-port=8080/tcp
查询开放的端口列表
firewall-cmd --zone=public --list-ports
查看防火墙状态 systemctl status firewalld
开启防火墙 systemctl start firewalld
关闭防火墙 systemctl stop firewalld
重启防火墙 service firewalld start
六、启动服务
先启动zk服务
按照100,101,102的顺序执行
zkServer.sh start
等待启动完成检查服务启动情况
ps -ef | grep zookeeper
netstat -anlp | grep 2181
查看zk集群状态
zkServer.sh status
登录zk集群查看是否正常
zkCli.sh
ls /
再启动kafka服务
按照100,101,102的顺序执行
cd /data/kafka_2.12-3.2.0/
kafka-server-start.sh config/server.properties &
启动完成查看端口是否正常监听
netstat -anlp | grep 9020
七、测试
测试kafka搭建是否正常,
其中bootstrap-server连接的ip:port可以集群中的任何一个
创建一个topic,其中replication-factor为副本数,partitions为分区数,topic-test为创建的topic名字
kafka-topics.sh --create --bootstrap-server 192.168.10.100:9092 replication-factor 1 --partitions 1 --topic topic-cluster
查看kafka所有的topic
kafka-topics.sh --list --bootstrap-server 192.168.10.100:9092
可以看到刚才创建的topic了
生产者
kafka-console-producer.sh --broker-list 192.168.10.101:9092 --topic topic-cluster
消费者
kafka-console-consumer.sh --bootstrap-server 192.168.10.102:9092 --topic topic-cluster
可以正常生产和消费,至此集群搭建完成。