背景
在跟踪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








