如何解决微服务注册失败问题(针对java chassis)?
微服务部署成功后,需要将微服务注册到服务中心和配置中心,才能使用注册发现和微服务治理能力。如果注册失败,可能由于以下因素导致的:
- AK/SK未配置或者配置不正确。
- 服务中心或配置中心地址配置不正确。
- 网络不通。
- 域名解析失败。
- 监听端口被占用。
排查步骤
- 异常消息如下时,问题原因为AK/SK没有正确设置和携带到请求头里。
{"errorCode":"401002","errorMessage":"Request unauthorized","detail":"Invalid request, header is invalid, ak sk or project is empty."}
检查方法:- 检查项目中是否依赖如下认证模块(间接依赖也可以,比如项目依赖了cse-solution-service-engine)。
<groupId>com.huawei.paas.cse</groupId> <artifactId>foundation-auth</artifactId>
- 检查microservice.yaml文件中AK/SK是否配置正确,可以参考下载AK/SK获取正确的AK/SK。
cse: credentials: accessKey: your access key secretKey: your secret key akskCustomCipher: default
- 检查项目中是否依赖如下认证模块(间接依赖也可以,比如项目依赖了cse-solution-service-engine)。
- 异常消息如下时,问题原因为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
检查方法:
- 检查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
- 如果服务中心和配置中心地址配置正确,请执行以下命令检查网络是否良好:
ping <configurationcenter ip>
如果能ping通,表示网络良好。
当服务中心或配置中心配置的地址为域名时,需要将IP地址修改为域名,再执行ping命令。
- 如果网络良好,执行以下命令获取服务中心或配置中心地址:
系统显示如下,请将获取到的IP地址和域名配置到本地“/etc/hosts”文件中。
10.153.78.18 cse.cn-north-1.myhuaweicloud.com
- 检查microservice.yaml文件中服务中心和配置中心地址是否配置正确,如果不正确,请配置为正确的地址。
- 另外,微服务端口号被占用时,微服务可能无法正常启动,可执行如下命令查看服务监控端口是否被占用。
如果端口被其他应用占用,请修改microservice.yaml文件,将端口修改为未被占用的端口。
rest: address: 0.0.0.0:8087 //微服务端口,请确保该端口号无冲突