前提条件:
已经安装了 Java 环境(Kafka 是基于 Java 开发的)。
已经有三台独立的服务器(节点),每台服务器相互做地址解析。
一 Java环境部署:
1.1 官网下载jdk
Java下载官网
https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html
1.12 解压jdk到/usr/local/下
tar -xzvf jdk-8u381-linux-x64.tar.gz -C /usr/local
1.13 配置环境变量
vim /etc/profile进入编辑模式后,在末尾加入这段(JAVA_HOME为安装路径,:为分隔作用)
export JAVA_HOME=/usr/local/jdk1.8.0_381
export PATH=$PATH:$JAVA_HOME/bin #将java中bin目录追加到原PATH变量中
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #配置类文件路径
export JRE_HOME=$JAVA_HOME/jre #某些程序需要使用JAVA运行环境
1.14 重新加载配置并测试
source /etc/profile
java -version #出现版本即为成功
1.2 三台节点相互做主机名解析
vim /etc/hosts
192.168.10.110 kafka-110 ##这里映射的主机名可与/etc/hostname中的不同
192.168.10.119 kafka-119
192.168.10.120 kafka-120
###这个文件的作用是进行本地解析:将ip映射到域名或者主机名
当系统需要解析主机名时先访问该文件,主要在局域网且没有可用DNS服务器时使用
二 部署kafka集群步骤:每台节点都进行以下操作
2.1 下载 Kafka:
kafka下载官网
https://kafka.apache.org/downloads
下载需要的 Kafka 版本,命名规则:kafka_Scala版本-kafka版本
2.2 解压 Kafka:
将下载的 Kafka 压缩包解压到每一台服务器上,得到 Kafka 的安装目录。
tar -xvf kafka_2.11-0.10.0.1.tgz -C /opt/
2.3 配置 ZooKeeper:Kafka 集群依赖 ZooKeeper,因此需要配置 ZooKeeper。
2.31 下载 zookeeper-3.5.4-beta.tar.gz,并解压到/opt/
0.1.1前版本必带参数--zookeeper,之后的新版本必带参数--bootstrp-server
zookeeper下载
https://archive.apache.org/dist/zookeeper/
tar -zxvf zookeeper-3.5.4-beta.tar.gz -C /opt/
tips:工作环境中一般解压到/usr/local(/usl/local为标准安装目录,是全局目录所有用户都可访问)
2.32 编辑配置文件
cd /opt/zookeeper-3.5.4-beta/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
tickTime=2000 #定义zk使用基本时间单位(以毫秒为单位)
initLimit=10 #定义leader和follower启动过程中时间限制
syncLimit=5 #定义leader和follower之间的通信时限,规定响应时间
dataDir=/opt/zoo/data #定义zk的数据存储目录
clientPort=2181 #定义zk用于接收客户端连接的端口
maxClientCnxns=500 #定义每个客户端 IP 地址允许建立的最大连接数
server.0=192.168.10.110:2888:3888
server.1=192.168.10.119:2888:3888
server.2=192.168.10.120:2888:3888
#格式:server.<ID>=<hostname>:<peerPort>:<leaderPort>
#hostname:可为/etc/hosts中的ip或主机名 peerPort:服务器之间通信端口 leaderPort:选举leader端口
mkdir -p /opt/zoo/{data,logs}
vim /opt/zoo/data/myid #定义zk节点唯一标识(ID),和配置文件对应
三台机器的myid分别写入0,1,2
2.33 启动zookeeper
cd /opt/zookeeper-3.5.4-beta/bin/
./zkServer.sh start
# 查看启动状态
sh zkServer.sh status
#关闭
./zkServer.sh stop
2.4 配置 Kafka:
2.41修改配置文件
vim /opt/kafka_2.11-0.10.0.1/config/zookeeper.properties
dataDir=/opt/zoo/data
#该目录是zookeeper配置的数据存放目录
vim /opt/kafka_2.11-0.10.0.1/config/server.properties
broker.id=0
#分别为0,1,2
#本机IP(kafka的监听地址和外界连接地址,)
listeners=PLAINTEXT://192.168.10.110:9092
advertised.listeners=PLAINTEXT://192.168.10.110:9092
#listeners提供Broker监听地址和端口,PLAINTEXT:明文协议(无加密)
#端口:这里主要是用于接收来自生产者和消费者的连接请求,和与客户端能建立连接
#zookeeper配置:定义了Kafka Broker用于连接到ZK集群的地址,2181为zk的连接端口
zookeeper.connect=192.168.10.110:2181,192.168.10.119:2181,192.168.10.120:2181
2.5 启动 Kafka:
cd /opt/kafka_2.11-0.10.0.1/bin/
./kafka-server-start.sh -daemon ../config/server.properties
#关闭
./kafka-server-stop.sh
2.6 创建 Topic:
使用 Kafka 提供的 kafka-topics.sh 脚本创建一个 Topic。例如:
/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 6 --topic test
--topic:在消息传递系统中,主题是用于组织和发布消息的逻辑通道,类似微信聊天的窗口
--replication-factor :定义每个分区的副本数(副本可理解为实时数据备份),大于broker一半
--partitions :分区,数据被划分为多个片段,一个片段为一个分区,设置为broker的倍数6.9..
如果显示下面指令,代表创建topic成功
Created topic "test".
2.7 删除 Topic:
#kafka删除
./kafka-topics.sh --delete --topic student --zookeeper 192.168.10.119,192.168.10.110,192.168.10.120
#zk删除
进入zk后:deleteall /brokers/topics/想要删除的主题
2.8 验证集群状态:
使用 Kafka 提供的 kafka-topics.sh 和 kafka-consumer-groups.sh 等脚本查看 Topic 和 Consumer Group 的状态,确保集群正常运行。
#kafka列出创建主题
./kafka-topics.sh --list --zookeeper localhost:2181
#zk列出创建主题
登录到zk:./zkCli.sh -server
ls /brokers/topics ls /brokers/ids
#查分区
./kafka-topics.sh --describe --zookeeper localhost:2181 --topic example_topic
2.9 发送和消费消息: 使用 Kafka 提供的 kafka-console-producer.sh 和 kafka-console-consumer.sh 等脚本测试消息的发送和消费,确保消息在集群中正常流通。
#生产者:命令行要在一行可使用“\”
./kafka-console-producer.sh --broker-list 192.168.10.119:9092,192.168.10.110:9092,192.168.10.120:9092 --topic test
#消费者:
./kafka-console-consumer.sh --bootstrap-server 192.168.10.119:9092,192.168.10.110:9092,192.168.10.120:9092 --topic test --from-beginning
请注意,以上步骤和理解仅供参考,实际部署可能需要根据具体环境和需求进行调整。在生产环境中,还需要考虑安全性、性能调优等方面的配置。在部署前建议仔细阅读 kafka官网文档,并根据需要进行适当的修改和优化。
三 kafka可视化
参考优秀文档kafka可视化
这里注意要在windows上做本地解析:C:\Windows\System32\drivers\etc\hosts
四 遇到问题
其中一台zk起不来:发现是防火墙没关