IDEA连接不上zookeeper,报连接超时

首先报错信息如下

Opening socket connection to server XXX/XXX:2181. Will not attempt to authenticate using SASL (unknown error)
WARN [org.apache.zookeeper.ClientCnxn] - Client session timed out, have not heard from server in 9329ms for sessionid 0x0
INFO [org.apache.zookeeper.ClientCnxn] - Client session timed out, have not heard from server in 9329ms for sessionid 0x0, closing socket connection and attempting reconnect

可能出现这种情况的原因

1、如果是阿里云,看下端口是不是没有开放。
2、看下防火墙有没有开放端口,不建议直接关闭防火墙,生产环境哪有让你关防火墙的操作。
3、服务器上布置的代码版本和IDEA导入的版本是否一致。
4、你的服务器上的zookeeper是不是正常启动了,没有报错。

1、如果以上原因都排除了,那看下你用的版本是不是3.4.5及之前的版本。
如果是那原因可能是Will not attempt to authenticate using SASL (unknown error),这个错误导致的一直连接不上。
2、出现原因:zookeeper是一个外部应用,当它放到tomcat、jBoss、netty等容器里边,当有zk client 调用zk server 的时候需要通过容器向系统申请资源,就会默认要使用sasl。如果没有在这套安全模式里面给zookeeper做配置,在调用的时候就会抛出上述错误。
3、解决思路:通过出现的原因,有两种解决思路:一种是给zookeeper做安全配置,一种就是让zookeeper绕过sasl安全机制,直接向系统获取资源。
通过这两个思路进行搜索,发现第一种比较复杂。
4、在针对第二种思路进行搜索,在apache bug管理官网发现有相应的描述:https://issues.apache.org/jira/browse/ZOOKEEPER-1657,通过官网发现,在zookeeper 3.4.5之前,sasl认证是没有办法规避的,在3.4.6版本后修复了这个bug,因为不停的去检测认证虽然对功能没有什么影响,但是比较耗费服务器性能,比较占用容器资源。
5、在创建zk连接之前可以通过设置系统参数(zookeeper.client.sasl)为false来禁用sasl认证。或者System.setProperty(“zookeeper.sasl.client”, “false”);

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤来解决Spring Boot连接不上Zookeeper的问题: 1. 确保在pom.xml文件中添加了正确的Zookeeper依赖项。请检查以下代码片段是否存在于pom.xml文件中: ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.12</version> </dependency> </dependencies> ``` 2. 确保已正确下载并安装了Zookeeper。您可以从Apache官方网站下载Zookeeper二进制文件。请确保下载的版本与pom.xml文件中指定的版本一致。 3. 确保Zookeeper已正确运行。在Windows 10上,您可以按照以下步骤运行Zookeeper: - 解压下载的Zookeeper二进制文件。 - 在解压后的目录中,找到并重命名`zoo_sample.cfg`文件为`zoo.cfg`。 - 打开命令提示符,并导航到Zookeeper的bin目录。 - 运行以下命令启动Zookeeper服务器: ```shell .\zkServer.cmd ``` 4. 检查Spring Boot应用程序的配置文件,确保已正确配置Zookeeper连接参数。您可以在`application.properties`或`application.yml`文件中添加以下配置: ```properties spring.cloud.zookeeper.connect-string=localhost:2181 ``` 5. 检查防火墙设置,确保Zookeeper的端口(默认为2181)未被阻止。 如果您按照上述步骤操作仍然无法连接Zookeeper,请检查网络连接Zookeeper服务器的状态,并确保您的代码没有其他问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值