zookeeper SASL 认证错误排除

1.现象:预发布环境zookeeper频繁的抛出 {0={error=2018-03-08 13:40:34 318 INFO [http-bio-8080-exec-8-SendThread(172.31.0.3:2181)] org.apache.zookeeper.ClientCnxn - Opening socket connection to server 172.31.0.3/172.31.0.3:2181. Will not attempt to authenticate using SASL (unknown error)}
}  这个错误,但是服务却可以正常使用。


2.出现原因:zookeeper是一个外部应用,当它放到tomcat、jBoss、netty等容器里边,当有zk client 调用zk server 的时候需要通过容器向系统申请资源,就会默认要使用sasl。如果没有在这套安全模式里面给zookeeper做配置,在调用的时候就会抛出上述错误。


3.解决思路:通过2的描述,有两种解决思路:一种是给zookeeper做安全配置,一种就是让zookeeper绕过sasl安全机制,直接向系统获取资源。

通过这两个思路进行搜索,发现第一种比较复杂,结合我们的业务场景也没有必要添加验证。

在针对第二种思路进行搜索,在apache bug管理官网发现有相应的描述:https://issues.apache.org/jira/browse/ZOOKEEPER-1657

通过官网发现,在zookeeper 3.4.5之前,sasl认证是没有办法规避的,在3.4.6版本后修复了这个bug,因为不停的去检测认证虽然对功能没有什么影响,但是比较耗费服务器性能,比较占用容器资源。


4.解决:zookeeper 3.4.6之后,在创建zk连接之前可以通过设置系统参数(zookeeper.client.sasl)为false来禁用sasl认证。

你可能感兴趣的:(zookeeper SASL 认证错误排除)