记录 - Dubbo使用Zookeeper为注册中心添加认证口令时,连接失败的故障
记录 - Dubbo使用Zookeeper为注册中心添加认证口令时,连接失败的故障
- 故障现象
- 配置信息
- Dubbo服务配置
- 报错信息
- 初始化信息
- 报错的重点信息
- 报错信息跟踪
- 解决思路
- 设置超时时间后,ZK正常连接
故障现象
原项目使用zk作为注册中心,连接正常。zk添加口令后,项目连接zk失败。
配置信息
Zookeeper服务版本
Zookeeper version: 3.4.5-1392090
Zookeeper客户端配置
<dependency><groupId>org.apache.curator</groupId><artifactId>curator-x-discovery</artifactId><version>4.0.0</version><exclusions><exclusion><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId></exclusion></exclusions>
</dependency>
<dependency><artifactId>zookeeper</artifactId><groupId>org.apache.zookeeper</groupId><version>3.4.5</version>
</dependency>
dubbo的依赖配置
<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.12</version>
</dependency>
Dubbo服务配置
# 服务端口
server.port=8081
# 服务名称
dubbo.application.name=order-service-consumer
# 配置dubbo注册中心协议类型,用户名,密码信息
dubbo.registry.address=zookeeper://user:dubboPassW0rd@10.10.6.91:2181
报错信息
2021-09-23 10:19:25.881 INFO 3200 --- [ main] org.apache.zookeeper.ZooKeeper : Initiating client connection, **connectString=10.10.6.91:2181 sessionTimeout=60000** watcher=org.apache.curator.ConnectionState@4d3c6593
2021-09-23 10:19:25.907 INFO 3200 --- [ main] o.a.c.f.imps.CuratorFrameworkImpl : Default schema
2021-09-23 10:19:28.910 WARN 3200 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderController': Unsatisfied dependency expressed through field 'orderService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userServiceImpl': Injection of @DubboReference dependencies is failed; nested exception is java.lang.IllegalStateException: zookeeper not connected
2021-09-23 10:19:28.911 INFO 3200 --- [ main] f.a.ReferenceAnnotationBeanPostProcessor : class org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor was destroying!
2021-09-23 10:19:28.914 INFO 3200 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2021-09-23 10:19:28.931 INFO 3200 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-09-23 10:19:28.970 ERROR 3200 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderController': Unsatisfied dependency expressed through field 'orderService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userServiceImpl': Injection of @DubboReference dependencies is failed; nested exception is java.lang.IllegalStateException: zookeeper not connectedat org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:660) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1413) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.8.jar:5.3.8]at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.8.jar:5.3.8]at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.5.2.jar:2.5.2]at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) [spring-boot-2.5.2.jar:2.5.2]at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) [spring-boot-2.5.2.jar:2.5.2]at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) [spring-boot-2.5.2.jar:2.5.2]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) [spring-boot-2.5.2.jar:2.5.2]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) [spring-boot-2.5.2.jar:2.5.2]at com.gck.dubbo.DubboConsumerApplication.main(DubboConsumerApplication.java:16) [classes/:na]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userServiceImpl': Injection of @DubboReference dependencies is failed; nested exception is java.lang.IllegalStateException: zookeeper not connectedat com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.postProcessPropertyValues(AbstractAnnotationBeanPostProcessor.java:149) ~[spring-context-support-1.0.10.jar:na]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1418) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1380) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300) ~[spring-beans-5.3.8.jar:5.3.8]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) ~[spring-beans-5.3.8.jar:5.3.8]... 20 common frames omitted
Caused by: java.lang.IllegalStateException: zookeeper not connectedat org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>(CuratorZookeeperClient.java:84) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter.createZookeeperClient(CuratorZookeeperTransporter.java:26) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.remoting.zookeeper.support.AbstractZookeeperTransporter.connect(AbstractZookeeperTransporter.java:70) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter$Adaptive.connect(ZookeeperTransporter$Adaptive.java) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration.<init>(ZookeeperDynamicConfiguration.java:66) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory.createDynamicConfiguration(ZookeeperDynamicConfigurationFactory.java:37) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.lambda$getDynamicConfiguration$0(AbstractDynamicConfigurationFactory.java:39) ~[dubbo-2.7.12.jar:2.7.12]at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[na:1.8.0_201]at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.getDynamicConfiguration(AbstractDynamicConfigurationFactory.java:39) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.common.config.configcenter.DynamicConfiguration.getDynamicConfiguration(DynamicConfiguration.java:224) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.config.bootstrap.DubboBootstrap.prepareEnvironment(DubboBootstrap.java:1023) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.config.bootstrap.DubboBootstrap.startConfigCenter(DubboBootstrap.java:619) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.config.bootstrap.DubboBootstrap.initialize(DubboBootstrap.java:521) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:244) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:206) ~[dubbo-2.7.12.jar:2.7.12]at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.doGetInjectedBean(ReferenceAnnotationBeanPostProcessor.java:163) ~[dubbo-2.7.12.jar:2.7.12]at com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.getInjectedObject(AbstractAnnotationBeanPostProcessor.java:362) ~[spring-context-support-1.0.10.jar:na]at com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor$AnnotatedFieldElement.inject(AbstractAnnotationBeanPostProcessor.java:542) ~[spring-context-support-1.0.10.jar:na]at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.8.jar:5.3.8]at com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.postProcessPropertyValues(AbstractAnnotationBeanPostProcessor.java:145) ~[spring-context-support-1.0.10.jar:na]... 31 common frames omitted
**Caused by: java.lang.IllegalStateException: zookeeper not connectedat org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>**(CuratorZookeeperClient.java:81) ~[dubbo-2.7.12.jar:2.7.12]... 50 common frames omitted
初始化信息
org.apache.zookeeper.ZooKeeper : Initiating client connection, **connectString=10.10.6.91:2181 sessionTimeout=60000** watcher=org.apache.curator.ConnectionState@4d3c6593
报错的重点信息
**Caused by: java.lang.IllegalStateException: zookeeper not connectedat org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>**
报错信息跟踪
根据报错重点信息,进入【CuratorZookeeperClient.java:81】代码内部76 client = builder.build();
77 client.getConnectionStateListenable().addListener(new CuratorConnectionStateListener(url));
78 client.start();
79 boolean connected = client.blockUntilConnected(timeout, TimeUnit.MILLISECONDS);
80 if (!connected) {81 throw new IllegalStateException("zookeeper not connected");
82 }
----------------------分析------------------------
从源代码第81行可看到,抛出异常时,执行的上一段代码,即【!connected】;
从79行可看出,连接zk时,会限制连接超时时间
超时时间在65行代码中定义
65 int timeout = url.getParameter(TIMEOUT_KEY, DEFAULT_CONNECTION_TIMEOUT_MS);
在代码中可看到【DEFAULT_CONNECTION_TIMEOUT_MS】默认超时时间
超时时间定义在第39行代码处
39 protected int DEFAULT_CONNECTION_TIMEOUT_MS = 5 * 1000;
--------------------------------------------------
由以上分析得出如果在5秒内不能完成连接到zk时,会导致连接超时报错
解决思路
思路: 加大超时时间,防止连接超时
dubbo.registry.timeout=20000
设置超时时间后,ZK正常连接
由于连接zk时设置了认证口令,导致连接zk超时,可适当增加zk连接时间解决
记录 - Dubbo使用Zookeeper为注册中心添加认证口令时,连接失败的故障相关推荐
- Dubbo使用multicast广播注册中心暴露服务地址时启动报错empty notify
2019独角兽企业重金招聘Python工程师标准>>> 开发机上Dubbo使用multicast广播注册中心暴露服务地址 <dubbo:registry protocol=&q ...
- springboot整合dubbo\zookeeper做注册中心
springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...
- 【Dubbo】扩展 etcd 注册中心
主要内容 : etcd 数据结构设计 : 构建可运行的注册中心 : 搭建 etcd 集群并在 Dubbo 中运行 . 着重从扩展 Dubbo 新注册中心方面入手 , 重点说明深入开发 Dubbo 注册 ...
- Dubbo 融合 Nacos 成为注册中心
Nacos 作为 Dubbo 生态系统中重要的注册中心实现,其中 dubbo-registry-nacos 则是 Dubbo 融合 Nacos 注册中心的实现. 预备工作 当您将 dubbo-regi ...
- Nacos(九)之Dubbo 融合 Nacos 成为注册中心
转载自 Dubbo 融合 Nacos 成为注册中心 Nacos 作为 Dubbo 生态系统中重要的注册中心实现,本文将会介绍如何进行 Dubbo 对接 Nacos 注册中心的工作. 预备工作 请确保 ...
- 源码分析Dubbo前置篇-寻找注册中心、服务提供者、服务消费者功能入口
本节主要阐述如下两个问题: 1.Dubbo自定义标签实现. 2.dubbo通过Spring加载配置文件后,是如何触发注册中心.服务提供者.服务消费者按照Dubbo的设计执行相关的功能. 所谓的执 ...
- Zookeeper 服务注册中心
Zookeeper 服务注册中心 Zookeeper 官网 ZooKeeper:分布式应用程序的分布式协调服务 ZooKeeper 是分布式应用程序的分布式开源协调服务.它公开了一组简单的原语,分布式 ...
- Zookeeper用作注册中心的原理
一.RPC框架中有3个重要的角色: 注册中心:保存所有服务的名字,服务提供者的IP列表,服务消费者的IP列表 服务提供者:提供跨进程服务 服务消费者:寻找到指定命名的服务并消费. 二.什么是ZooKe ...
- Dubbo之旅--扩展注册中心
在上篇文章中我们介绍了关于协议的扩展,并了解扩展它所需要的需求.本篇主要是对注册中心的扩展进行着重的探索. 同样的问题,为什么我们需要去扩展注册中心的?主要有以下三个需求. (1) 多注册中心注册 需 ...
最新文章
- srv.sys蓝屏解决补丁_电脑蓝屏重启怎么解决?
- 64位win10系统无法安装.Net framework3.5的两种解决方法
- CNN和RNN中如何引入BatchNorm
- 1.3 使用电脑测试MC20的电话语音功能
- 《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记
- Spring Boot2整合Shiro(1):身份认证
- 平安夜海报PNG免扣素材来了,全都在这|搜图114
- 《集体智慧编程》读书笔记2
- 黑马程序员_Java集合框架
- Python时间处理完全手册
- 【优化算法】闪电连接过程优化算法(LAPO)【含Matlab源码 1444期】
- 【POJ2752】Seek the Name, Seek the Fame(hash)
- 商业楼与写字楼的区别详解
- MATLAB读取nc文件
- 东南大学自动化934面试资料1
- [转发] 我的一年中台实战录 - 何少甫
- 一行脚本批量下载哔哩哔哩视频
- Win10中Ubuntu优化配置
- 小米怎么快速回到顶部_拆解报告:小米小爱鼠标采用炬芯ATB110X蓝牙物联网方案 -...
- 《30天自制操作系统》学习笔记--第11天
热门文章
- 解决Couldn‘t determine repo type for URL
- org.jboss.deployment.DeploymentException: URL file:/X:/workspace/JBoss_AS/XXX.war/ deployment failed
- 大华摄像头使用外网接收数据
- 电脑崩溃?黑客最爱邮件入侵方式,在双十一也要保护好网络安全!
- 浅谈:电商系统常见的几种模式
- 618电商平台鏖战,天猫618才是绝对主场
- 2019届互联网校招薪资盘点!
- AE脚本:AE导入SubRip/SRT/TXT/VTT字幕
- java base64写入文件_java之文件与base64字符之间的相互转换
- Windowsnbsp;XP/Vista/Windows7常见蓝…