赞
踩
因项目需求要使用kafka实现消息队列,从零开始学习安装。
Zookeeper是一个分布式的协调服务,主要用于维护集群的元数据信息和配置信息。Kafka集群依赖于Zookeeper来存储和管理Kafka的元数据信息和配置信息。
从官网https://dlcdn.apache.org/zookeeper/
上下载,这里选择3.7.0版本。
PS: zookeeper从3.5.5开始,带有bin名称的包才是编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包,无法直接使用。
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
zoo_sample.cfg
,重命名为zoo.cfg,作为zookeeper配置文件tickTime=2000 #session的会话时间 以ms为单位
initLimit=10 #服务器启动以后,master和slave通讯的时间
syncLimit=5 #master和slave之间的心跳检测时间,检测slave是否存活
dataDir=/tmp/zookeeper #保存zk的快照和数据,自行指定
clientPort=2181 #客户端访问zk的端口
# 在末尾添加
#2888是数据同步和消息传递端口,3888是选举端口
server.1=server1IP:2888:3888
server.2=server2IP:2888:3888
server.3=server3IP:2888:3888
echo 1>>dataDir/myid
bin/zkServer.sh start
bin/zkServer.sh status
n/2+1=m
, m必须大于部署zk机器数的一半n/2
可用时才认为集群可用,而且奇数台更节省资源2/2+1=2 一台不能坏
3/2+1=2 可以坏掉一台
4/2+1=3 只能坏一台
5/2+1=3 可以坏2台
从官网https://kafka.apache.org/downloads
上下载,这里选择 kafka_2.13-3.1.0.tgz
版本。
tar -zxvf kafka_2.13-3.1.0.tgz
config/server.properties
配置文件#以master节点为例
broker.id=1 # 每台服务器上不同
#listeners = PLAINTEXT://your.host.name:9092
#9092为kafka端口号
listeners=PLAINTEXT://server1IP:9092
host.name=server1IP
#端口号为zookeeper端口号
zookeeper.connect=server1IP:2180,server2IP:2181,server1IP3:2181
#后台运行
bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
#通过jps命令查看是否启动
jps
#jps结果
21938 Kafka
4885 Jps
12326 QuorumPeerMain
bin/kafka-topics.sh --create --bootstrap-server server1IP:9092 --replication-factor 1 --partitions 1 --topic test
bin/kafka-topics.sh --describe --bootstrap-server server1IP:9092 --topic test
#结果
Topic: test TopicId: r5H3D_sAQIGmCSQMaMiYmQ PartitionCount: 1 ReplicationFactor: 1 Configs: segment.bytes=1073741824
Topic: test Partition: 0 Leader: 3 Replicas: 3 Isr: 3
bin/kafka-console-producer.sh --topic test --bootstrap-server server1IP:9092
bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server server1IP:9092
配置文件中listeners一定要配置,否则会导致生产者无法生产及消费者无法消费(请求不到)。
QuorumPeerMain表示zookeeper是否启动,通过jps没有看到的话要重启zookeeper。
重启zookeeper可能遇到端口被占用的情况:
#重启zookeeper
./zkServer.sh restart
#如果遇到重启失败,先看端口是否被占用,root账户下查看,避免看不到某些进程的id
sudo netstat -tunlp
#释放端口重启zookeeper
sudo kill -9 id
./zkServer.sh start
bin/kafka-topics.sh --create --zookeeper server1IP:9092 --replication-factor 1 --partitions 1 --topic test
新版本变为
bin/kafka-topics.sh --create --bootstrap-server server1IP:9092 --replication-factor 1 --partitions 1 --topic test
以上对Kafka的基本安装流程做了介绍,包括了前置安装zookeeper的部分内容。标注了遇到的一些坑,版本一致的前提下按照上述流程操作基本都能成功完成安装。由于上述内容是22年4月完成的,使用新版本的时候可能会有不兼容的操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。