Spring Boot 无法使用Eureka 从API网关连接到微服务

l5tcr1uw  于 2024-01-06  发布在  Spring
关注(0)|答案(1)|浏览(236)

我创建了一个微服务环境,包括一个用户微服务、一个API网关、Eureka 和Rabbitmq。
然后,我将每个镜像都对接起来,并在它们自己的EC2示例上运行这些镜像。
一切正常,服务在Eureka 中注册,正确连接到rabbit服务器并可以使用云配置。此外,配置入站规则,以便微服务可以相互连接。
当我只使用用户微服务发送请求来创建用户或登录用户时,它可以正常工作。
问题是,当我使用网关API来使用用户微服务时,我会得到这个错误:

  1. 2023-08-30T21:58:05.533Z ERROR 1 --- [or-http-epoll-3] a.w.r.e.AbstractErrorWebExceptionHandler : [3271cd96-1] 500 Server Error for HTTP POST "/users/login"
  2. io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: Connection refused: /172.17.0.2:8181
  3. Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
  4. Error has been observed at the following site(s):
  5. *__checkpoint org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
  6. *__checkpoint org.springframework.web.filter.reactive.ServerHttpObservationFilter [DefaultWebFilterChain]
  7. *__checkpoint HTTP POST "/users/login" [ExceptionHandlingWebHandler]
  8. Original Stack Trace:
  9. Caused by: java.net.ConnectException: finishConnect(..) failed: Connection refused
  10. at io.netty.channel.unix.Errors.newConnectException0(Errors.java:166) ~[netty-transport-native-unix-common-4.1.94.Final.jar!/:4.1.94.Final]
  11. at io.netty.channel.unix.Errors.handleConnectErrno(Errors.java:131) ~[netty-transport-native-unix-common-4.1.94.Final.jar!/:4.1.94.Final]
  12. at io.netty.channel.unix.Socket.finishConnect(Socket.java:359) ~[netty-transport-native-unix-common-4.1.94.Final.jar!/:4.1.94.Final]
  13. at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:710) ~[netty-transport-classes-epoll-4.1.94.Final.jar!/:4.1.94.Final]
  14. at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:687) ~[netty-transport-classes-epoll-4.1.94.Final.jar!/:4.1.94.Final]
  15. at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:567) ~[netty-transport-classes-epoll-4.1.94.Final.jar!/:4.1.94.Final]
  16. at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:489) ~[netty-transport-classes-epoll-4.1.94.Final.jar!/:4.1.94.Final]
  17. at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397) ~[netty-transport-classes-epoll-4.1.94.Final.jar!/:4.1.94.Final]
  18. at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.94.Final.jar!/:4.1.94.Final]
  19. at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.94.Final.jar!/:4.1.94.Final]
  20. at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.94.Final.jar!/:4.1.94.Final]
  21. at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
  22. `2023-08-30T21:58:05.533Z ERROR 1 --- [or-http-epoll-3] a.w.r.e.AbstractErrorWebExceptionHandler : [3271cd96-1] 500 Server Error for HTTP POST "/users/login"
  23. io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: Connection refused: /172.17.0.2:8181
  24. Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
  25. Error has been observed at the following site(s):
  26. *__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
  27. *__checkpoint ⇢ org.springframework.web.filter.reactive.ServerHttpObservationFilter [DefaultWebFilterChain]
  28. *__checkpoint ⇢ HTTP POST "/users/login" [ExceptionHandlingWebHandler]
  29. Original Stack Trace:
  30. Caused by: java.net.ConnectException: finishConnect(..) failed: Connection refused
  31. at io.netty.channel.unix.Errors.newConnectException0(Errors.java:166) ~[netty-transport-native-unix-common-4.1.94.Final.jar!/:4.1.94.Final]
  32. at io.netty.channel.unix.Errors.handleConnectErrno(Errors.java:131) ~[netty-transport-native-unix-common-4.1.94.Final.jar!/:4.1.94.Final]
  33. at io.netty.channel.unix.Socket.finishConnect(Socket.java:359) ~[netty-transport-native-unix-common-4.1.94.Final.jar!/:4.1.94.Final]
  34. at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:710) ~[netty-transport-classes-epoll-4.1.94.Final.jar!/:4.1.94.Final]
  35. at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:687) ~[netty-transport-classes-epoll-4.1.94.Final.jar!/:4.1.94.Final]
  36. at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:567) ~[netty-transport-classes-epoll-4.1.94.Final.jar!/:4.1.94.Final]
  37. at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:489) ~[netty-transport-classes-epoll-4.1.94.Final.jar!/:4.1.94.Final]
  38. at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397) ~[netty-transport-classes-epoll-4.1.94.Final.jar!/:4.1.94.Final]
  39. at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.94.Final.jar!/:4.1.94.Final]
  40. at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.94.Final.jar!/:4.1.94.Final]
  41. at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.94.Final.jar!/:4.1.94.Final]
  42. at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

字符串
我觉得奇怪的是,它说连接拒绝:/172.17.0.2:8181这让我很困惑,因为如果我正确地发出请求,我应该将请求发送到{ms-aws-ip}:8181
Also, I noticed a difference between the tutorial I am following and what I see on my Eureka screen我看到正在执行教程的人可以看到到Eureka 中aws示例的客户端链接,其格式为ip-xx. xx. xx.xx.ec2.internal:users:8181
这些是微服务的application.properties,它们的配置运行在localhost上。在运行Docker镜像时,我更改了配置,以便它们可以相互连接。
Eureka :

  1. server.port=8010
  2. spring.application.name=discoveryservice
  3. eureka.instance.hostname=localhost
  4. eureka.client.register-with-eureka=false
  5. eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka


用户:

  1. server.port=${PORT:0}
  2. spring.application.name=users
  3. eureka.client.service-url.defaultZone=http://localhost:8010/eureka
  4. spring.devtools.restart.enabled=true
  5. eureka.instance.instance-id=${spring.application.name}:${spring.application.instance_id:${random.value}}
  6. spring.jpa.hibernate.ddl-auto=update
  7. spring.rabbitmq.host=localhost
  8. spring.rabbitmq.port=5672
  9. spring.rabbitmq.username=guest
  10. spring.rabbitmq.password=guest
  11. management.endpoints.web.exposure.include=*
  12. management.endpoint.health.enabled=true
  13. management.endpoint.health.show-details=always
  14. management.health.circuitbreakers.enabled=true


GATEWAY:

  1. server.port=8083
  2. spring.application.name=api-gateway
  3. eureka.client.service-url.defaultZone=http://localhost:8010/eureka
  4. spring.rabbitmq.host=localhost
  5. spring.rabbitmq.port=5672
  6. spring.rabbitmq.username=guest
  7. spring.rabbitmq.password=guest
  8. spring.cloud.gateway.routes[0].id=users-status-check
  9. spring.cloud.gateway.routes[0].uri = lb://users
  10. spring.cloud.gateway.routes[0].predicates[0]=Path=/users/**
  11. spring.cloud.gateway.routes[0].predicates[1]=Method=GET
  12. spring.cloud.gateway.routes[0].predicates[2]=Header=Authorization, Bearer (.*)
  13. spring.cloud.gateway.routes[0].filters[0]=RemoveRequestHeader=Cookie
  14. spring.cloud.gateway.routes[0].filters[1]=RewritePath=/users/(?<segment>.*), /$\{segment}
  15. spring.cloud.gateway.routes[0].filters[2]=AuthorizationHeaderFilter
  16. spring.cloud.gateway.routes[1].id=users-create-user
  17. spring.cloud.gateway.routes[1].uri=lb://users
  18. spring.cloud.gateway.routes[1].predicates[0]=Path=/users
  19. spring.cloud.gateway.routes[1].predicates[1]=Method=POST
  20. spring.cloud.gateway.routes[1].filters[0]=RemoveRequestHeader=Cookie
  21. spring.cloud.gateway.routes[1].filters[1]=RewritePath=/users/(?<segment>.*), /$\{segment}


我尝试将此添加到微服务中,但不起作用:Eureka .instance.preferIpAddress=true

woobm2wo

woobm2wo1#

我只是改变了apploication.properties到application.yml的插件,可以处理的方式,现在它的工作正常

相关问题