Kafka运维总结
ERROR Fatal error during KafkaServer startup.Configured zookeeper.connect may be wrong
检查一下kafka配置文件 config/server.properties
zookeeper.connect=bigdata111:2181, bigdata112:2181, bigdata113:2181
去zookeeper中
进入zk的客户端中查看kafka的节点
ls /brokers/ids
如果此时kafka没起来 ids下有【0,1,2,…】
说明节点被占用了
****kafka启动细节点:****
Kafka在启动时,每个kafka都会去zookeeper上面的节点注册
Kafka正常关闭的情况下,会将zookeeper上面注册的节点删除掉
Kafka下次启动还会去重新注册,重新注册发现节点已被注册,导致无法开启
解决方案:
删除这些节点
delete /brokers/ids
再次查看zookeeper 客户端的节点情况
ls /brokers/ids
分析上述问题出现情况:
1、 关闭集群时是直接关机,或是没按正常流程关闭
2、 卸载kafka时,残留的节点信息,未清除
kafka.common.KafkaException: DelegationToken not a valid resourceType name.
因为使用java客户端 spring-kafka是 2.12的版本,服务器broker是 2.11 的版本,进行操作broker时,在 zookeeper中创建 /kafka-acl/DelegationToken 节点,导致服务启不来,解决办法是 java客户制成与 broker版本一致 , 删除 zk 中的 /kafka-acl/DelegationToken , 就可以正常启动
kafka重装时,需要在zookeeper删除元数据信息
需要使用 bin/zkCli.sh
命令进入zookeeper,然后使用 rmr
命令删除以下内容即可
admin:删除的topic
brokers :集群节点信息,topic信息
cluster:kafka集群信息
config:配置信息
consumers:消费者信息
controller_epoch:集群经过了多少次controller选取
isr_change_notification
kafka-acl
kafka-acl-changes
kafka-acl-extended
kafka-acl-extended-changes
latest_producer_id_block
log_dir_event_notification
producer:生产者信息
controller:控制节点的broker.id
broker中的topic损坏需要重建
//备份
mkdir bak
mkdir bak/202006001pecuheart-0
mkdir bak/202006001pecuheart-1
mkdir bak/202006001pecuheart-2
cp -r kafka-logs/202006001pecuheart-0/ bak/
cp -r kafka-logs/202006001pecuheart-1/ bak/
cp -r kafka-logs/202006001pecuheart-2/ bak/
//删除kafka正在处理数据的topic
rm -rf 202006001pecuheart-0
rm -rf 202006001pecuheart-1
rm -rf 202006001pecuheart-2
//删除kafka在zk上存的节点
bin/zkCli.sh -server bigdata111:2181
ls /brokers/topics
rmr /brokers/topics/202006001pecuheart
//重建topic
bin/kafka-topics.sh --zookeeper bigdata111:2181, bigdata112:2181, bigdata113:2181 --create --replication-factor 3 --partitions 3 --topic 202006001pecuheart