当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud Gateway无法进行负载平衡,并给出错误500

金令秋
2023-03-14

我在这里遵循教程:https://www.javainuse.com/spring/cloud-gateway-eureka。

另外,我从本地机器运行所有的东西,这里的host.docker.internal是什么?

网关应用程序的application.properties文件如下所示:

server:
  port: 9090

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8083/eureka  

spring:
  application:
    name: gateway-service
  cloud:
    gateway:
      routes:
      - id: employeeModule
        uri: lb://FIRST-SERVICE
        predicates:
        - Path=/employee/**
      - id: consumerModule
        uri: lb://SECOND-SERVICE
        predicates:
        - Path=/consumer/**
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection timed out: no further information: host.docker.internal/10.7.250.57:8080
Caused by: java.net.ConnectException: Connection timed out: no further information
        at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]
        at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:579) ~[na:na]
        at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:820) ~[na:na]
        at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:327) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:336) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:685) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at java.base/java.lang.Thread.run(Thread.java:830) ~[na:na]

编辑:我在公司代理后面,无法执行以下操作:curl host.docker.internal:8080/employee/message

共有1个答案

尹小云
2023-03-14

该消息告诉您没有从网关连接到微服务RESTendpoint。您的URI似乎没有正确指定;建议使用URL,比如URI:http://localhost:8000/employee或类似的东西。(适用于我的应用程序...)

至于负载平衡,本帖中没有任何地方的负载平衡。Spring Cloud网关匹配请求属性上的路由。这就是您在yml文件中试图实现的功能。Spring云网关不等于负载均衡;它是进入微服务体系结构的一种途径。

负载平衡可以使用Netflix Ribbon(显然已经被弃用)或新的Spring Cloud负载平衡器来完成。您没有使用任何一种,因此没有负载平衡。参见例如:

 类似资料:
  • 我试图在AWS EKS集群中托管以下(部署前端)Kubernetes部署,在部署部署并创建服务和入口之后,所有的东西都成功地部署和创建了,但是当我试图从外部访问负载平衡器DNS时,这个负载平衡器是不可访问的。有人能指出原因吗? **下面的代码(deployment-2048)正在工作,负载均衡器是可访问的,但在(部署前端)**的情况下是不可访问的。

  • Eureka是否提供开箱即用的负载平衡,是否需要另一个依赖项? 为什么是丝带而不是尤里卡? 为什么通过API网关使用负载平衡? Spring-cloud-starter-loadbalancer,为什么需要这个? 客户端平衡还是服务器端负载平衡,为什么用一个胜过另一个?

  • 我有两条溪流。一个是事件流,另一个是数据库更新流。我想用从DB更新流构建的信息丰富事件流。 事件流非常庞大,使用5个字段进行分区。这给了我很好的分配。DB流不那么喋喋不休,并且使用两个字段进行分区。我目前正在使用两个公共字段连接这两个流,并使用flapMap来丰富第一个流。flatMap运算符使用ValueState维护状态,状态由两个公共字段自动键入。 除了实现自定义逻辑来手动提取键并更新维护状

  • 问题内容: 在docker swarm模式(docker engine 1.12+)下,对于该服务,负载均衡算法是什么? 它可插入吗? 假设它是轮询的,那么高级负载均衡器是否仍然需要它?由于高级负载均衡器正在使用任何路由算法,因此负载将平均分配到每个节点。 问题答案: 该算法目前是循环的,我还没有迹象表明它是可插入的。较高级别的负载均衡器将允许拆卸群集节点进行维护,但是在群集模式下,循环算法将撤消

  • 我是微服务的新手。(学习阶段)。我有一个问题。我们在云中部署微服务。(例如 AWS)。云已经提供了负载平衡和日志。我们还在Spring Boot中实现了负载平衡(功能区)和日志(Rabbit MQ和Zipkin)。这两种实现有什么区别?我们两者都需要吗?有些人可以回答这些问题吗? 提前感谢。

  • 我使用的是WSO2 470 ESB。我需要使用一个提供自定义负载平衡策略的动态负载平衡endpoint。我知道WSO2是基于apache Synapse的,在此基础上我可以找到以下内容: http://synapse.apache.org/userguide/config.html#dlbendpointconfig 真的吗?是否可以通过我自己的类自定义平衡策略?