背景
在跟踪soul网关
中divide插件
的负载均衡算法RoundRobinLoadBalance
,需要启动多节点才能进入实际的doSelect
方法。于是准备在本地启动soul-example-http
服务两个实例。
过程
- 常规的启动,
spring-boot
程序可以在ide
中运行。这是我的第一个实例,端口为application.yml
中配置的端口8188
。
ide-run - 在
soul-admin
中查看可以注册成功的
http-8188-registered - 我们还知道
spring-boot
的程序可以通过mvn
的方式启动,这里还需要更改一下端口,使用如下命令启动
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dserver.port=8189"
- 可以看到程序已使用
8189
启动正常
http-8189-started - 此时去查看
soul-admin
是否注册上去,发现并没有注册成功
http-8189-notRegistered - 查看后台日志发现注册到
soul-admin
时,仍然使用了8188
端口
http-8189-registered-8188 - 查看代码得知注册到
soul-admin
中,是使用如下配置
http-soul-admin-port - 因为写死了
soul-admin
的端口,从而导致了该现象。
解决
- 找到问题就好办了,我们可以通过如下两种方式解决问题
- 更改启动命令。将注册到
soul-admin
端口也改成8189
- 更改启动命令。将注册到
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dserver.port=8189 -Dsoul.http.port=8189"
- 可以解决我们的问题,但是并不优雅,介绍第二种
- 更改application.yml。因为
soul.http.port
必然要与server.port
的值保持一直,程序才是正确的,所以soul.http.port
改成sever.port
的引用值
change-application.yml
- 更改application.yml。因为
- 这种方式,启动命令不变,只需改下配置,更合理。
-
更改配置之后再次启动,日志正常。
http-8189-start-normal -
soul-admin
也成功注册
http-8189-registered
网友评论