三台服务器配置简易Kafka集群+debug记录

使用了3台阿里云服务器做实验,搭建kafka集群,可以通过java程序生产消息到云服务器。中途遇到许多问题,仅在此记录一些配置信息,安装过程省略。

服务器信息#

host name 私网IP 公网IP
server001 172.24.16.132 60.205.217.197
server002 172.17.67.38 59.110.155.165
server003 172.22.192.85 60.205.221.167

host name需要自己修改

注意:2181端口以及9092端口一定要开放,先telnet端口进行连接测试

hosts配置#

格式为:私网IP host.name

172.24.16.132 server001
172.17.67.38 server002
172.22.192.85 server003

Zookeeper配置#

配置过程略去,此处仅提供zookeeper/conf/zoo.cfg文件的配置:

server.1=server001:2888:3888
server.2=server002:2888:3888
server.3=server003:2888:3888

Kafka配置#

server.properties

#其他两台为1、2
broker.id=0

#listeners=PLAINTEXT://本机的私网IP:9092
listeners=PLAINTEXT://172.24.16.132:9092

#advertised.listeners=PLAINTEXT://本机的公网IP:9092
advertised.listeners=PLAINTEXT://60.205.217.197:9092

#主机名:2181
zookeeper.connect=server001:2181,server002:2181,server003:2181

delete.topic.enable=true

producer.properties以及consumer.properties

#添加bootsraps.servers,此处填写公网IP
bootstrap.servers=60.205.217.197:9092,59.110.155.165:9092,60.205.221.167:9092

配置文件修改完成后在server001创建生产者,server002创建消费者进行测试:

连接成功。

其他问题debug过程#

1 kafka启动后自动关闭#

查看kafka/logs/server.log日志文件中是否有ERROR,可能报的错误:

a. Unable to connect to zookeeper server within timeout: 6000

→检查端口是否开放

→我的情况:之前配置kafka时zookeeper.connect设置为公网IP,报了这个错误。

改为私网IP后产生了新的错误:

b. Socket server failed to bind to 公网IP:9092: Cannot assign requested address.

之前server.properties中没有写listeners,遂添加

listeners=PLAINTEXT://本机私网IP:9092

kafka可以正常启动。

!!也可能是因为服务器内存过低,导致kafka无法正常运行。

2 topic中leader为-1#

解决办法:手动指定leader。

进入zookeeper:

zookeeper/bin/zkCli.sh -server server001:2181

查看topic信息:

get /brokers/topics/test-topic2/partitions/0/state

修改leader:

set /brokers/topics/test-topic2/partitions/0/state {"controller_epoch":25,"leader":2,"version":1,"leader_epoch":20,"isr":[2]}

最后重启kafka服务。

3 命令行创建生产者消费者时失败#

报错:Error while fetching metadata with correlation id : {LEADER_NOT_AVAILABLE}

说明配置中listener等不正确,我的情况是服务器端口没有开放,导致连接不了。

posted @   rthete  阅读(129)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
主题色彩
点击右上角即可分享
微信分享提示