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" />  





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM