Kafka生产连接失败
在使用Kafka时,我们有时候会遇到生产时连接Kafka失败的情况,原因及解决办法如下:
1. Kafka服务异常
通过FusionInsight Manager页面,选择“集群->Kafka”,查看当前Kafka集群当前状态,状态是否是良好;如果状态不是良好,说明Kafka服务异常。
2. 生产命令错误
如果使用21005端口,命令如下:
kafka-console-producer.sh --broker-list Kafka业务IP:21005 --topic topicName
如果使用21007端口,命令如下:
kafka-console-producer.sh --broker-list Kafka业务IP:21005 --topic topicName -- --producer.config ../config/producer.properties
其中,producer.properties中的security.protocol必须是SASL_PLAINTEXT。
如果使用21007端口,security.protocol必须是SASL_PLAINTEXT,Kafka服务端配置ssl.mode.enable必须是true。
3. 无权限
如果使用21005端口生产,查看“allow.everyone.if.no.acl.found”参数是否为“ture”,如果不是true,修改为true后保存重启。
如果使用21007端口生产,如果连接提示中有“TOPIC_AUTHORIZATION_FAILED”或“Not authorized to access topic”信息,说明无消费的topic的权限。执行klist查看用户名,执行id -Gn 用户名,确定该用户名的属组,如果id -Gn命令执行失败,可能sssd服务异常,可使用“systemctl start sssd”重启进程。如果属组中无kafkaadmin或supergroup或kafka,说明用户没有配置kafka角色,需添加kafka角色信息;如果只有kafka,需要查看该用户是否有topic的生产权限,查看命令如下:
kafka-acls.sh --authorizer-properties zookeeper.connect=zk业务IP:24002/kafka --list --topic topicName
如果没有配置,需添加此用户权限信息或此用户加入kafkaadmin组。添加生产权限信息命令如下:
kafka-acls.sh --authorizer-properties zookeeper.connect= zk业务IP:24002/kafka --topic topicName --producer --add --allow-principal User:用户名
4. Kafka配置中version配置错误
通过FusionInsight Manager页面,选择“集群->Kafka->配置->全部配置”中搜“version”,查看如下version配置:
651X版本对应的是1.1-IV0,C80对应版本是0.11.0-IV2,C70对应版本是0.10-IV1。如果配置不对,修改为对应配置后保存并重启Kafka所有实例。
5. Kafka端口不可用
执行netstat -anp|grep 端口号查看端口是否有监听或者连接,如果有,在生产的客户端执行ssh -v -p 21005 IP,查看连接是否成功,如果报“Connection timeout”说明客户端不可访问服务端的端口,服务端需对客户端开放访问端口权限。
6. 网络异常
检查网络是否正常方法如下:
Ø 使用ping命令查看是否有网络丢包,ping -s 15000 IP,如果网络延迟大于5ms,说明网络延迟高。
Ø 使用scp从客户端传输一个大文件到kafka服务侧节点,查看传输速率。
7. 如果是集群外客户端连接失败,还可以通过集群内客户端测试下生产是否成功,进一步减小排查方向。
- 点赞
- 收藏
- 关注作者
评论(0)