1,错误现象:
service日志正常启动,唯一的问题是没有注册上zookeeper,看service日志,发现如下错误
错误日志
[2019-11-06 02:44:22,894] INFO [ZooKeeper] Initiating client connection, connectString=192.168.1.83:2181,192.168.1.84:2181,192.168.1.85:2181 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@6d2d99fc [2019-11-06 02:44:22,902] INFO [X509Util] Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation [2019-11-06 02:44:22,912] INFO [ClientCnxnSocket] jute.maxbuffer value is 4194304 Bytes [2019-11-06 02:44:22,923] INFO [ClientCnxn] zookeeper.request.timeout value is 0. feature enabled= [2019-11-06 02:44:22,937] INFO [ClientCnxn] Opening socket connection to server 192.168.1.83/192.168.1.83:2181. Will not attempt to authenticate using SASL (unknown error) [2019-11-06 02:44:22,949] INFO [ClientCnxn] Socket connection established, initiating session, client: /10.10.134.11:16505, server: 192.168.1.83/192.168.1.83:2181 [2019-11-06 02:44:22,962] INFO [ClientCnxn] Session establishment complete on server 192.168.1.83/192.168.1.83:2181, sessionid = 0x16e0e76b9c20047, negotiated timeout = 40000 [2019-11-06 02:44:22,975] INFO [ConnectionStateManager] State change: CONNECTED
都是info日志,仔细看,看出来,注册没有成功,链接超时了
尤其是这一句
Opening socket connection to server 192.168.1.83/192.168.1.83:2181. Will not attempt to authenticate using SASL (unknown error)
2,问题分析
1) 因为这一句
Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
一开始怀疑jdk有问题,service依赖的jdk1.8 而zookeeper 3.4.8 应该是1.7的,所以不支持,所以换jdk,但是仍然有问题,最开始搜
2)那就怀疑其他问题了,
Opening socket connection to server 192.168.1.83/192.168.1.83:2181. Will not attempt to authenticate using SASL (unknown error)
那就是跟zookeeper的集群不知什么原因没有建立链接,而且超时了,
参考文章https://stackoverflow.com/questions/29056195/not-attempt-to-authenticate-using-sasl-unknown-error
继续搜索,发现网上有体到maxClientCnxns这个参数的事情,而
默认zookeeper给每个客户端IP使用的连接数为10个,经常会出现连接不够用的情况。修改连接数目前好像只支持zoo.cfg配置文件修改,所以需要zookeeper重启才能生效。
而83机器的zoo.cfg配置中maxClientCnxns=60 根本没有放开
zoo.cfg
# the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60
3)另外得知 service的机器134.11上已经布置了另一台service,应该是连接数被占用满了,另外集群83,84,85上也看到同134.11建立的tcp连接(netstat -an|grep 2181)
3,解决办法
将交易的service服务,布置到另外一台没有任何应用的机器上,启动,成功!
4,总结
这次看zoo.cfg发现两个漏洞
1)maxClientCnxns这个参数没有放开,可以放开,重启zookeeper,考虑到重启zookeeper风险会比重启一个应用的风险大,就没有重启
2)zookeeper.out 文件日志量太大,需要定期清理
5,zoo.cfg 模块分析
zoo.cfg分析
# The number of milliseconds of each tick 单位毫秒,默认3000,可以不配置,不支持系统属性方式配置 参数tickTime用于配置zookeeper中最小时间单元的长度,很多运行时的时间间隔dou'shidoushi 使用tickTime的倍数来表示的 例如:zookeeper的最小超时时间默认为2*tickTime tickTime=2000 # The number of ticks that the initial # synchronization phase can take 表示tickTime值的十倍,用于配置leader服务器等待Follower启动,并完成数据同步的时间。Follower服务器在启动的过程中,会与Leader建立连接并 完成数据的同步,从而确定自己对外提供服务的起始状态,Leader服务器允许Follwer在initLimit时间内完成这个工作,一般不需要关注,如果集群数量太大,同步时间也会太长,担心时间不够,可以适当修改参数 一般不需要调大这个参数 initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement 用于配置Leader服务器和Follwer之间进行心跳检测的最大延迟时间,如果网络质量较低,可以适当调大这个参数 syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. 快照文件的目录 dataDir=/zookeeper/data #事务文件文件的目录 dataLogDir=/zookeeper/log # the port at which the clients will connect 服务器对外端口 clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #默认60 从socket层面限制单个客户端与单台服务器之间的连接并发数,即从IP地址粒度来进行连接数的限制,如果为0,代表不限制 #3.4.0 之前默认为10,3.4.0版本开始变成60 #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #从3.4.0 开始zookeeper提供了支持对历史事务日志和快照数据自动清理的支持,<3 会自动调整到3 #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #单位是小时,跟autopurge.snapRetainCount 配套使用,如果为0,代表不开启定时清理功能 #autopurge.purgeInterval=1 #集群列表 server.1=slave-01:2888:3888 server.2=slave-02:2888:3888 server.3=slave-03:2888:3888
相关推荐
简介 Zookeeper搭建 bin/zkServer.sh start ... Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn) [2020-02-19 14:58:13,672] WARN Session 0x0 for serve
解决Opening socket connection to server 172.31.0.3/172.31.0.3:2181. Will not attempt to authenticate using SASL (unknown error)
在你提供的信息中,“zookeeper注册中心下载”指的是获取ZooKeeper的安装包,这个安装包通常是一个`.war`文件,用于部署在Web服务器上,比如Tomcat。以下是对这一过程的详细说明: 1. **下载ZooKeeper**:首先,你...
3. **清理服务**:在测试环境中,可能需要定期清理Zookeeper中的服务注册信息,此工具能帮助开发者快速完成这一操作,便于重新部署或测试。 4. **调试代码**:在开发过程中,实时查看服务注册和状态变化有助于调试...
在分布式系统中,服务注册与发现是至关重要的一个环节,SpringCloud通过集成不同的注册中心,如Eureka、Consul和Zookeeper,为微服务架构提供了强大的支持。本篇主要聚焦于SpringCloud与Zookeeper的结合,讲解如何...
Dubbo无法访问远程Zookeeper已注册服务的问题解决方案 在使用Dubbo框架时,可能会遇到无法访问远程Zookeeper已注册服务的问题。今天,我们将分享一篇关于Dubbo无法访问远程Zookeeper已注册服务的问题解决方案。 ...
**ZooKeeper 3.4.6:注册中心的安装指南** ZooKeeper是一个高度可靠的分布式协调服务,常被用于管理分布式系统中的命名空间、配置信息以及提供集群同步。在3.4.6版本中,它继续提供稳定性和性能优化。本指南将详细...
在Java环境中,Curator是一个优秀的Zookeeper客户端库,简化了与Zookeeper的交互,包括服务注册与发现。本文将深入探讨如何利用Curator实现这一功能。 首先,Curator提供了一套完整的API来抽象服务注册与发现,包括...
ZooKeeper注册中心安装详细步骤
在压缩包`zookeeperCase`中,可能包含了实现这些功能的Java代码示例,包括创建Zookeeper客户端连接、创建和删除ZNode、监听节点变化、实现分布式锁逻辑以及服务注册和发现的相关类。通过学习和分析这些代码,可以...
1. **服务注册**:每个微服务实例启动时,会将自己的元数据(如服务名、IP地址、端口等)注册到Zookeeper上。这通常通过SpringCloud Zookeeper的客户端实现,服务实例向Zookeeper的指定节点(如/serviceregistry)...
本篇文章将深入探讨Zookeeper在服务注册与订阅中的核心概念和实现机制。 一、Zookeeper服务注册 1. Zookeeper节点模型:Zookeeper的数据结构是一棵树,由节点(ZNode)组成。每个ZNode可以存储数据,并且可以有子...
Zookeeper-3.5.4Windows服务注册包是为了解决在Windows操作系统上部署Zookeeper时,需要手动启动服务的问题而特别设计的。这个注册包允许用户将Zookeeper作为Windows服务来安装,实现自动启动和管理,极大地提高了...
在描述“注册中心 zookeeper-3.4.6”中,关键词“注册中心”揭示了Zookeeper在分布式系统中的核心作用。它作为一个中心化的服务管理平台,能够帮助分布式应用进行服务发现、配置管理、负载均衡等操作。Zookeeper在...
例如,它可以作为微服务架构中的注册中心,帮助服务实例相互发现和通信;也可以用来管理分布式应用的配置,当配置发生变更时,能够实时通知所有相关节点;此外,Zookeeper的分布式锁功能可以解决多节点并发访问同一...
Dubbo作为一个广泛使用的高性能、轻量级的微服务框架,通常选择Zookeeper作为其服务注册中心。Zookeeper不仅能够提供高可用的服务注册与发现功能,还能实现对服务实例的动态管理。 #### 二、Zookeeper简介 ...
Zookeeper作为Dubbo的服务注册中心,可以让服务提供者将服务注册到Zookeeper上,同时服务消费者可以从Zookeeper获取服务提供者的地址信息。 2. **配置Dubbo**:在Dubbo的应用中,需要配置Zookeeper的地址,并指定...
在分布式系统中,服务注册与发现是至关重要的一个环节,它允许服务提供者将自己的服务注册到一个中心化的服务中心,而服务消费者则可以通过这个服务中心来发现并调用所需的服务。本篇将详细介绍如何使用Dubbo结合...
5.2 服务发现:通过ZooKeeper注册和查找服务,实现服务的动态发现和负载均衡。 5.3 配置管理:集中存储和更新分布式系统的配置,保证所有节点同步。 六、ZooKeeper的安全性 6.1 ACL:ZooKeeper提供了基于角色的...