文档首页/ 应用管理与运维平台 ServiceStage/ 常见问题/ 应用开发问题/ 如何解决微服务注册失败问题(针对java chassis)?
更新时间:2023-07-11 GMT+08:00

如何解决微服务注册失败问题(针对java chassis)?

微服务部署成功后,需要将微服务注册到服务中心和配置中心,才能使用注册发现和微服务治理能力。如果注册失败,可能由于以下因素导致的:

  • AK/SK未配置或者配置不正确。
  • 服务中心或配置中心地址配置不正确。
  • 网络不通。
  • 域名解析失败。
  • 监听端口被占用。

排查步骤

  • 异常消息如下时,问题原因为AK/SK没有正确设置和携带到请求头里。
    {"errorCode":"401002","errorMessage":"Request unauthorized","detail":"Invalid request, header is invalid, ak sk or project is empty."}
    检查方法:
    1. 检查项目中是否依赖如下认证模块(间接依赖也可以,比如项目依赖了cse-solution-service-engine)。
      <groupId>com.huawei.paas.cse</groupId>
      <artifactId>foundation-auth</artifactId>
    2. 检查microservice.yaml文件中AK/SK是否配置正确,可以参考下载AK/SK获取正确的AK/SK。
      cse:
        credentials:
          accessKey: your access key
          secretKey: your secret key
          akskCustomCipher: default
  • 异常消息如下时,问题原因为AK/SK配置不正确。
    {"errorCode":"401002","errorMessage":"Request unauthorized","detail":"Get service token from iam proxy failed,{\"error\":\"validate ak sk error\"}"}

    检查方法:

    检查microservice.yaml文件中AK/SK是否配置正确,可以参考下载AK/SK获取正确的AK/SK。
    cse:
      credentials:
        accessKey: your access key
        secretKey: your secret key
        akskCustomCipher: default
  • 异常消息如下时,问题原因为Project配置不正确。
    {"errorCode":"401002","errorMessage":"Request unauthorized","detail":"Get service token from iam proxy failed,{\"error\":\"get project token from iam failed. error:http post failed, statuscode: 400\"}"}

    检查方法:

    检查microservice.yaml文件中Project是否配置正确,可以参考查看项目名获取正确的Project。

    cse:
      credentials:
        accessKey: your access key
        secretKey: your secret key
        akskCustomCipher: default
        project: cn-north-1
  • 异常消息如下时,问题原因为没有足够的额度增加服务实例。
    {"errorCode":"400100","errorMessage":"Not enough quota","detail":"no quota to create instance, ..."}

    检查方法:

    登录公有云,在微服务引擎概览页面,可以看到实例个数的额度。如果发现有剩余额度,需要检查下代码配置的服务中心地址和区域信息。需要注意的是您需要检查实例所在区域的额度。

  • 当微服务链接不上服务中心或者配置中心时,微服务会打印如下信息。由于微服务并没有连上服务中心或配置中心,因此在服务中心或配置中心侧,看不到errorCode异常。
    Connection refused: no further information

    检查方法:

    1. 检查microservice.yaml文件中服务中心和配置中心地址是否配置正确,如果不正确,请配置为正确的地址。
      cse:
        service:                  //服务中心信息,其中address为服务中心地址
          registry:
            address: https://cse.cn-north-1.myhuaweicloud.com
            instance:
              watch: false
        config:                   //配置中心信息,其中address为配置中心地址
          client:
            serverUri: https://cse.cn-north-1.myhuaweicloud.com
            refreshMode: 1
            refresh_interval: 5000
    2. 如果服务中心和配置中心地址配置正确,请执行以下命令检查网络是否良好:

      ping <servicecenter ip>

      ping <configurationcenter ip>

      如果能ping通,表示网络良好。

      当服务中心或配置中心配置的地址为域名时,需要将IP地址修改为域名,再执行ping命令。

    3. 如果网络良好,执行以下命令获取服务中心或配置中心地址:

      ping <domain name>

      系统显示如下,请将获取到的IP地址和域名配置到本地“/etc/hosts”文件中。

      10.153.78.18   cse.cn-north-1.myhuaweicloud.com
  • 另外,微服务端口号被占用时,微服务可能无法正常启动,可执行如下命令查看服务监控端口是否被占用。

    netstat -ano | findstr 8080

    如果端口被其他应用占用,请修改microservice.yaml文件,将端口修改为未被占用的端口。

    rest:
      address: 0.0.0.0:8087  //微服务端口,请确保该端口号无冲突