今天版本已提测,有些空余时间可以拿到折腾,刚好手里有一台云服务器,最近也温习了下zk+kafka的相关资料,于是决定动手搭一套zk集群+kafka集群,毕竟只有一台机器,可以理解是个伪集群,但搭建的方式是差不多的。
软件准备
JDK 8
下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
Zookeeper
下载地址:https://archive.apache.org/dist/zookeeper/
选了一个比较新的版本,3.4.10
Kafka
下载地址:http://kafka.apache.org/downloads
选了一个比较老的版本,0.11.0.3 (随意选的)
软件安装
JDK 8
很简单,下载后解压到指定目录(建议放在/usr/local/目录下),然后配置下环境变量。
解压命令:tar zxvf xxxx.tar.gz
配置生效命令:source /etc/profile
Zookeeper集群搭建
因为kafka依赖zookeeper,所以先搭建zookeeper。
解压下载的压缩包到指定目录,并将解压目录复制两份,因zk要求>n/2个节点存活才能提供服务,所以至少要部署3个节点,预留1个容错节点。
-
目录结构
zk.png 核心配置1({ZK_HOME}/conf/zoo.cfg)
# 数据和日志目录
dataDir=/usr/local/zookeeper/zookeeper-3.4.10/data
dataLogDir=/usr/local/zookeeper/zookeeper-3.4.10/logs
# 端口
clientPort=2181
#设置集群的服务id,myid文件中的数字
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
- 核心配置2 (${dataDir}/myid)
# 比如server.1的则为1
${serverId}
- 启动&校验
启动:
${ZK_HOME}/bin/zkServer.sh start
校验:
ps -ef | grep "zookeeper" (查看进程是否起来) 或者 netstat -anp | grep "${port}" (查看端口号是否绑定)
查看状态:
${ZK_HOME}/bin/zkServer.sh status
停止:
${ZK_HOME}/bin/zkServer.sh stop
KafKa集群搭建
kafka自带zookeeper,这里我们不使用自带的,解压和复制步骤同zookeeper。
-
目录结构
kafka.png - 核心配置(${KAFKA_HOME}/config/server.properties)
# broker id
broker.id=1
# 内网访问,${port}需修改
listeners=PLAINTEXT://0.0.0.0:${port}
# 提供给外网访问,优先级高于listeners配置,${IP}${port}需要根据真实IP修改
advertised.listeners=PLAINTEXT://${IP}:${port}
# zookeeper集群
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
# 日志目录
log.dirs=/tmp/kafka-logs1
- 启动&校验
启动:
.${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${${KAFKA_HOME}}/config/server.properties
校验:
ps -ef | grep "kafka" (查看进程是否起来) 或者 netstat -anp | grep "${port}" (查看端口号是否绑定)
停止:
.${KAFKA_HOME}/bin/kafka-server-stop.sh
- 官网文档地址
Java Client访问
框架:spring boot + kafka
本来自己新建了一个项目引入了spring-boot相关jar包,结果启动出现了部分兼容性问题,为节约时间,直接在github上拿了一个小哥哥的项目验证,顺带贴下他的文章地址:https://blog.csdn.net/C1041067258/article/details/90721545,改下配置就能启动。
结尾彩带
推荐几个软件
kafka GUI:kafka tool
zookeeper GUI:idea插件zoolytic