记录 - 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为注册中心添加认证口令时,连接失败的故障相关推荐

  1. Dubbo使用multicast广播注册中心暴露服务地址时启动报错empty notify

    2019独角兽企业重金招聘Python工程师标准>>> 开发机上Dubbo使用multicast广播注册中心暴露服务地址 <dubbo:registry protocol=&q ...

  2. springboot整合dubbo\zookeeper做注册中心

    springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...

  3. 【Dubbo】扩展 etcd 注册中心

    主要内容 : etcd 数据结构设计 : 构建可运行的注册中心 : 搭建 etcd 集群并在 Dubbo 中运行 . 着重从扩展 Dubbo 新注册中心方面入手 , 重点说明深入开发 Dubbo 注册 ...

  4. Dubbo 融合 Nacos 成为注册中心

    Nacos 作为 Dubbo 生态系统中重要的注册中心实现,其中 dubbo-registry-nacos 则是 Dubbo 融合 Nacos 注册中心的实现. 预备工作 当您将 dubbo-regi ...

  5. Nacos(九)之Dubbo 融合 Nacos 成为注册中心

    转载自  Dubbo 融合 Nacos 成为注册中心 Nacos 作为 Dubbo 生态系统中重要的注册中心实现,本文将会介绍如何进行 Dubbo 对接 Nacos 注册中心的工作. 预备工作 请确保 ...

  6. 源码分析Dubbo前置篇-寻找注册中心、服务提供者、服务消费者功能入口

    本节主要阐述如下两个问题:  1.Dubbo自定义标签实现.  2.dubbo通过Spring加载配置文件后,是如何触发注册中心.服务提供者.服务消费者按照Dubbo的设计执行相关的功能.  所谓的执 ...

  7. Zookeeper 服务注册中心

    Zookeeper 服务注册中心 Zookeeper 官网 ZooKeeper:分布式应用程序的分布式协调服务 ZooKeeper 是分布式应用程序的分布式开源协调服务.它公开了一组简单的原语,分布式 ...

  8. Zookeeper用作注册中心的原理

    一.RPC框架中有3个重要的角色: 注册中心:保存所有服务的名字,服务提供者的IP列表,服务消费者的IP列表 服务提供者:提供跨进程服务 服务消费者:寻找到指定命名的服务并消费. 二.什么是ZooKe ...

  9. Dubbo之旅--扩展注册中心

    在上篇文章中我们介绍了关于协议的扩展,并了解扩展它所需要的需求.本篇主要是对注册中心的扩展进行着重的探索. 同样的问题,为什么我们需要去扩展注册中心的?主要有以下三个需求. (1) 多注册中心注册 需 ...

最新文章

  1. srv.sys蓝屏解决补丁_电脑蓝屏重启怎么解决?
  2. 64位win10系统无法安装.Net framework3.5的两种解决方法
  3. CNN和RNN中如何引入BatchNorm
  4. 1.3 使用电脑测试MC20的电话语音功能
  5. 《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记
  6. Spring Boot2整合Shiro(1):身份认证
  7. 平安夜海报PNG免扣素材来了,全都在这|搜图114
  8. 《集体智慧编程》读书笔记2
  9. 黑马程序员_Java集合框架
  10. Python时间处理完全手册
  11. 【优化算法】闪电连接过程优化算法(LAPO)【含Matlab源码 1444期】
  12. 【POJ2752】Seek the Name, Seek the Fame(hash)
  13. 商业楼与写字楼的区别详解
  14. MATLAB读取nc文件
  15. 东南大学自动化934面试资料1
  16. [转发] 我的一年中台实战录 - 何少甫
  17. 一行脚本批量下载哔哩哔哩视频
  18. Win10中Ubuntu优化配置
  19. 小米怎么快速回到顶部_拆解报告:小米小爱鼠标采用炬芯ATB110X蓝牙物联网方案 -...
  20. 《30天自制操作系统》学习笔记--第11天

热门文章

  1. 解决Couldn‘t determine repo type for URL
  2. org.jboss.deployment.DeploymentException: URL file:/X:/workspace/JBoss_AS/XXX.war/ deployment failed
  3. 大华摄像头使用外网接收数据
  4. 电脑崩溃?黑客最爱邮件入侵方式,在双十一也要保护好网络安全!
  5. 浅谈:电商系统常见的几种模式
  6. 618电商平台鏖战,天猫618才是绝对主场
  7. 2019届互联网校招薪资盘点!
  8. AE脚本:AE导入SubRip/SRT/TXT/VTT字幕
  9. java base64写入文件_java之文件与base64字符之间的相互转换
  10. Windowsnbsp;XP/Vista/Windows7常见蓝…