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

Zuul负载均衡器没有可用于客户端的服务器

潘星阑
2023-03-14

我一直在尝试使用Zuul和Eureka连接微服务,除了通过基于ServiceID的Zuul重新路由之外,大部分都成功了。我拥有的是Spring Boot Zuul和Eureka应用程序,以及一个在Eureka注册的基于节点的微服务。Zuul和微服务都在Eureka注册,并显示在Eureka控制面板上,但是,当我试图通过Zuul路由到微服务时,我会遇到以下异常

com.netflix.zuul.exception.ZuulException: Forwarding error
Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: steam-auth-service

通过IP路由似乎有效,但我不需要它。

server.port=8079
eureka.client.service-url.defaultZone=http://localhost:8088/eureka
zuul.routes.steam-auth-service.serviceId=steam-auth-service
zuul.routes.steam-auth-service.path=/steam/**

Node.js尤里卡客户端注册:

// Discovery service info
const eurekaServer = {
  host: process.env.EUREKA_HOST,
  port: process.env.EUREKA_PORT,
  servicePath: '/eureka/apps/',
};

// Client to connect to Eureka discovery service
const eurekaClient = new Eureka({
  instance: {
    app: 'steam-auth-service',
    hostName: 'localhost',
    ipAddr: '127.0.0.1',
    port: {
      $: process.env.PORT,
      '@enabled': true,
    },
    vipAddress: 'steamauth.pubgtrade.com',
    dataCenterInfo: {
      '@class': 'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo',
      name: 'MyOwn',
    },
  },
  eureka: eurekaServer,
});

正如我所说,Zuul应用程序和微服务都在Eureka注册,并显示在控制面板中。

/Eureka/Apps回应:

<applications>
<versions__delta>1</versions__delta>
<apps__hashcode>UP_2_</apps__hashcode>
<application>
<name>STEAM-AUTH-SERVICE</name>
<instance>
<hostName>localhost</hostName>
<app>STEAM-AUTH-SERVICE</app>
<ipAddr>127.0.0.1</ipAddr>
<status>UP</status>
<overriddenstatus>UNKNOWN</overriddenstatus>
<port enabled="true">3001</port>
<securePort enabled="false">7002</securePort>
<countryId>1</countryId>
<dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo">
<name>MyOwn</name>
</dataCenterInfo>
<leaseInfo>
<renewalIntervalInSecs>30</renewalIntervalInSecs>
<durationInSecs>90</durationInSecs>
<registrationTimestamp>1514334766260</registrationTimestamp>
<lastRenewalTimestamp>1514334886300</lastRenewalTimestamp>
<evictionTimestamp>0</evictionTimestamp>
<serviceUpTimestamp>1514333831189</serviceUpTimestamp>
</leaseInfo>
<metadata class="java.util.Collections$EmptyMap"/>
<vipAddress>steamauth.pubgtrade.com</vipAddress>
<isCoordinatingDiscoveryServer>false</isCoordinatingDiscoveryServer>
<lastUpdatedTimestamp>1514334766260</lastUpdatedTimestamp>
<lastDirtyTimestamp>1514334766260</lastDirtyTimestamp>
<actionType>ADDED</actionType>
</instance>
</application>
<application>
<name>PUBG-API-GATEWAY</name>
<instance>
<instanceId>192.168.0.13:pubg-api-gateway:8079</instanceId>
<hostName>192.168.0.13</hostName>
<app>PUBG-API-GATEWAY</app>
<ipAddr>192.168.0.13</ipAddr>
<status>UP</status>
<overriddenstatus>UNKNOWN</overriddenstatus>
<port enabled="true">8079</port>
<securePort enabled="false">443</securePort>
<countryId>1</countryId>
<dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo">
<name>MyOwn</name>
</dataCenterInfo>
<leaseInfo>
<renewalIntervalInSecs>30</renewalIntervalInSecs>
<durationInSecs>90</durationInSecs>
<registrationTimestamp>1514334380413</registrationTimestamp>
<lastRenewalTimestamp>1514334890454</lastRenewalTimestamp>
<evictionTimestamp>0</evictionTimestamp>
<serviceUpTimestamp>1514334380413</serviceUpTimestamp>
</leaseInfo>
<metadata>
<management.port>8079</management.port>
<jmx.port>36983</jmx.port>
</metadata>
<homePageUrl>http://192.168.0.13:8079/</homePageUrl>
<statusPageUrl>http://192.168.0.13:8079/info</statusPageUrl>
<healthCheckUrl>http://192.168.0.13:8079/health</healthCheckUrl>
<vipAddress>pubg-api-gateway</vipAddress>
<secureVipAddress>pubg-api-gateway</secureVipAddress>
<isCoordinatingDiscoveryServer>false</isCoordinatingDiscoveryServer>
<lastUpdatedTimestamp>1514334380413</lastUpdatedTimestamp>
<lastDirtyTimestamp>1514334380381</lastDirtyTimestamp>
<actionType>ADDED</actionType>
</instance>
</application>
</applications>

任何帮助都很感激。谢了!

共有1个答案

邢英奕
2023-03-14

为什么不使用application.yml而不是properties呢?这是我在我的应用程序中设置它的方法。你能直接去服务吗??即不是通过Zuul。

zuul:
  routes:
     path: /steam/**
     service-id: steam-auth-service
     strip-prefix: false
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8088/eureka
 类似资料:
  • 我正在尝试以下教程:使用Eureka的Spring Boot微服务和使用Feign Client的Zuul代理。 我创建了3个微服务:一个使用Zuul的Api网关,一个使用Feign的资源服务,一个使用Eureka的发现服务,以及另一个包含前端应用程序的业务逻辑的微服务PRIMO用户管理服务。 当我试图从API网关调用URL时,我面临一个错误“转发错误”:http://localhost:8662

  • 当我试图通过Zuul网关访问服务时,Zuul无法将请求转发到相应的服务。以下是我面临的错误: nettflix.zuul.exception.ZuulExc0019:转发错误 导致:com.netflix.client.ClientExc0019:负载均衡器没有可用的服务器为客户端:会议 让我分享一下这个应用程序。yml服务,尤里卡和祖尔网关。 EurekaClient: Zulgateway:

  • 我试图获得一个简单的微服务注册到尤里卡服务器,然后有Zuul代理到微服务。我得到了微服务注册到尤里卡服务器。然而,每当我打开Zuul服务时,我看到它没有注册到Eureka服务器。每当我试图路由到微服务时,我会得到以下异常: 负载均衡器没有可用于客户端的服务器:微服务 微服务组件 microserviceapplication.java bootstrap.yml eureKaserverAppli

  • 用于设置容器内pod的访问方式。 服务 服务定义了访问后端Pod的访问方式。 路由 路由是允许访问集群内路由的规则集合。

  • Ribbon是一个客户端负载均衡器,它可以很好地控制HTTP和TCP客户端的行为。Feign已经使用Ribbon,所以如果您使用@FeignClient,则本节也适用。 Ribbon中的中心概念是指定客户端的概念。每个负载平衡器是组合的组合的一部分,它们一起工作以根据需要联系远程服务器,并且集合具有您将其作为应用程序开发人员(例如使用@FeignClient注释)的名称。Spring Cloud使

  • 我想知道是否有可能将Google云负载平衡器链接到一个外部服务器——一个托管在Google云之外的服务器? 因此,负载均衡器可能会链接到Google Cloud实例,但也可能链接到外部服务器。