使用了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等不正确,我的情况是服务器端口没有开放,导致连接不了。
标签:三台,zookeeper,9092,kafka,2181,IP,debug,Kafka,server From: https://www.cnblogs.com/rthete/p/17553723.html