1.下载Kafka安装包
Kafka官网下载地址:https://kafka.apache.org/downloads
2.解压压缩包
tar -zxvf kafka_2.12-3.1.0.tgz -c kafka
3.进入配置文件目录
cd kafka/config
4.配置kafka配置文件
vim server.properties
注:log.dirs文件原本的存储路径在tmp文件夹下,该文夹下数据可能会被清除。所以可以在kafka安装目录下创建一个日志文件夹,将log.dirs修改为日志文件夹全路径。
每台服务器都需要进行如下配置,但broker.id值不能相同,它是全局唯一标识,建议从0开始。
修改配置文件的如下选项:
#broker 的全局唯一编号,不能重复。若有多台服务器,每台的broker.id都应该不同,建议从0开始。在改变IP地址,不改变broker.id的话不会影响consumers
broker.id=0#kafka 运行日志存放的路径#这个log.dir用来存放Kafka的数据,不仅是日志
log.dirs=/home/download/kafka/logs
#配置连接 Zookeeper 集群地址#若有多台或少于3太,可以增加或减少服务器IP:端口号,中间以,分隔
zookeeper.connect=1号服务器IP:2181,2号服务器IP:2181,3号服务器IP:2181
如果是kafka集群,应该增加如下配置,否则消费或生产时候会不成功。集群中每个服务器的server.properties文件都应该加上该配置
新增如下选项:
host.name=本服务器IP
listeners=PLAINTEXT://本服务器IP:9092
dvertised.listeners=PLAINTEXT://本服务器IP:9092
5.启动Zookeeper集群
(1)配置zookeeper配置文件
每台服务器都要进行如下配置:
与kafka日志文件夹一样,在kafka安装目录下创建一个zookeeper的数据存储文件夹,其默认在tmp文件夹下会被清除,所以需要自定义一个路径。将dataDir属性修改为日志文件夹全路径
加上ticktime、initLimit、syncLimit属性,然后指定zookeeper集群中每台服务器的ip:2888:3888
2888端口用于内部选举投票,3888端口用于数据传递和广播
dataDir=/home/download/kafka/zookeeperlogs
# the port at which the clients will connectclientPort=2181# disable the per-ip limit on the number of connections since this is a non-production configmaxClientCnxns=0# Disable the adminserver by default to avoid port conflicts.# Set the port to something non-conflicting if choosing to enable this
admin.enableServer=false
# admin.serverPort=8080tickTime=2000initLimit=5syncLimit=2
server.1=1号服务器IP:2888:3888
server.2=2号服务器IP:2888:3888
server.3=3号服务器IP:2888:3888
(2)在上面创建的zookeeper数据存储文件夹中创建myid文件
进入自己创建的zookeeper日志文件夹
cd /home/download/kafka/zookeeperlogs
创建myid文件
vim myid
第一台服务器输入1,第二台服务器输入2,第三台服务器输入3
查看myid文件确认一下
(3)启动zookeeper
返回kafka安装目录,执行以下命令
./bin/kafka-server-start.sh -daemon config/server.properties
(4)注意事项
启动第一台时查看日志可以发现被拒绝连接。这是由于
ZooKeeper
集群启动的时候,每个节点都试图去连接集群中的其它节点,先启动的肯定连不上后面还没启动的,所以上面日志前面部分的异常是可以忽略的。继续将其他服务器的zookeeper启动,他们会自动选举一个leader,后续也就不会警告拒绝连接了。
[2022-04-1819:36:47,630] WARN Cannotopenchannelto3 at election address /192.168.196.189:3888(org.apache.zookeeper.server.quorum.QuorumCnxManager)java.net.ConnectException: 拒绝连接 (Connection refused)
at java.net.PlainSocketImpl.socketConnect(NativeMethod)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.initiateConnection(QuorumCnxManager.java:383)
at org.apache.zookeeper.server.quorum.QuorumCnxManager$QuorumConnectionReqThread.run(QuorumCnxManager.java:457)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)[2022-04-1819:36:49,230] INFO Notification time out:3200(org.apache.zookeeper.server.quorum.FastLeaderElection)[2022-04-1819:36:49,231] WARN Cannotopenchannelto3 at election address /192.168.196.189:3888(org.apache.zookeeper.server.quorum.QuorumCnxManager)java.net.ConnectException: 拒绝连接 (Connection refused)
at java.net.PlainSocketImpl.socketConnect(NativeMethod)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.initiateConnection(QuorumCnxManager.java:383)
at org.apache.zookeeper.server.quorum.QuorumCnxManager$QuorumConnectionReqThread.run(QuorumCnxManager.java:457)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
6.启动Kafka
(1)切换到启动目录
cd /home/admin/kafka/bin
(2)启动kafka
注:kafka启动前一定要确保zookeeper已经启动,不然会启动失败。
./kafka-server-start.sh -daemon …/config/server.properties
(3)注意事项
若你的服务武器内存太少,kafka启动时可能会报错,显示内存不足。因为其默认启动内存为1G。
修改启动文件
vim kafka-server-start.sh
将该配置修改为 -Xmx256M -Xms256M
版权归原作者 空城旧守i 所有, 如有侵权,请联系我们删除。