zoukankan      html  css  js  c++  java
  • Dubbo_异常_服务注册运行正常但是Dubbo-Admin看不到服务(亲测可用)


    一、背景:
    1、Dubbo服务正常注册到ZooKeeper
    2、客户端调用Dubbo服务正常

    二、原因:
    Dubbo-Admin未配置分组信息

    三、解决步骤:
    1、dubbo.properties添加分组信息:/usr/local/src/tomcat7/webapps/dubbo-admin/WEB-INF
    dubbo.registry.group=/dubbo/mygroup
    2、dubbo-admin.xml添加分组信息:/usr/local/src/tomcat7/webapps/dubbo-admin/WEB-INF/classes/META-INF/spring
    1. <dubbo:registry group="${dubbo.registry.group}" address="${dubbo.registry.address}" check="false" file="false" />  
    3、重启tomcat

    今天重新配置了下dubbo,结果发现管理控制台上没有显示可用的服务,由于前阵子刚配置的时候是没有问题的,于是开始逐步排查。

    项目注册中心用的zookeeper集群,provider是采用jar包方式启动的,consumer在tomcat容器内运行,并且consumer已经可以消费到provider提供的服务了,说明注册中心已经里面已经有服务注册。通过zookeeper客户端连接到zk服务器上,也可以看到创建的服务节点


    根目录下有paopao,zookeeper两个目录,其中paopao是根据配置中注册中心registry的group属性分组标识而创建的,zookeeper是zk默认的节点,paopao下面有两个已经注册的服务节点。

    然后查看dubbo-admin的配置,dubbo的管理控制台是在单独的tomcat下运行的,安装及配置可以参考http://dubbo.io/Administrator+Guide-zh.htm,找到webapps/ROOT/WEB-INF/dubbo.properties文件,其内容如下:

    [plain] view plain copy
    1. dubbo.registry.address=zookeeper://192.168.199.191:2181?backup=192.168.199.192:2181,192.168.199.193:2181  
    2. dubbo.admin.root.password=Daniel  
    3. dubbo.admin.guest.password=guest  
    猛地发现registry没有配置group分组!自己之前在生产者和消费者的配置文件中也没有显式指明分组,默认的group就为dubbo。现在由于在服务提供的配置文件中对registry显式指明了group分组,因此管理控制台的配置中如果没有声明group与provider、consumer的group一致,那么就找不到对应的服务。
    于是修改dubbo.properties文件,添加注册中心分组:

    [plain] view plain copy
    1. dubbo.registry.group=paopao  
    满怀着激动的心情重启了服务,结果发现管理台界面还是没有找到服务!然后上网查找但是无奈网上dubbo相关的文档和讨论真的太少了,后来经群里一个朋友的提醒,查看了${TOMCAT_HOME}/webapps/ROOT/WEB-INF/classes/META-INF/spring下的dubbo-admin.xml文件,dubbo管理控制台在启动的时候会加载该xml文件并读取里面的配置信息初始化dubbo和zookeeper,dubbo-admin.xml内容如下:

    [html] view plain copy
    1. <beans xmlns="http://www.springframework.org/schema/beans"  
    2.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    3.         xmlns:context="http://www.springframework.org/schema/context"  
    4.         xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
    5.         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
    6.                 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  
    7.                 http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
    8.   
    9.         <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    10.                 <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />  
    11.                 <property name="ignoreResourceNotFound" value="true" />  
    12.                 <property name="locations">  
    13.                         <list>  
    14.                                 <value>/WEB-INF/dubbo.properties</value>  
    15.                                 <value>file://${user.home}/dubbo.properties</value>  
    16.                         </list>  
    17.                 </property>  
    18.         </bean>  
    19.   
    20.         <dubbo:application name="dubbo-admin" />  
    21.   
    22.         <dubbo:registry address="${dubbo.registry.address}" check="false" file="false" />  
    23.   
    24.         <dubbo:reference id="registryService" interface="com.alibaba.dubbo.registry.RegistryService" check="false" />  
    25.   
    26.         <bean id="configService" class="com.alibaba.dubbo.governance.service.impl.ConfigServiceImpl" />  
    27.   
    28.         <bean id="consumerService" class="com.alibaba.dubbo.governance.service.impl.ConsumerServiceImpl" />  
    29.   
    30.         <bean id="overrideService" class="com.alibaba.dubbo.governance.service.impl.OverrideServiceImpl" />  
    31.   
    32.         <bean id="ownerService" class="com.alibaba.dubbo.governance.service.impl.OwnerServiceImpl" />  
    33.   
    34.         <bean id="providerService" class="com.alibaba.dubbo.governance.service.impl.ProviderServiceImpl" />  
    35.   
    36.         <bean id="routeService" class="com.alibaba.dubbo.governance.service.impl.RouteServiceImpl" />  
    37.   
    38.         <bean id="userService" class="com.alibaba.dubbo.governance.service.impl.UserServiceImpl">  
    39.                 <property name="rootPassword" value="${dubbo.admin.root.password}" />  
    40.                 <property name="guestPassword" value="${dubbo.admin.guest.password}" />  
    41.         </bean>  
    42.   
    43.         <bean id="governanceCache" class="com.alibaba.dubbo.governance.sync.RegistryServerSync" />  
    44.   
    45. </beans>  

    可以看到,该文件竟然默认是没有registry的group属性的,因此只在dubbo.properties中添加分组配置根本不起作用。于是修改dubbo-admin.xml文件中的<dubbo:registry>项为:

    [html] view plain copy
    1. <dubbo:registry group="${dubbo.registry.group}" address="${dubbo.registry.address}" check="false" file="false" />  

    保存后重启tomcat实例,发现已经注册的服务提供者和消费者信息,一切OK!



    下面把provider和consumer的主要配置信息也贴出来供大家参考:

    provider.xml:

    [html] view plain copy
    1. <!-- 提供方应用信息,用于计算依赖关系 -->  
    2. <dubbo:application name="paopao-provider"  />  
    3.   
    4. <!-- 使用zookeeper注册中心暴露服务地址 -->  
    5. <dubbo:registry group="paopao" address="zookeeper://192.168.199.191:2181?backup=192.168.199.192:2181,192.168.199.193:2181"/>  
    6.   
    7. <!-- 监控中心配置,从注册中心发现监控中心地址 -->  
    8. <dubbo:monitor protocol="registry"/>  
    9.   
    10. <!-- 用dubbo协议在20880端口暴露服务 -->  
    11. <dubbo:protocol name="dubbo" port="20880" />  
    12.   
    13. <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->  
    14. <dubbo:annotation package="com.zhilin.paopao.provider.service"/>   
    consumer.xml:

    [plain] view plain copy
    1. <pre name="code" class="html">  <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->  
    2.     <dubbo:application name="consumer-of-app"  />  
    3.       
    4.     <!-- 使用zookeeper注册中心暴露发现服务地址 -->  
    5.     <dubbo:registry group="paopao" address="zookeeper://192.168.199.191:2181?backup=192.168.199.192:2181,192.168.199.193:2181"/>  
    6.       
    7.   <!-- 监控中心配置,从注册中心发现监控中心地址 -->  
    8.   <dubbo:monitor protocol="registry"/>  
    9.       
    10.     <!-- 生成远程服务代理 -->   
    11.     <dubbo:reference version="1.0.0" id="userService" interface="com.zhilin.paopao.service.UserService" />  




  • 相关阅读:
    接口
    java基础
    java的反射
    按照字典序打印所有的字符串
    求幂的问题
    时间复杂度与空间复杂度
    孩子们的游戏(圆圈中最后剩下的数)
    约瑟夫环问题
    翻转单词顺序列
    复杂链表的复制
  • 原文地址:https://www.cnblogs.com/gossip/p/6021698.html
Copyright © 2011-2022 走看看