随机端口
随机端口是Spring Application经常使用的策略,Spring也提供了便捷的配置方法:
server.port = 0
或者
server.port = ${random.int[10000,65535]}
这两种方式在配合Eureka使用时会产生一些问题:
配置端口为0会造成:
1. 在注册到Eureka的时候会一个问题:所有实例都使用了同样的实例名(如:Lenovo-zhaiyc:hello-service:0),这导致只出现了一个实例。
2. 当使用management.context-path配置了前缀时,默认的statusPageUrl与healthCheckUrl无效。
配置端口为${random.int[10000,65535]}
会造成:eureka端口号不对应。
解决方案
《springboot使用随机端口暴露的问题解决方法》提供了一种解决办法,但是涉及到Spring代码的改动,系统升级时比较麻烦,这里提供一个解决方案,配置端口号为0,同时配置instance-id和metadata的url.
application.yml
server:
port: 0
management:
context-path: /manage
eureka:
instance:
instance-id:${spring.application.name}:${random.int}
statusPageUrlPath: ${management.context-path}/info
healthCheckUrlPath: ${management.context-path}/health