开发者社区> 问答> 正文

错误编码:HSF-0001是什么,如何解决?

错误编码:HSF-0001是什么,如何解决?

展开
收起
保持可爱mmm 2020-03-28 22:10:03 3650 0
1 条回答
写回答
取消 提交回答
  • 报错信息 HSFServiceAddressNotFoundException 未找到需要调用的服务目标地址。 描述信息 需要调用的目标服务为:xxxx; 组别为:xxxx。 基本问题排查 服务本身的发布、调用是否正确。 验证服务是否发布:在对应环境(日常、预发或线上环境)的 “服务治理”控制台查询需要的服务。 名称不匹配,检查代码中对应发布者和消费者 XML 配置的 interface、version、group,3个数据要完全一致(注意大小写也要一样, 同时要注意前后不能有空格)。 服务提供者防火墙开启或网络不通,telnet 服务提供者 IP HSF 端口(默认12200)是否可以正常连接,如果不能正常连接说明防火墙开启或网络存在问题,需要协调相关负责人员排查。 是否存在多网卡,如果存在多网卡可以使用 -Dhsf.server.ip 来指定服务端的 IP。 本地开发环境可以直接 jvm 启动参数设定。 生产环境需要跟开发联系确定如何解决。 服务调用太快,在 ConfigServer 将地址推送过来之前就发起调用导致出错。在服务消费者的配置项里添加 maxWaitTimeForCsAddress 的相关配置,请参考开发服务消费者。 本地开发环境排查 本地使用轻量配置中心进行开发时,服务发布、订阅均无需鉴权,故服务正常启动就可以注册、订阅成功。在排除掉前面的基本问题后,可以按照如下步骤进行排查。 轻量配置中心检查。 登录轻量配置中心控制台,搜索对应的服务是否已经发布成功,服务提供者的 IP、端口是否正确。如果服务未发布成功,按照下方《服务提供者排查》步骤进行排查。 搜索对应的服务是否已经订阅成功。如果服务未订阅成功 《服务消费者排查》 步骤进行排查。 从订阅者机器上 Telnet 服务提供者 IP 端口,是否可以正常联通。 服务提供者排查。 如果轻量配置中心控制台发现服务未能发布成功,请进行如下排查。 ping jmenv.tbsite.net 确定地址服务器 IP 跟轻量配置中心 IP 一致。 清空/{userhome}/logs/下所有日志,清空/{userhome}/configclient/目录。 启动服务提供者应用,如果之前 Tomcat 已经启动,请重启。 首先查看 Tomcat 启动日志,无异常信息,最后显示启动耗时 ms。如果有异常,请解决异常。 查看/{userhome}/configclient/logs/configclient.log 或/{userhome}/logs/configclient/configclient.log(不同版本稍有区别),查找 Connecting to remoting://{IP 地址}连接的注册中心 IP 跟轻量配置中心 IP 一致,如果不一致,请确认轻量配置中心是否通过 -Daddress.server.ip={可以访问的 IP}调整过 IP。 其中对应服务[Register-ok][Publish-ok],确定服务名、版本、分组都是预期的信息。 如果[Register-ok][Publish-ok],说明服务提供者正常注册到服务注册中心。开发环境只要启动成功就可以注册成功。

    说明 在实际开发过程中机器上可能会同时启动多个服务提供者,例如A,B,C;每个服务提供者对外提供的hsf端口会在12200基础上依次累加。同时可以通过在jvm参数上指定ip和端口:-Dhsf.server.ip= -Dhsf.server.port= 在轻量配置中心上可以检查服务端端口与实际启动的端口是否一致,不一致会导致消费端调用失败,可以通过轻量配置中心控制台更新服务端端口,或者删除掉服务,然后重新发布应用。 服务消费者排查。 ping jmenv.tbsite.net 确定地址服务器 IP 跟轻量配置中心 IP 一致。 启动服务消费者应用,如果之前 Tomcat 已经启动,请重启。 首先查看 Tomcat 启动日志,无异常信息,最后显示启动耗时 ms。如果有异常,请解决异常。 查看 /{userhome}/configclient/logs/configclient.log 或 /{userhome}/logs/configclient/configclient.log(不同版本稍有区别),查找 Connecting to remoting://{IP 地址}连接的注册中心 IP 跟轻量配置中心 IP 一致,如果不一致,请确认轻量配置中心是否通过 -Daddress.server.ip={可以访问的 IP} 调整过 IP。 查看日志中对应的服务订阅情况,[Data-received] 是否收到服务提供者的具体信息。如果未收到服务提供者数据,需要确定服务提供者服务已经注册成功。 从订阅者机器上 Telnet 服务提供者 IP 端口,是否可以正常联通。如果不能正常连接说明防火墙开启或网络存在问题,需要协调相关负责人员排查。 线上环境排查 使用 EDAS 管理和部署的应用都是使用的正式环境,正式环境存在严格的服务鉴权和数据隔离。由于存在鉴权,正式环境不同主账号之间的服务无法直接互相调用,同时开发环境也无法调用访问正式环境的服务。 服务提供者排查。 id="codeph_hor_1ki_a0p">cat /home/admin/{taobao-tomcat 目录}/bin/setenv.sh 此文件中 -Daddress.server.domain={地址服务器域名} 对应地址服务器域名。 ping {地址服务器域名} 查看返回的 IP,是否正常。如果不能 ping 通说明网络存在问题,请排查网络。 清空/home/admin/logs/下所有日志,清空/home/admin/configclient/目录,清空/home/admin/{taobao-tomcat 目录}/logs/目录。 启动服务提供者应用,如果之前 Tomcat 已经启动,请重启。 首先查看/home/admin/{taobao-tomcat 目录}/logs/catalina.out,此文件中无异常信息,最后显示启动耗时 ms。如果有异常,请解决异常。 查看/home/admin/{taobao-tomcat 目录}/logs/localhost-{日期}.log,此文件中无异常信息。。如果有异常,请解决异常。 查看/home/admin/configclient/logs/configclient.log 或/home/admin/logs/configclient/configclient.log(不同版本稍有区别),其中对应服务[Register-ok][Publish-ok],确定服务名、版本、分组都是预期的信息。如果[Publish or unregister error],请排查。 查看 catalina.out 日志中 edas.hsf.xxxx 格式的版本。 低于 edas.hsf.2114.1.0,必须创建对应服务分组,否则会鉴权失败。登录 EDAS 控制台,在左侧导航栏选择服务市场 > 服务分组查看应用的服务分组是否已经创建。 大于或等于 edas.hsf.2114.1.0,已经提供多租户方式隔离,可以不需要创建服务分组。对应服务会注册2次,一次是基于租户注册(总是成功),一次是基于分组注册(可能失败,但不影响服务调用)。

    2018-07-19 10:28:44.716|ERROR|[] [] [%s] [Publish or unregister error] spas-authentication-failed! dataId:com.alibaba.edas.testcase.api.TestCase:1.0.0 group:test erorr:java.lang.Error: A receivedRevision:2 tenant:DEFAULT_TENANT 2018-07-19 10:28:44.717|INFO|[] [] [] [Register-ok] Publisher (HSFProvider-com.alibaba.edas.testcase.api.TestCase:1.0.0.2 for com.alibaba.edas.testcase.api.TestCase:1.0.0)Tenant:0846c173-decf-4b47-xxxxxxxx in group test in env default 2018-07-19 10:28:44.717|INFO|[] [] [] [Publish-ok] dataId=com.alibaba.edas.testcase.api.TestCase:1.0.0, clientId=HSFProvider-com.alibaba.edas.testcase.api.TestCase:1.0.0.2, datumId=ecu:ed5b9d2b-a276-4ad7-b7b9-14e432ff2356:192.168.0.1,tenant=0846c173-decf-4b47-xxxxxxxx, rev=2, env=default
    上述 ERROR 级别日志中:使用tenant:DEFAULT_TENANT鉴权失败;使用tenant=0846c173-decf-4b47-xxxxxxxx发布成功。只需保证两套鉴权成功一次即可。 如果[Register-ok][Publish-ok],说明服务提供者正常注册到服务注册中心。 服务消费者排查。 cat /home/admin/{taobao-tomcat 目录}/bin/setenv.sh 此文件中 -Daddress.server.domain={地址服务器域名} 对应地址服务器域名。 ping {地址服务器域名} 查看返回的 IP,是否正常。如果不能 ping 通说明网络存在问题,请排查网络。 清空 /home/admin/logs/下所有日志,清空 /home/admin/configclient/目录,清空 /home/admin/{taobao-tomcat 目录}/logs/目录 启动服务消费者应用,如果之前 Tomcat 已经启动,请重启。 首先查看 /home/admin/{taobao-tomcat 目录}/logs/catalina.out,此文件中无异常信息,最后显示启动耗时 ms。如果有异常,请解决异常。 查看 /home/admin/{taobao-tomcat 目录}/logs/localhost-{日期}.log,此文件中无异常信息。如果有异常,请解决异常。 查看 /home/admin/configclient/logs/configclient.log 或 /home/admin/logs/configclient/configclient.log(不同版本稍有区别,查看日志中对应的服务订阅情况,搜索对应服务,查看[Data-received]是否收到服务提供者的具体信息。如果未收到服务提供者数据,需要确定服务提供者服务已经注册成功。 从订阅者机器上 Telnet 服务提供者 IP 端口,是否可以正常联通。如果不能正常连接说明防火墙开启或网络存在问题,需要协调相关负责人员排查。 相关日志排查 查看/home/admin/configclient/snapshot/DEFAULT_ENV/ 可以查到消费端服务订阅到的实际服务列表数据信息如下:

    [root@iZ2ze26awga24ijh93152dZ com.alibaba.edas.carshop.itemcenter.ItemService:1.0.0]# cat HSF-0846c173-decf-4b47-8aa0-xxxxxx.dat [ "192.168.0.1:12200?_p\u003dhessian2\u0026_ENV\u003dDEFAULT\u0026v\u003d2.0\u0026_TIMEOUT\u003d3000\u0026_ih2\u003dy\u0026_TID\u003d0846c173-decf-4b47-8aa0-04b5a5610096\u0026_SERIALIZETYPE\u003dhessian\u0026_auth\u003dy" ]

    /home/admin/logs/hsf/hsf.log 可以查看服务调用报错信息。 /home/admin/logs/hsf/hsf-remoting.log 记录消费端与服务端心跳检查日志,若出现如下日志:

    01 2018-06-20 12:35:00.797 ERROR [HSF-Worker-2-thread-1:hsf.remoting] [] [] [HSF-0085] [remoting] fail to connect: /192.168.1.1:12200 in timeout: 4000

    该日志为消费端与提供端无法建立 TCP 长连接。 检查对应的机器 IP 上的服务正常启动,对应的端口已经处于监听状态(例如 12200)。 2. 第一步没有问题,可以尝试在消费端 telnet 服务端 IP Port,检查端口是否未开放。

    2020-03-28 22:11:46
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
面向失败设计 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载