
# 如何解决微服务注册失败问题（针对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](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)获取正确的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](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)获取正确的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是否配置正确，可以参考[查看项目名](https://support.huaweicloud.com/usermanual-ca/ca_01_0002.html)获取正确的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**通，表示网络良好。
     ![](https://support.huaweicloud.com/servicestage_faq/public_sys-resources/note_3.0-zh-cn.png)
     当服务中心或配置中心配置的地址为域名时，需要将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  //微服务端口，请确保该端口号无冲突
  ```
  
 
